StrToTime işlevi 4051 hatasına neden oluyor

 

Merhaba,

>600 derlemesindeki düzenleyici, StrToTime işlevini sevmiyor.

Bunu çağırmak 4051 hatasına neden oluyor. Sorun ne??

kod burada:

 //+------------------------------------------------------------------+
//| 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());
}
//+------------------------------------------------------------------+

Her tik ile sonuç:

Burada yanlış olan ne? Editör 509 ile derleme elbette hataya neden olmaz

 
kla-mue :

Merhaba,

>600 derlemesindeki düzenleyici, StrToTime işlevini sevmiyor.

Bunu çağırmak 4051 hatasına neden oluyor. Sorun ne?

kod burada:

<silindi>

Lütfen kodunuzu SRC butonunu kullanarak gönderin
 

Tamam, şimdi biliyorum... bir dahaki sefere...

benim sorunum için bir çözümünüz var mı?

 //+------------------------------------------------------------------+
//|                                                         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 : Tamam, şimdi biliyorum... bir dahaki sefere...
  1. Bir dahaki sefere orijinal yayınınızı düzenleyin .
  2.    datetime xxxxx = StrToTime ( "21:45" );
       Print ( "error: " +GetLastError());
    EURUSD,H1 testi: hata: 4051
    Bir hatanız olmadıkça GetLastError() 'u çağırmayın. xxxx == 0 mı? Neden GLE ile birlikte yazdırmadınız?
  3. Belki de yeni StringToTime'ı denemelisiniz
 
kla-mue :

Tamam, şimdi biliyorum... bir dahaki sefere...

benim sorunum için bir çözümünüz var mı?

Düzeltilmiş olabilir. . . https://www.mql5.com/en/forum/149475 ama lütfen yine de Servis Masasına bildirin.

 
WHRoeder :
  1. Bir dahaki sefere orijinal yayınınızı düzenleyin .
  2. EURUSD,H1 testi: hata: 4051
    Bir hatanız olmadıkça GetLastError() 'u çağırmayın. xxxx == 0 mı? Neden GLE ile birlikte yazdırmadınız?
  3. Belki de yeni StringToTime'ı denemelisiniz



@2: GLE'ye sormazsam bir hata olup olmadığını nasıl öğrenebilirim?

Bu kod, EA'mın neden hata mesajları verdiğini öğrenmek içindir. Başka bir amaç yok.


@3: StringToTime aynı hataya neden oluyor :(


Başka bir olasılık var mı?

 
kla-mue : @2: GLE'ye sormazsam bir hata olup olmadığını nasıl anlarım?

GLE, bir hatanız varsa bunu size söylemez. Bir hatanız olduğunda size hatanın ne olduğunu söyler.

GLE, son hata kodunu döndürür. Bu kod hangi kodla ilişkili? Bilinmeyen. Dahili terminal işlemeyle ilgili bir şey veya aradığınız önceki bir işlevden gelen bir çağrı olabilir.

Don't call GetLastError() unless you have an error
OrderSend negatif bilet döndürürse, Time[i] sıfır döndürürse veya StringToTime sıfır döndürürse vb. bir hata alırsınız.
 

StringToTime

İşlev , "yyyy.mm.dd [ss:mi]" biçiminde saat veya tarih içeren bir dizeyi tarih saat türüne dönüştürür.

tarihsaat StringToTime (
sicim değer // tarih dizisi
);

parametreler

değer

[içinde] " yyyy.mm.dd hh:mi " biçiminde dize.

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

Bu bir dize değil, bu zaten bir tarih (kodu derlediğiniz günün 21:45'i.)
StrToTime() belgesini okuyun

 tarihsaat var1;
  var1=StrToTime("2003.8.12 17:35");
  var1=StrToTime("17:35"); // verilen saatle geçerli tarihi döndürür
  var1=StrToTime("2003.8.12"); // gece yarısı saati "00:00" olan tarihi döndürür
 
ancak "yyyy.mm.dd ss:mm" biçimini kullanmanız gerekir, aksi takdirde 4051 hatası alırsınız
 

MÜKEMMEL ! Şimdi hatasız çalışıyor =)

Tam tarih formatı olmalı!

Çok teşekkürler!!