Die Funktion StrToTime verursacht den Fehler 4051

 

Hallo,

der Editor in Build >600 mag die Funktion StrToTime nicht.

Der Aufruf verursacht den Fehler 4051. Was ist da los?

Der Code ist hier:

//+------------------------------------------------------------------+
//| test.mq4 |
//+------------------------------------------------------------------+

#property version "1.00"

//--- input parameters
input string TimeClose_="21:45";
//+------------------------------------------------------------------+
//| Expert initialization function |
//+------------------------------------------------------------------+
int OnInit()
{
//---

//---
return(INIT_SUCCEEDED);
}
//+------------------------------------------------------------------+
//| Expert deinitialization function |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
{
//---

}
//+------------------------------------------------------------------+
//| Expert tick function |
//+------------------------------------------------------------------+
void OnTick()
{
//---
datetime xxxxx = StrToTime("21:45"); // makes no difference with TimeClose_ from the input
Print("error: "+GetLastError());
}
//+------------------------------------------------------------------+

Das Ergebnis bei jedem Häkchen:

Was ist hier falsch. Kompilieren mit Editor 509 verursacht natürlich keinen Fehler

 
kla-mue:

Hallo,

der Editor in Build >600 mag die Funktion StrToTime nicht.

Der Aufruf verursacht den Fehler 4051. Was ist da los?

Der Code ist hier:

<gelöscht>

Bitte posten Sie Ihren Code über die SRC-Schaltfläche
 

OK, jetzt weiß ich es... das nächste Mal...

Haben Sie eine Lösung für mein Problem?

//+------------------------------------------------------------------+
//|                                                         test.mq4 |
//+------------------------------------------------------------------+

#property version   "1.00"

//--- input parameters
input string   TimeClose_="21:45";
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---
   
//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---
   
  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
//---
   datetime xxxxx = StrToTime("21:45");
   Print("error: "+GetLastError());
  }
//+------------------------------------------------------------------+
 
kla-mue: OK, jetzt weiß ich es... das nächste Mal...
  1. Bearbeiten Sie das nächste Mal Ihren ursprünglichen Beitrag.
  2.    datetime xxxxx = StrToTime("21:45");
       Print("error: "+GetLastError());
    Test EURUSD,H1: Fehler: 4051
    Rufen Sie GetLastError() nur auf, wenn Sie einen Fehler haben . Ist xxxx == 0? Warum haben Sie es nicht zusammen mit GLE gedruckt?
  3. Vielleicht sollten Sie den neuen StringToTime ausprobieren
 
kla-mue:

OK, jetzt weiß ich es... das nächste Mal...

haben Sie eine Lösung für mein Problem?

Es könnte behoben worden sein . . https://www. mql5.com/en/forum/149475 aber bitte melden Sie es trotzdem an den Service Desk.

 
WHRoeder:
  1. Bearbeiten Sie das nächste Mal Ihren ursprünglichen Beitrag.
  2. Test EURUSD,H1: Fehler: 4051
    Rufen Sie GetLastError() nicht auf, wenn Sie keinen Fehler haben . Ist xxxx == 0? Warum haben Sie es nicht zusammen mit GLE gedruckt?
  3. Vielleicht sollten Sie den neuen StringToTime ausprobieren



@2: Wie soll ich herausfinden, ob es einen Fehler gibt, wenn ich GLE nicht frage?

Dieser Code dient dazu herauszufinden, warum mein EA Fehlermeldungen ausgibt. Kein anderer Zweck.


@3: der StringToTime verursacht den gleichen Fehler :(


Gibt es eine andere Möglichkeit?

 
kla-mue: @2: Wie soll ich herausfinden, ob ein Fehler vorliegt, wenn ich GLE nicht frage?

GLE sagt Ihnen nicht, OB Sie einen Fehler haben. Es sagt Ihnen, was der Fehler ist, WENN Sie einen haben.

GLE gibt den letzten Fehlercode zurück. Dieser Code ist mit welchem Code verknüpft? Unbekannt. Es könnte sich um etwas handeln, das mit der internen Terminalverarbeitung zusammenhängt, oder um einen Aufruf einer früheren Funktion, die Sie aufgerufen haben.

Don't call GetLastError() unless you have an error
Sie haben einen Fehler, wenn OrderSend ein negatives Ticket zurückgibt, Time[i] Null zurückgibt, oder wenn StringToTime Null zurückgibt, usw.
 

StringToTime

Die Funktion konvertiert eine Zeichenkette, die Zeit oder Datum im Format "yyyy.mm.dd [hh:mi]" enthält, in den Typ datetime.

datetime StringToTime(
string value // date string
);

Parameter

wert

[in] String im Format "jjjj.mm.tt hh:mi".

datetime xxxxx = StringToTime(D'21:45');
 
qjol:
D'21:45'

Das ist kein String, sondern bereits eine Datumszeit (21:45 des Tages, an dem Sie den Code kompiliert haben).
Lesen Sie das Dokument StrToTime()

  datetime var1; var1=StrToTime("2003.8.12 17:35"); var1=StrToTime("17:35"); // liefert das aktuelle Datum mit der angegebenen Uhrzeit var1=StrToTime("2003.8.12"); // liefert das Datum mit der Mitternachtszeit "00:00"
 
aber Sie müssen das Format "jjjj.mm.tt hh:mm" verwenden, sonst erhalten Sie den Fehler 4051
 

PERFEKT! Jetzt läuft es ohne Fehler =)

Es muss das komplette Datumsformat sein!

TNX vielmals!!!