Fehler, Irrtümer, Fragen - Seite 127

 
xeon:
Der Compiler erkennt das Fehlen des zweiten Gleichheitszeichens nicht als Fehler.

Das muss nicht sein, Ihr Code enthält keinen Fehler.

int a = 0;
if(a=1){Print("TEST");}

und er ist identisch mit diesem Code.

int a = 0;
a=1;
if(a){Print("TEST");}
 
xeon:
Der Compiler erkennt das Fehlen eines zweiten Gleichheitszeichens nicht als Fehler.
for(int i=0;i<total_deal;i++)
        {
         //--- try to get deals ticket
         if(ticket=HistoryDealGetTicket(i)) // Предупреждение к этой строке
           {
            Deal.Ticket(ticket);

Aber es gibt eine Warnung, zumindest für meinen Code wie diesen:

DealInfo.mqh' DealInfo.mqh 1 1
Ausdruck ist nicht boolesch Shou History.mq5 60 19
0 Störung(en), 1 Warnung(en) 1 1
 
Urain:

Das muss nicht sein, Ihr Code enthält keinen Fehler.

und es ist identisch mit diesem Code.


Und vergeblich, zum Beispiel, das Studio erkennt diesen Code als Fehler.

Außerdem hat es den Anschein, dass dieser Code

int a = 0;
a=1;
if(a){Print("TEST");}

ist mit diesem identisch:

int a = 19;
if(a=14){Print("TEST");}

Sagen wir 0 = falsch, 1 = wahr, was bedeuten dann die anderen Ziffern? 2,3,4, ...... :-)

Imho führt dieser Ansatz zu nichts Gutem, fügt nur unnötige Möglichkeiten hinzu, den Fehler zu durchschauen.

 
xeon:

Imho bringt dieser Ansatz nichts, er bietet nur eine zusätzliche Möglichkeit, den Fehler zu sehen.

Der Grund für das Hinzufügen eines nicht-booleschen Wertes ist, dass der Benutzer sehen kann, was er tut.

 

Wenn ich den Satz im Terminal (auf der Karte) speichere und ihn dann im Tester oder im Terminal öffne, ist alles in Ordnung. Aber wenn ich es im Tester speichere und dann im Terminal öffne, werden alle Werte von Variablen, die nicht vom Typ String sind, in Abrakadabra angezeigt. Wenn ich auf OK klicke und dann das Parameterfenster erneut öffne, sieht es gut aus, alle Parameter werden korrekt durch neue ersetzt, mit Ausnahme der booleschen Parameter. ALLES, was troue war, wird falsa... Im Prüfgerät wird das vom Prüfgerät gespeicherte Set korrekt geöffnet.

 

Entschuldigen Sie die Verärgerung, der Fehler, über den ich vorhin geschrieben habe, ist immer noch nicht behoben worden. Bei der Ausführung des in der Beschreibung der Funktion CopySpread angegebenen Indikators wird der Spreadverlauf mit einem Loch gezeichnet. Das Loch deckt immer den Zeitraum zwischen dem Start des Terminals und dem Start des Indikators ab. Es scheint, dass die Spreads, die bei jedem neuen Tick vom Server kommen, nicht in der Spread-Historie aufgezeichnet werden. Ich danke Ihnen!

 

Ich erhalte Warnungen vom Compiler:

implizite Enum-Konvertierung
möglicher Datenverlust aufgrund von Typumwandlung

wenn Sie diese Zeichenfolge verwenden:

ENUM_POSITION_TYPE posType=PositionGetInteger(POSITION_TYPE);

Was ist hier los?

Ich habe es gefunden: Sie sollten lange

long posType=PositionGetInteger(POSITION_TYPE);

Dann eine weitere Frage. Wird diese Konstruktion korrekt funktionieren?

if(posType==POSITION_TYPE_BUY)

wenn posType als long definiert ist?

 
ENUM_POSITION_TYPE posType=(ENUM_POSITION_TYPE)PositionGetInteger(POSITION_TYPE);
 
gpwr:

Ich erhalte Warnungen vom Compiler:

implizite Enum-Konvertierung
möglicher Datenverlust aufgrund von Typumwandlung

wenn Sie diese Zeichenfolge verwenden:

Was ist hier los?

Ich habe es gefunden: Sie sollten lange

Dann eine weitere Frage. Wird diese Konstruktion korrekt funktionieren?

wenn posType als long definiert ist?

wird funktionieren, es ist eine Warnung zur Typumwandlung, die Sie ignorieren können
 
AlexinSergey:

Entschuldigen Sie die Verärgerung, der Fehler, über den ich vorhin geschrieben habe, ist immer noch nicht behoben worden. Bei der Ausführung des in der Beschreibung der Funktion CopySpread angegebenen Indikators wird der Spreadverlauf mit einem Loch gezeichnet. Das Loch deckt immer den Zeitraum zwischen dem Start des Terminals und dem Start des Indikators ab. Es scheint, dass die Spreads, die bei jedem neuen Tick vom Server kommen, nicht in der Spread-Historie aufgezeichnet werden. Ich danke Ihnen!

Danke, wir werden uns mit dem Beispiel befassen.