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

 
victorg :

매크로와 인라인 함수는 정말 다른 것입니다. 하지만 나는 그것에 대해 말하는 것이 아닙니다. 다음은 컴파일 타임에 인수 값을 알 수 없는 경우의 예입니다.

첫 번째 경우에는 코드가 현재 함수에 삽입되어야 하고(아마도), 두 번째 경우에는 스택을 통해 매개변수를 전달 하여 함수를 호출해야 합니다(아마도). 그러나 최적화를 위해 컴파일러는 실제로 두 번째 옵션을 대체하여 구현할 수 있습니다. 그렇 습니까? 모르겠어요. 그래서 내가 물었다.

고문을 받아야 하는 것은 Metaquote입니다. 하지만 제 의견은 귀하와 동일합니다(최적화로 인해 결과가 다를 수 있음).
 

기준점 을 클릭하는 경우에만 타원 개체가 마우스로 선택됩니다.

이것은 버그입니까, 아니면 기능입니까? 매우 불편한 구현.

Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
Документация по MQL5: Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов
  • www.mql5.com
Стандартные константы, перечисления и структуры / Константы объектов / Способы привязки объектов - Документация по MQL5
 
수직 스케일은 수동으로 설정한 경우 다시 시작할 때 기억되지 않습니다. 또한 불쾌한 작은 것들로부터.
 
MetaDriver :

Это что, юмор такой чёрный?

1.  Извини, - бред.  Я понимаю, тут паранойя в моде, и является ломовым аргументом за "почему так не надо делать".  Никакой опасности не вижу в упор. Смотрел внимательно, если чё.  Любое имя, в конечном счёте есть ссылка.  Индексация есть обычное расширение понятия имени. Не более.  Давай запретим присваивание вообще.  В целях безопасности.  Ссылки же крайне опасны так?

2.  Духу объектно-ориентированного программирования, при такой логике, яростно противоречат С++, С#, Делфи, пара дюжин менее популярных языков, в которых индексаторы совершенно нормально работают и справа и слева.  Причём здравому смыслу и моему духу это почему-то не противоречит.

Индексаторы делаются для связи с внешней средой.  Их функция именно интерфейсная.  Я могу инкапсулировать и прятать что угодно, но индексы мне нужны для оперирования объектами как массивами. Фактически все массивы как-то устроены. Например обычные динамические массивы mql. Может запретим их слева от оператора присваивания ставить?  Заменим функцией какой-нибудь типа SetArrayValue(array, i, j, value);  Заодно и в читабельности выиграем. Да и отладка станет куда проще.  Мля. Уф..

3.  А как насчёт того, чтоб сделать нормальный индексатор?  Горничная это конечно классно, но королева всё-таки лучше.

4.  Вот в этом месте у меня крыша конкретно начала ехать.  Это что, нечитабельно??

Вот это читабельнее, да?

  t.setDataElement(i, i*i);

Круто.  Пожалуй пойду лечиться.

5.  Ваще круто.

6. Я плакаль.


e(배열, i, j, 값); 동시에 우리는 가독성에서 승리할 것입니다. 예, 디버깅이 훨씬 쉬울 것입니다. ㅋㅋㅋ 휴..

세터의 장점은 단순한 방정식 이상을 수행할 수 있다는 것입니다.

예를 들어, 로그에 정보를 기록하고, 데이터를 변환하고(문자열 또는 더 복잡한 데이터에 대해 이야기하는 경우), 중요한 이벤트(예: 데이터 업데이트)가 발생한 경우 다른 개체에 메시지를 보낼 수 있습니다.

객체가 날짜가 변경되었음을 어떻게 알 수 있습니까? 분명히 당신은 거기에 따옴표를 저장할 것입니다 ..
네, 이것은 잘못된 문제입니다. 왜냐하면 여러분의 객체는 구조체 구조에 가깝고 실제로는 아무 것도 제어하지 않기 때문입니다.
모든 것은 모든 작업을 수행하는 다른 클래스 쓰레기통에서 수행되며, 심지어 (더 나쁜 것은) 모든 것이 onStart(), onTick(), ...에서 발생합니다. :)

좋은 하루 되세요

 
MetaDriver :

3. 일반 인덱서를 만드는 것은 어떻습니까? 하녀는 확실히 멋지지만 여왕은 여전히 더 좋습니다.

개스킷을 무티. 사실, 일반 lvalue에 비해 실행 시간 면에서 훨씬 더 비쌉니다. 그러나 그것은 당신이 원하는 대로 보일 것입니다.

______

오, 씨발 두 개. 그런 다음 캐스트 연산자의 오버로드가 필요합니다. 피찰카.

 
speedy :

세터의 장점은 단순한 방정식 이상을 수행할 수 있다는 것입니다.

예를 들어, 로그에 정보를 기록하고, 데이터를 변환하고(문자열 또는 더 복잡한 데이터에 대해 이야기하는 경우), 중요한 이벤트(예: 데이터 업데이트)가 발생한 경우 다른 개체에 메시지를 보낼 수 있습니다.

날짜가 변경되었음을 개체가 어떻게 알 수 있습니까? 분명히 당신은 거기에 따옴표를 저장할 것입니다 ..
네, 이것은 잘못된 문제입니다. 왜냐하면 여러분의 객체는 구조체 구조에 가깝고 실제로는 아무 것도 제어하지 않기 때문입니다.
모든 것은 모든 작업을 수행하는 다른 클래스 쓰레기통에서 수행되며, 심지어 (더 나쁜 것은) 모든 것이 onStart(), onTick(), ...에서 발생합니다. :)

좋은 하루 되세요

트릭은 인덱서가 기능면에서 설정자 다르지 않다는 것입니다. 훨씬 더 편리한 구문입니다. 함수와 같은 방식으로 구현되며 그 내용은 무엇이든 될 수 있으며(가장 간단한 일반적인 경우는 배열의 경계를 확인하고 다른 오류를 해결하는 것입니다) 배열 요소 에 대한 참조를 반환하는 것으로 이어지지 않습니다. 조금도.

님도 좋은 하루 되세요.

(어제의 말투에 대해 죄송합니다. 나는 조금 성급했습니다 - 직장에서의 문제. 당신은 그것과 아무 관련이 없습니다. 글쎄, 아마도 당신은 범주를 너무 멀리 갔을 것입니다 :)

Документация по MQL5: Основы языка / Переменные
Документация по MQL5: Основы языка / Переменные
  • www.mql5.com
Основы языка / Переменные - Документация по MQL5
 
TheXpert :

무티 개스킷. 사실, 일반 lvalue에 비해 실행 시간 면에서 훨씬 더 비쌉니다. 그러나 그것은 당신이 원하는 대로 보일 것입니다.

______

오, 젠장 둘. 그런 다음 캐스트 연산자의 오버로드가 필요합니다. 피찰카.

사실, 나는 그들이 그것을 할 것이라고 생각합니다. 언어로 된 참조가 반환되면 명백한 결함이 있습니다.

참조 변수를 만들 필요는 없지만 함수에서 l-value를 반환하는 것은 신성합니다. :)

나는 이것이 근본적으로 해결할 수 없다고 생각하지 않습니다. 언어에 일반적인 mql 배열이 있으며 할당 연산자의 양쪽에서 기분이 좋습니다. 그러나 그들은 구현에 의한 C++ 클래스입니다!

다음은 동일한 시리즈의 또 다른 예입니다. 이 코드는 컴파일되지만 작동하지 않습니다.

 #define _MyContainer(name,type,size)  struct name { public: type array[size]; type At(int i) {return array[i];} }
#define  ASize 8
#define  BSize 4

//+------------------------------------------------------------------+
//| Script program start function                                    |
//+------------------------------------------------------------------+
void OnStart ()
  {
   _MyContainer(MyClass, int , ASize);
   MyClass MyVar;
   Print ( sizeof (MyVar)); 
   for ( int i= 0 ;i<ASize;i++)
     {
      MyVar.array[i]=i*i;
     }
   for ( int i= 0 ;i<ASize;i++)
     {
       Print (MyVar.At(i));
     }
   _MyContainer(My2DBag, MyClass, BSize);
   My2DBag MyVar2D;
   for ( int i= 0 ;i<BSize;i++)
     {
       for ( int j= 0 ;j<ASize;j++) MyVar2D.array[i].array[j]=(i+ 1 )*(j+ 1 );
     }
   for ( int i= 0 ;i<BSize;i++)
     {
       for ( int j= 0 ;j<ASize;j++) Print (MyVar2D. At(i).At(j));
// Run-time ERROR:  DefTest (USDJPY,M30)  invalid pointer access in 'DefTest.mq5' (38,46)

//      for(int j=0;j<ASize;j++) Print(MyVar2D.array[i].At(j));
     }
  }

나는 그것이 컴파일되어서는 안된다는 것을 말하는 것이 아닙니다. 일해야지..:)

 
MetaDriver :

...
나는 그것이 컴파일되어서는 안된다는 것을 말하는 것이 아닙니다. 일해야지..:)

예, 맞습니다. 컴파일러 오류입니다. 수정하겠습니다.
 

MQL5에는 기타 상수 그룹에 속하는 멋진 상수 IS_DEBUG_MODE 가 있습니다. 테스터에 대해 유사한 상수를 추가할 수 있습니까? IS_TESTER_MODE 같은...

Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
Документация по MQL5: Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы
  • www.mql5.com
Стандартные константы, перечисления и структуры / Именованные константы / Прочие константы - Документация по MQL5
 
denkir :

MQL5에는 기타 상수 그룹에 속하는 멋진 상수 IS_DEBUG_MODE 가 있습니다. 테스터에 대해 유사한 상수를 추가할 수 있습니까? IS_TESTER_MODE와 같은 것...

그러나 이러한 상수가 작동하지 않습니까?

ENUM_MQL5_INFO_INTEGER

식별자

설명

속성 유형

MQL5_PROGRAM_TYPE

mql5 프로그램 유형

ENUM_PROGRAM_TYPE

MQL5_DLLS_ALLOWED

주어진 실행 프로그램 에 대해 DLL을 사용할 수 있는 권한

부울

MQL5_TRADE_ALLOWED

이 실행 중인 프로그램 에 대한 거래 권한

부울

MQL5_디버깅

디버그 모드에서 실행 중인 프로그램의 서명

부울

MQL5_테스트

테스터에서 실행 중인 프로그램의 서명

부울

MQL5_최적화

최적화 과정에서 실행 중인 프로그램의 서명

부울

MQL5_VISUAL_MODE

시각적 테스트 모드에서 실행 중인 프로그램의 서명

부울