오류, 버그, 질문 - 페이지 1554

 
-Aleks- :

다른 스레드에서 답변을 받지 못했기 때문에 여기에서 질문을 반복하겠습니다. 아마도 여기에서 도움이 될 것입니다.

"

제 실수가 무엇인지 알려주세요.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES)," PriceOpenSell[%d] = %G",i,PriceOpenSell[i]);

OpenSellTime 배열의 날짜는 인쇄되지 않으며 표현식의 두 번째 부분인 PriceOpenSell도 인쇄되지 않습니다.

그리고 %G 및 %d같은 printf 명령 에 대해서는 아무 것도 찾을 수 없습니다.

"

그러나 C에 대한 모든 교과서도 적합합니다.
 
Alexey Kozitsyn :
그러나 C에 대한 모든 교과서도 적합합니다.

답변에 감사드립니다. 하지만 링크가 흐릿하게 표시됩니다... 바로 이해할 수 없습니다. 포럼에 글을 쓰기 시작하기 전에 도움말에서 이 텍스트를 봤습니다.

내가 올바르게 이해했다면 %d는 0(있는 경우)을 무시하고 %G는 0을 자르지 않고 값을 표시하고 있습니까? 제가 바보가 아닌 것 같지만 도움말을 이해하지 못하고, 이해하지 않고서는 왜 내 라인이 제대로 작동하지 않는지 이해할 수 없습니다 ...

 
-Aleks- :

답변에 감사드립니다. 하지만 링크가 흐릿하게 표시됩니다... 바로 이해할 수 없습니다. 포럼에 글을 쓰기 시작하기 전에 도움말에서 이 텍스트를 봤습니다.

내가 올바르게 이해했다면 %d는 0(있는 경우)을 무시하고 %G는 0을 자르지 않고 값을 표시하고 있습니까? 제가 바보가 아닌 것 같지만 도움말을 이해하지 못하고, 이해하지 않고서는 왜 내 라인이 제대로 작동하지 않는지 이해할 수 없습니다 ...

제 작업에서는 이 기능을 사용하지 않지만 간단한 실험을 직접 설정해 보시는 것도 어렵지 않으실 거라 생각합니다.
 
-Aleks- :

답변에 감사드립니다. 하지만 링크가 흐릿하게 표시됩니다... 바로 이해할 수 없습니다. 포럼에 글을 쓰기 시작하기 전에 도움말에서 이 텍스트를 봤습니다.

내가 올바르게 이해했다면 %d는 0(있는 경우)을 무시하고 %G는 0을 자르지 않고 값을 표시하고 있습니까? 제가 바보가 아닌 것 같지만 도움말을 이해하지 못하고, 이해하지 않고서는 왜 내 라인이 제대로 작동하지 않는지 이해할 수 없습니다 ...

여기에서 읽으십시오.
 
Alexey Kozitsyn :
제 작업에서는 이 기능을 사용하지 않지만 간단한 실험을 직접 설정해 보시는 것도 어렵지 않으실 거라 생각합니다.

하지만 사용중입니다 - 엿보고 사용하고 있는데 사양에 맞지 않아 구문을 정확히 알 수 없습니다

%[플래그][너비][.정밀도][{h | 내가 | 일 | I32 | I64}]유형

도움말에 모든 매개변수를 사용할 수 있는 것은 아닙니다. 그리고 가장 중요한 것은 구문 오류가 어디에 있는지 명확하지 않다는 것입니다. 아마도 그들이 나에게 지적했다면 문제의 본질을 더 잘 이해할 수 있을 것입니다.

 
Artyom Trishkin :
여기에서 읽으십시오.

고맙습니다. 필요한 정보를 찾기 위해 간단히 읽었습니다. 첫 번째 부분이 템플릿이고 잘못 컴파일한 것으로 나타났습니다... 맞나요?

마찬가지로, 변수가 있을 위치를 지정해야 합니다. 제 경우에는 배열 인덱스, 이중 유형의 시간 및 수, 그리고 변수 자체를 지정해야 합니다. 기사의 논리에서 보면 다음과 같아야 합니다.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

아니면 또 틀린건가요?

 
-Aleks- :

고맙습니다. 필요한 정보를 찾기 위해 간단히 읽었습니다. 첫 번째 부분이 템플릿이고 잘못 컴파일한 것으로 나타났습니다... 맞나요?

마찬가지로, 변수가 있을 위치를 지정해야 합니다. 제 경우에는 배열 인덱스, 이중 유형의 시간 및 수, 그리고 변수 자체를 지정해야 합니다. 기사의 논리에서 보면 다음과 같아야 합니다.

for(int i=0;i<N_Sell;i++) printf("OpenSellTime[%d] = %G, PriceOpenSell[%d] = %G",i,TimeToString(OpenSellTime[i],TIME_DATE|TIME_MINUTES),i,PriceOpenSell[i]);

아니면 또 틀린건가요?

글쎄, 결국 템플릿에 대해 매우 명확하게 작성되었습니다. 변수를 삽입하는 위치는 템플릿의 % 기호로 표시됩니다. 템플릿은 모두 따옴표로 묶여 있습니다. 또한 템플릿 자체 다음에 템플릿에 지정된 변수가 쉼표로 나열됩니다. 템플릿에 쓰여진 순서대로 왼쪽에서 오른쪽으로.

그리고 다양한 유형의 변수와 해당 형식에 대한 모든 사양이 있습니다. "패턴으로 문자열 서식 지정 "이라는 제목으로 시작하는 읽기를 훑어보지 마십시오.

 
Artyom Trishkin :

글쎄, 결국 템플릿에 대해 매우 명확하게 작성되었습니다. 변수를 삽입하는 위치는 템플릿의 % 기호로 표시됩니다. 템플릿은 모두 따옴표로 묶여 있습니다. 또한 템플릿 자체 다음에 템플릿에 지정된 변수가 쉼표로 나열됩니다. 템플릿에 쓰여진 순서대로 왼쪽에서 오른쪽으로.

그리고 다양한 유형의 변수와 해당 형식에 대한 모든 사양이 있습니다. "패턴으로 문자열 서식 지정 "이라는 제목으로 시작하는 읽기를 훑어보지 마십시오.

그래서 저는 이것을 이렇게 썼습니다. 템플릿을 인용한 다음 변수를 순서대로 인용합니다. 무엇이 잘못되었습니까?
 
-Aleks- :
그래서 저는 이것을 이렇게 썼습니다. 템플릿을 인용한 다음 변수를 순서대로 인용합니다. 무엇이 잘못되었습니까?

"OpenSellTime[% index here] = % time here, PriceOpenSell[% index] = % price" - 그런 패턴?

그렇다면 다음과 같아야 합니다.

 "OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f"

다음으로 값 자체를 쉼표로 구분하여 나열해야 합니다.

 ,i,OpenSellTime[i],i,PriceOpenSell[i]

총:

 printf ( "OpenSellTime[%i] = %I64u, PriceOpenSell[%i] = %.5f" ,i,OpenSellTime[i],i,PriceOpenSell[i]);

... 글쎄 ... 내가 놓친 것이 없다면 ..

 

MQL4, DoubleToStr()DoubleToString() . DoubleToStr()에서 두 번째 인수에 대해 "기본값 8"을 추가합니다.

코드:

 #property strict
void OnStart ()
  {
   Print ( "1) DoubleToStr(0.123456789) = " , DoubleToStr ( 0.123456789 ));
   Print ( "2) DoubleToString(0.123456789) = " , DoubleToString ( 0.123456789 ));
  }

로그에서 결과는 = 0.1234567 9 , 즉 이 함수는 도움말에 기록 되지 않은 값을 반올림합니다. 나는 이것에 대해 추가하거나 적어도 다음과 같은 예를 넣을 가치가 있다고 생각합니다.

 string value1= DoubleToStr ( 1.28473418 , 5 );
// содержимое строки value1 - "1.28473"

string value2= DoubleToStr ( 1.28473418 , 3 );
// содержимое строки value2 - "1.285"

, 여기서 반올림이 표시됩니다.