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

 
Alexey Navoykov :

나는 당신이 원하는 것을 이해하지 못합니다. 나는 그것이 "변수의 초기화"의 문제라고 말했다. 그리고 이 컨텍스트에서 정적 및 전역 변수는 동일하게 동작합니다. 나는 심지어 당신에게 문서에 대한 링크를 주었다: 변수 초기화

정적 및 전역 변수는 모든 곳에서 함께 병합됩니다.

그리고 고려중인 문제와 관련이 없기 때문에 초기화 순서를 비난하지 않습니다. 문제는 컴파일러가 오류를 발생시켜야 하는 곳에 오류를 던지지 않는다는 것입니다. 정적 변수가 아직 초기화되지 않은 경우 액세스할 수 없습니다.

글쎄, 그것이 당신을 너무 혼란스럽게한다면 전역 변수의 이름을 변경하십시오. 어떤 식으로든 결과에 영향을 미치지 않습니다.

안녕하세요, 우리가 도착했습니다 ...이 링크를 직접 읽으셨습니까 ???

mql 외에도 VBA 만 알고 있으며 변수의 필수 초기화 지시문을 만났습니다. 이는 전적으로 프로그래머의 재량에 따라 적용된다는 점에 유의하십시오. MQ가 절대적으로 모든 변수를 초기화하도록 하시겠습니까??? 그리고 이러한 사용자의 클레임마다 초기화 순서를 변경해야 합니까? 당신은 당신이하고있는 일을 이해하고 규칙에서 벗어날 수있는 기회를 얻었고이 가능성을 배제하도록 요청하고 있습니까 ???

당신은 mql 언어에 대해 불평하고 저주할 무언가를 찾고 있는 것 같습니다. 클래스의 변수에서 static을 제거하면 만족할 것입니다.

 

GetTickCount() 로 얻은 시스템 변수가 오버플로되는 순간에는 어떻게 됩니까?

터미널에서 표준 반응이 있습니까?

이 순간을 프로그래밍 방식으로 추적하고 반응을 구현할 필요가 있습니까?

 
Alexey Viktorov :

안녕하세요, 도착했습니다 ...이 링크를 직접 읽으셨습니까 ???

mql 외에도 VBA 만 알고 있으며 변수의 필수 초기화 지시문을 만났습니다. 이것은 프로그래머의 단독 재량입니다. MQ가 절대적으로 모든 변수를 초기화하도록 하시겠습니까???

이것이 이유입니다. 당신은 잘 모를 뿐만 아니라(당신 자신도 이미 이것에 대해 여러 번 이야기했습니다) 이 언어와 공통점이 거의 없는 VBA도 모릅니다. 그리고 저는 C++를 꽤 잘 압니다. 이것은 매우 명확하고 엄격한 언어이며 여기에서 상상했던 자유가 허용되지 않습니다. 그리고 MQL은 C++의 이미지와 유사성으로 만들어졌습니다. 그러니 그만하자. 먼저 C++에 익숙해지면 무언가에 대해 논쟁하는 것이 이미 이해가 될 것입니다.

ps 그건 그렇고, 나는 당신이 처음에 대화를 잘못된 방향으로 이끌었다는 것을 이제야 깨달았습니다, tk. 나는 그것이 어떻게 시작되었는지 이미 잊어버렸고, 이제 내 원래 코드를 다시 보았고 여기서 귀하의 초기 히트가 주제에서 완전히 벗어났다는 것을 깨달았습니다. 내가 어떻게 눈치 채지 못했는지! 내 코드에서 정적 변수는 설명서에 설명된 대로 정확히 상수로 초기화됩니다. 그래서 양 고추 냉이가 초기화 되지 않았다는 문제. 그리고 당신은 그것이 상수로 초기화되어야 하기 때문에 저를 로드하기 시작했습니다. 그리고 우리는 간다...

 

변수 가 있는 배열을 초기화 할 수 없는 이유는 무엇입니까?

 void ( double a, double b, double c )

{

double inp[ 3 ]={a,b,c};   // компилятор ругается 'а' - constant expression required      

}

 
Alexey Kochetkov :

변수 가 있는 배열을 초기화 할 수 없는 이유는 무엇입니까?

MQL에서는 상수만 초기화할 수 있기 때문입니다.
 
Alexey Navoykov :

이것이 이유입니다. 당신은 잘 모를 뿐만 아니라(당신 자신도 이미 이것에 대해 여러 번 이야기했습니다) 이 언어와 공통점이 거의 없는 VBA도 모릅니다. 그리고 저는 C++를 꽤 잘 압니다. 이것은 매우 명확하고 엄격한 언어이며 여기에서 상상했던 자유가 허용되지 않습니다. 그리고 MQL은 C++의 이미지와 유사성으로 생성되었습니다. 그러니 그만하자. 먼저 C++에 익숙해지면 무언가에 대해 논쟁하는 것이 이미 이해가 될 것입니다.

ps 그건 그렇고, 나는 당신이 처음에 대화를 잘못된 방향으로 이끌었다는 것을 이제야 깨달았습니다, tk. 나는 그것이 어떻게 시작되었는지 이미 잊어버렸고, 이제 내 원래 코드를 다시 보았고 여기서 귀하의 초기 히트가 주제에서 완전히 벗어났다는 것을 깨달았습니다. 내가 어떻게 눈치 채지 못했는지! 내 코드에서 정적 변수는 설명서에 설명된 대로 정확히 상수로 초기화됩니다. 그래서 양 고추 냉이가 초기화 되지 않았다는 문제. 그리고 당신은 그것이 상수로 초기화되어야 하기 때문에 저를 로드하기 시작했습니다. 그리고 우리는 간다...

마지막으로 초기화 순서를 숙지 하시기 바랍니다. 지식보다 논리적으로 생각하는 능력이 더 중요한 것 같아요. 최소한 모든 프로그래밍 언어는 마음으로 알 수 있지만 초기화 순서를 이해해야 합니다 .

정적 변수는 전역 변수보다 먼저 초기화할 수 없습니다. 그리고 그게 다야.

 
ChartNavigate 버그
 const bool Init = ChartSetInteger ( 0 , CHART_AUTOSCROLL , false ) && EventSetTimer ( 1 );  

void OnTimer ()
{  
   Print ( "----------" )  ;
   Print ( ChartGetInteger ( 0 , CHART_FIRST_VISIBLE_BAR ));  

   ChartNavigate ( 0 , CHART_BEGIN , 100 );
  
   Print ( ChartGetInteger ( 0 , CHART_FIRST_VISIBLE_BAR ));
}

ICMarkets-Demo EURCHF M1에 대한 결과(최대 막대 = 5000 ):

 2017.10 . 18 21 : 16 : 00.800 ----------
2017.10 . 18 21 : 16 : 00.800 4899
2017.10 . 18 21 : 16 : 00.801 199930
2017.10 . 18 21 : 16 : 01.821 ----------
2017.10 . 18 21 : 16 : 01.821 199930
2017.10 . 18 21 : 16 : 01.821 4899
2017.10 . 18 21 : 16 : 02.836 ----------
2017.10 . 18 21 : 16 : 02.836 4899
2017.10 . 18 21 : 16 : 02.836 199930
2017.10 . 18 21 : 16 : 03.845 ----------
2017.10 . 18 21 : 16 : 03.845 199930
2017.10 . 18 21 : 16 : 03.855 4899
2017.10 . 18 21 : 16 : 04.864 ----------
2017.10 . 18 21 : 16 : 04.864 4899
2017.10 . 18 21 : 16 : 04.864 199930
2017.10 . 18 21 : 16 : 05.876 ----------
2017.10 . 18 21 : 16 : 05.876 4999
2017.10 . 18 21 : 16 : 05.886 199930

나는 아무것도 이해하지 못한다. 숫자가 같아야 합니다. 결과적으로 일정이 끊임없이 이동합니다.

재생산하는 사람이 있습니까?

 
Alexey Viktorov :

마지막으로 초기화 순서를 숙지 하시기 바랍니다. 지식보다 논리적으로 생각하는 능력이 더 중요한 것 같아요. 최소한 모든 프로그래밍 언어는 마음으로 알 수 있지만 초기화 순서를 이해해야 합니다 .

정적 변수는 전역 변수보다 먼저 초기화할 수 없습니다. 그리고 그게 다야.

미안하지만 나는 더 이상 당신의 무의미한 도발에 관심을 기울이지 않을 것입니다. 아마추어와 무의미한 언쟁으로 시간낭비해서 벌써 죄송합니다. 처음에는 내 상황과 전혀 관련이 없는 상수에 대해, 그리고 지금과 같은 공격적인 야심을 여기에서 발표했습니다. 이제 주제도 모르고 프로그래밍 언어가 작동하는 방식도 이해하지 못한 채 근거 없는 말을 손가락에서 빨고 있습니다. "논리적 생각", 추측 및 환상을 혼자 유지할 수 있습니다. 그들은 나에게 거의 관심이 없습니다.

 
Kirill Belousov :

GetTickCount()로 얻은 시스템 변수가 오버플로되는 순간에는 어떻게 됩니까?

터미널에서 표준 반응이 있습니까?

이 순간을 프로그래밍 방식으로 추적하고 반응을 구현할 필요가 있습니까?

응답 없음

GetTickCount의 반환 값을 uint 유형의 변수로 가져오면 차이를 안전하게 얻을 수 있습니다.

 uint prev_count= GetTickCount ();
...
...
uint diff= GetTickCount ()-prev_count;

오버플로가 있어도 정확한 차이를 얻을 수 있습니다. 다음은 부호 없는 정수 연산의 기능입니다. 그러나 이는 이전 값을 동일한 방식으로 더 일찍 정확히 획득하고(GetTickCount) 이전 값을 49일 이전에 받은 경우에만 적합합니다.

더 많은 것을 확인하면 간단한 빼기보다 더 많은 연산이 필요합니다.

 
fxsaber :
ChartNavigate 버그

ICMarkets-Demo EURCHF M1에 대한 결과(최대 막대 = 5000 ):

나는 아무것도 이해하지 못한다. 숫자가 같아야 합니다. 결과적으로 일정이 끊임없이 이동합니다.

재생산하는 사람이 있습니까?

이게 왜 버그야?

차트 탐색은 즉시 수행되지 않습니다. 이것은 비동기 명령입니다. 그리고 구현 결과는 보장되지 않습니다.

PageUp 버튼을 누르는 것과 같으며 그래프가 정지되어 있습니다. 그리고 갑자기 움찔했다.