Fehler, Irrtümer, Fragen - Seite 2537

 

Wenn die Funktion ::Print() eine lange Zeichenkette (mehr als 260 Zeichen) an das Toolbox/Experts-Fenster ausgibt, wird sie durch Kopieren der Zeichenkette mit der Funktion PCM/Copy auf 256 Zeichen gekürzt.


Wenn Sie sie hingegen mit PCM/Review/Copy kopieren, wird sie nicht abgeschnitten.

Was ist der Unterschied?

 
A100:

Das kann ich sehen.

#define  MACRO( ТОЛЬКО_НЕ_void )    Print( "OK" )
void OnStart() { MACRO(); }

Hmm, es ist kompliziert...... Begrüßen Sie die EEJAMS!

#define    test(int) for(int i=0;i<10;i++) Print("OK");
//+------------------------------------------------------------------+
void OnStart()
  {
  test();
  }

'i' - nicht deklarierter Bezeichner tst.mq5 16 3

Die ungültige Version funktioniert ohne Probleme, aber denken Sie daran, die Folie zu entfernen.
 
A100:

Das kann ich sehen.

#define  MACRO Print( "OK" )
void OnStart() { MACRO; }

Fühlen Sie sich durch die Klammern nach dem Makro besser?

Und ja, die Verwendung von reservierten Wörtern in Makro-Parameter-Deklaration ist Liebe zu den Voraussetzungen für große Bugs. Nun, jeder entscheidet selbst, wie er seine Beine abschießt, gut, dass die Entwickler uns nicht wirklich vor dieser faszinierenden Aktion bewahrt haben, und man sollte ihnen gratulieren))))

Finden Sie schließlich heraus, was der Parameter Makro ist und wie er verwendet wird.

 
Igor Makanu:

hmm, es ist kompliziert für dich...... Begrüßt die Igel!

'i' - nicht deklarierter Bezeichner tst.mq5 16 3

Die ungültige Variante funktioniert ohne Probleme, aber Sie sollten es besser wissen.
void OnStart()
  {
  for(i=0;i<10;i++) Print("OK");;
  }

Dies ist die Ausgabe des Präprozessors für Sie.

PS zwei ; - das ist nicht mein Tippfehler, es wird wirklich nach dem Präprozessor sein.
 
Igor Makanu:

Die leere Version funktioniert problemlos, aber Sie wissen am besten, dass Sie die Folie nicht vergessen dürfen.

In diesem speziellen Fall wird es funktionieren, aber nicht im allgemeinen Fall. Niemand braucht die schlechtesten Lösungen für private Fälle. Mit "nichtig" sind alle Schlüsselwörter gemeint, falls Sie es noch nicht verstanden haben

 
Vladimir Simakov:

Fühlen Sie sich mit Klammern nach einem Makro besser?

Aber ja, die Verwendung von reservierten Wörtern in der Deklaration von Makroparametern ist eine Liebe zu den Voraussetzungen für die Entstehung von großen Fehlern. Na ja, jeder entscheidet selbst, wie er sich die Beine abschießt, gut, dass die Entwickler von dieser spannenden Aktion nicht ganz verschont bleiben, denn was sie respektieren))))

Finden Sie schließlich heraus, was der Parameter Makro ist und wie er verwendet wird.

Ich habe ein stichhaltiges Argument für Sie: "In C++ funktioniert alles richtig". Haben Sie darauf etwas zu erwidern? Nein? - Dann behalten Sie Ihre Moralpredigten für sich. Und Sie sollten es besser herausfinden - wenn Sie nicht verstehen, warum es Klammern gibt.

P.S. Es warIgor Makanu, der esvorgeschlagen hat - schreiben Sie ihm darüber
 
A100:

In diesem speziellen Fall wird es funktionieren, aber nicht im allgemeinen Fall. Worst-Case-Lösungen für Sonderfälle - niemand braucht sie. keine Schlüsselwörter gemeint, falls Sie es immer noch nicht verstanden haben

Na gut, nur zu, es ist nicht angenehm, mit Ihnen zu reden. Ich fühle mich immer zu Persönlichkeiten hingezogen, in diesem Forum bin ich mehr an technischen Themen interessiert

Vladimir Simakov:

Das ist das, was der Präprozessor für Sie ausgibt.

PS zwei ; - es ist nicht mein Druckfehler, es wird wirklich nach dem Präprozessor sein.

Ich weiß, worum es geht;

die Frage war rein technischer Natur - wie man es richtig macht

ich habe irgendeinen Typ verwendet, ich habe mit irgendeinem Blödsinn gerechnet - es hat gut funktioniert, ich benutze es selten (ich schreibe die Order meist als BUY(double lot) oder einfaches BUY() Makro) - Ich habe hier immer void verwendet - es gab keine Probleme und sollte auch keine geben.

 
A100:

Ich habe ein stichhaltiges Argument für Sie: "In C++ funktioniert alles richtig". Haben Sie etwas, das dem widerspricht?

Und dann gibt es noch C#, JS und den ganzen Rest. Nur hier ist mql, und es hat dies.
 
Igor Makanu:

Also gut, beschäftigen Sie sich, es ist nicht angenehm, mit Ihnen zu reden. Sie haben immer die Tendenz, sich auf Persönlichkeiten zu stürzen, ich interessiere mich in diesem Forum mehr für technische Themen.

Nicht angenehm? Technische Themen von Interesse? Aus Ihrer Nachricht entnehme ich, dass Sie sich mehr für das Thema SM interessieren. Ich kommuniziere mit Ihnen - in Ihrer Sprache - mit Ihrem Wortschatz

 
Vladimir Simakov:
Und dann gibt es noch C#, JS und all die anderen. Nur hier ist mql, und das geht so.

Was haben C#, JS und all die anderen damit zu tun? Lesen Sie die MQL-Dokumentation - Seite 1:

"Die Syntax von MQL5 ist ähnlich wie die von C++".

https://www.mql5.com/ru/docs/basis.

Документация по MQL5: Основы языка
Документация по MQL5: Основы языка
  • www.mql5.com
Язык MetaQuotes Language 5 (MQL5) является объектно-ориентированным языком программирования высокого уровня и предназначен для написания автоматических торговых стратегий, пользовательских технических индикаторов для анализа разнообразных финансовых рынков. Он позволяет не только писать разнообразные экспертные системы, предназначенные для...