La fonction StrToTime provoque l'erreur 4051 - page 2

 
qjol:
mais vous devez utiliser le format "yyyy.mm.dd hh:mm", sinon vous obtenez l'erreur 4051.
OK, vous avez raison, soit l'aide dans MetaEditor est erronée, soit il y a un bug, dans tous les cas il faut le signaler au Service Desk , je le signalerai... et le russe dans l'aide en anglais.
Référence MQL4 / Fonctions de conversion / StrToTime

StrToTime

Convertit une chaîne au format "yyyy.mm.dd hh:mi" en un type datetime (le nombre de secondes écoulées depuis le 1er janvier 1970).

datetime StrToTime(
chaîne de caractères valeur // chaîne de caractères
) ;

Paramètres

valeur

[in] Строка в формате "yyyy.mm.dd hh:mi ".

Valeur retournée

Valeur de type datetime sous la forme d'un nombre de secondes, passées depuis le 01.01.1970.

Exemple :

datetime var1,var2,var3 ;
var1=StrToTime("2003.8.12 17:35");
var2=StrToTime("17:35") ; // renvoie la date actuelle avec l'heure donnée
var3=StrToTime("2003.8.12") ; // renvoie la date avec l'heure de minuit "00:00".


 
RaptorUK:
OK, vous avez raison, soit l'aide dans MetaEditor est erronée, soit il y a un bug, dans tous les cas il faut le signaler au Service Desk , je vais le signaler... et le russe dans l'aide en anglais.

Cela fonctionnera comme une solution de rechange donnant le même résultat....

  datetime xxxxx = StrToTime(TimeToStr(TimeCurrent(), TIME_DATE)+" "+"21:45");

... et aucune erreur.

 
RaptorUK:

. . et aucune erreur.


bien sûr, c'est le bon format
 

de quoi parlez-vous ?

   Print((string)StringToTime("21:45"));
   datetime test = StringToTime("21:45");
   Print((string)test);
   Print(TimeToString(test, TIME_MINUTES));

donne

00:01:00 Test GOLD,M15: 2014.02.12 21:45:00
00:01:00 Test GOLD,M15: 2014.02.12 21:45:00
00:01:00 Test GOLD,M15: 21:45

alors qu'est-ce qui ne va pas ?

 
graziani:

de quoi parlez-vous ?

donne

alors qu'est-ce qui ne va pas ?

StrToTime() et non StringToTime()
 
graziani:

de quoi parlez-vous ?

donne

alors qu'est-ce qui ne va pas ?


ajoutez GetLastError() et vous le saurez.
 
RaptorUK:
StrToTime() et non StringToTime()


Peu importe, les deux donnent l'erreur 4051.
 

GetLastError() donne une description de l'erreur seulement si elle s'est produite et seulement si la fonction utilise un gestionnaire d'erreur.

Ce n'est pas le cas ici, donc son utilisation n'a aucun sens.

Str vs. String, vous devriez utiliser les nouvelles fonctions car elles sont les mêmes que dans MQL5, pour avoir une compatibilité de source.

De plus, si les résultats sont tels que documentés, pourquoi insistez-vous sur l'erreur ?

 
graziani:

GetLastError() donne une description de l'erreur seulement si elle s'est produite et seulement si la fonction utilise un gestionnaire d'erreur.

Ce n'est pas le cas ici, donc son utilisation n'a aucun sens.

Str vs. String, vous devriez utiliser les nouvelles fonctions car elles sont les mêmes que dans MQL5, pour avoir une compatibilité de source.

De plus, si les résultats sont tels que documentés, pourquoi insistez-vous sur l'erreur ?

ResetLastError() avant l'appel de StrToTime() puis appeler GetLastError() après .... StrToTime() ne devrait pas provoquer d'erreur mais c'est le cas... c'est un bug. Un problème similaire a déjà été reconnu et corrigé : https://www.mql5.com/en/forum/149475/page2
 
graziani:


Str vs. String, vous devez utiliser les nouvelles fonctions car elles sont les mêmes que dans MQL5, afin d'avoir une compatibilité de source.

Pourquoi voudrais-je être compatible avec mql5 ? J'utilise le code mql4 pour MT4.
Raison: