Die Funktion StrToTime verursacht den Fehler 4051 - Seite 3

 
Die Funktionen StrToTime und StringToTime sind identisch.
RaptorUK:
Warum sollte ich Kompatibilität mit mql5 wünschen? Ich bin mit mql4 Code für MT4.

Ich habe nicht gesagt, dass Sie müssen.
 
RaptorUK:
ResetLastError() vor dem Aufruf von StrToTime() und danach GetLastError() aufrufen. StrToTime() sollte keinen Fehler verursachen, tut es aber... es ist ein Fehler. Etwas Ähnliches wurde bereits bestätigt und behoben: https://www.mql5.com/en/forum/149475/page2


Steht irgendwo in der Dokumentation, dass StrToTime() einen Error-Handler verwendet?

Wenn nicht, dann gibt es

1) keinen Grund, dies zu überprüfen

2) Es gibt keinen Grund zu erwarten, dass der zurückgegebene Wert etwas mit dem Ergebnis der Funktion StrToTime() zu tun hat.

Was bedeutet außerdem err 4051? Ungültiger Losbetrag?????

 
graziani:


Steht in der Dokumentation irgendwo geschrieben, dass StrToTime() einen Error-Handler verwendet?

Wenn nicht, dann gibt es

1) keinen Grund, dies zu überprüfen

2) Kein Grund zu erwarten, dass der zurückgegebene Wert etwas mit dem Ergebnis der Funktion StrToTime() zu tun hat.

Außerdem, was bedeutet err 4051? Ungültiger Losbetrag?????

Dieser Fehler kann von vielen Funktionen erzeugt werden, auch von solchen, die keinen Wert zurückgeben.

ERR_INVALID_FUNCTION_PARAMVALUE4051Ungültiger Funktionsparameterwert.
 

Können Sie mir einen Verweis in der Dokumentation zeigen, in der es heißt, dass StrToTime() einen Error-Handler verwendet und dass Sie nach Abschluss der Funktion den Erfolg durch den Aufruf von GetLastError() überprüfen sollten ?

 

Wie auch immer, es gibt eine Sache, in der wir uns einig sind, also lassen Sie uns lieber etwas Lärm darum machen:

Zu erzwingen, dass Kommentare im EA-Quellcode nach der Definition von externen/Eingangsvariablen als Definition von Variablen in den Experteneigenschaften im Strategietester sichtbar sind, ist arrogant, unverschämt und respektlos gegenüber Programmierern! MQ hat kein Recht, eine solche Regel aufzustellen und die Benutzer zu zwingen, Zeit zu verschwenden, um zahlreiche Zeilen des Quelltextes zu ändern und die Gewohnheiten beim Kommentieren und Schreiben des Quelltextes auf eine solch unübliche Weise zu ändern. Wenn sie ein solches Nicht-Standard-Verhalten wollen, sollte es mit #pragma-Direktiven implementiert werden, da dies der Standard und akzeptierte Weg ist.

 
graziani: es sollte mit #pragma-Direktiven implementiert werden, da dies der Standard und akzeptierte Weg ist.
Oder die kompaktere "Standard und akzeptierte Wege", aber immer noch durch den Programmierer kontrolliert.
Doxygen
int var; /*!< Detailed description after the member */
int var; //!< Brief description after the member
Oder QT-Stil
int var; /**< Detailed description after the member */
 
graziani:

Können Sie mir einen Verweis in der Dokumentation zeigen, in der es heißt, dass StrToTime() einen Error-Handler verwendet und dass Sie nach Abschluss der Funktion den Erfolg durch den Aufruf von GetLastError() überprüfen sollten ?

Nein, das kann ich nicht.

Eine ähnliche Situation wurde bereits mit TerminalInfoString() behoben . . . wie ich bereits erwähnt habe. Aber ich verstehe Ihren Punkt, wenn der Benutzer GetLastError() korrekt verwendet hätte, wäre der "Fehler" nie aufgetreten.
 
graziani:

Jedenfalls sind wir uns in einem Punkt einig, also lassen Sie uns lieber ein wenig Lärm darum machen:

Es gibt wahrscheinlich mehr als eine Sache, über die wir uns einig sind
 
RaptorUK:
Es gibt wahrscheinlich mehr als eine Sache, in der wir übereinstimmen

Es scheint so. Sie können einen Cluberstellen
 
RaptorUK: Warum sollte ich Kompatibilität mit mql5 wollen? Ich verwende mql4-Code für MT4.
graziani: Str vs. String, sollten Sie die neuen Funktionen verwenden, da sie die gleichen wie in MQL5 sind, um Quellkompatibilität zu haben.
Die mq4-Dokumente sind aktualisiert worden. Sie sind beide in mt4. https://docs.mql4.com/convert/StrToTime und https://docs.mql4.com/convert/stringtotime