La función StrToTime provoca el error 4051 - página 2

 
qjol:
pero hay que utilizar el formato "aaaa.mm.dd hh:mm", de lo contrario se obtiene el error 4051
OK, tienes razón, o la ayuda en el MetaEditor está mal o hay un bug, de cualquier manera hay que reportarlo al Service Desk lo reportaré... y el ruso en la ayuda en inglés.
Referencia MQL4 / Funciones de Conversión / StrToTime

StrToTime

Convierte una cadena en el formato "aaaa.mm.dd hh:mi" a tipo datetime (la cantidad de segundos que han pasado desde el 1 de enero de 1970).

datetime StrToTime(
cadena valor // cadena
);

Parámetros

valor

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

Valor devuelto

Valor de tipo datetime como número de segundos, pasado desde el 01.01.1970.

Ejemplo:

datetime var1,var2,var3;
var1=StrToTime("2003.8.12 17:35");
var2=StrToTime("17:35"); // devuelve la fecha actual con la hora dada
var3=StrToTime(" 2003.8.12") ; // devuelve la fecha con la hora de medianoche "00:00"


 
RaptorUK:
OK, tienes razón, o bien la ayuda en MetaEditor es errónea o hay un error, de cualquier manera hay que reportarlo al Service Desk lo reportaré. . . y el ruso en la ayuda en inglés.

Esto funcionará como una solución que dará el mismo resultado. . .

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

... y no hay error.

 
RaptorUK:

. y ningún error.


por supuesto, es el formato correcto
 

¿de qué estás hablando?

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

da

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

¿qué es lo que está mal?

 
graziani:

¿de qué estás hablando?

da

¿qué es lo que está mal?

StrToTime() no StringToTime()
 
graziani:

¿de qué estás hablando?

da

¿qué es lo que está mal?


añada GetLastError() y lo averiguará
 
RaptorUK:
StrToTime() no StringToTime()


no importa, ambos dan error 4051
 

GetLastError() da una descripción del error sólo si ha ocurrido y sólo si la función está usando un manejador de errores.

Este no es el caso aquí, así que usarlo no tiene sentido.

Str vs. String, deberías usar las nuevas funciones ya que son las mismas que en MQL5, para tener compatibilidad de origen.

Además, si los resultados son los documentados, ¿por qué insistes en el error?

 
graziani:

GetLastError() da una descripción del error sólo si ha ocurrido y sólo si la función está usando un manejador de errores.

Este no es el caso aquí, así que usarlo no tiene sentido.

Str vs. String, deberías usar las nuevas funciones ya que son las mismas que en MQL5, para tener compatibilidad de origen.

Además, si los resultados son los documentados, ¿por qué insistes en el error?

ResetLastError() antes de llamar a StrToTime() y luego llamar a GetLastError(). . . . StrToTime() no debería causar un error, pero lo hace. . . es un error. Algo similar ya ha sido reconocido y corregido: https://www.mql5.com/en/forum/149475/page2
 
graziani:


Str vs. String, debe utilizar las nuevas funciones ya que son las mismas que en MQL5, para tener compatibilidad de origen.

¿Por qué querría compatibilidad con mql5? Estoy usando código mql4 para MT4.
Razón de la queja: