WindowScreenShot sorunu

 

Merhaba,

Kostüm göstergesinde WindowScreenShot kusursuz çalışıyor.

5 dakikada bir resim oluşturun, örneğin: 10:15,10:20, vb...

Ve

Bir süre sonra (rastgele) süre çalışmıyor . Dosyayı yazmayın.

Niye ya?

GetLastError() hata sinyali vermiyor.

Görünüşe göre hepsi iyi.


Teşekkür

 
ttechnik :

Merhaba,

Kostüm göstergesinde WindowScreenShot kusursuz çalışıyor.

5 dakikada bir resim oluşturun, örneğin: 10:15,10:20, vb...

Ve

Bir süre sonra (rastgele) süre çalışmıyor . Dosyayı yazmayın.

Niye ya?

Çünkü göremediğimiz kodunuz bozuk. Kodunuzu göremediğimiz için nerede kırıldığını size söyleyemeyiz.
 
  ....
   WindowScreenShot (filename, X_pixels, Y_pixels); 
   int error=GetLastError();
   if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite0 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
  
   int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
   if (handle>- 1 )
    {
     error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite1 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
     FileClose (handle);
    }
  
   int lasterror=GetLastError();
   if (lasterror!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot, Schoted file open error: (" , Symbol (), "  " ,lasterror, "): " ,ErrorDescription(lasterror));
  
RaptorUK :
Çünkü göremediğimiz kodunuz bozuk. Kodunuzu göremediğimiz için nerede kırıldığını size söyleyemeyiz.

hata=0

ve lasterror = 4103, dosyayı açmaz

niye ya?

 
ttechnik :

hata=0

ve lasterror = 4103, dosyayı açmaz

niye ya?

Dosya adı benzersiz mi yoksa dosya adlarını yeniden mi kullanıyorsunuz?
 
RaptorUK :
Dosya adı benzersiz mi yoksa dosya adlarını yeniden mi kullanıyorsunuz?


eşsiz
 
ttechnik :

eşsiz
Onları nasıl benzersiz yaparsınız?
 
  1. Bir hata olmadıkça GetLastError()'u ARAMAYIN.
     WindowScreenShot (filename, X_pixels, Y_pixels); 
       int error=GetLastError();
       if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS
    İşlev dönüş değerleri nelerdir? Onları nasıl kullanırım? - MQL4 forumu
     if ( ! WindowScreenShot (filename, X_pixels, Y_pixels) ){
       int error=GetLastError();
       Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ...
    }

  2.    int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
       if (handle>- 1 )
        {
         error=GetLastError();
    
    FileOpen başarısız olursa, == -1'i işleyin. HİÇBİR hata yokken uyarı veriyorsunuz ve varken devam ediyorsunuz.
 
RaptorUK :
Onları nasıl benzersiz yaparsın?



 string timestamp = TimeToStr ( TimeCurrent (), TIME_SECONDS );
filename = filename + "_" + timestamp +   ".gif" ;
 
ttechnik :


Görebildiğim kadarıyla en büyük sorununuz hata işlemeniz, WHRoeder'ın daha önce de belirttiği gibi, hataları meydana geldiğinde/olduğunda bildirme konusunda kötü bir iş çıkarıyorsunuz. Örneğin, WindowsScreenShot()'ın çalışıp çalışmadığını bile kontrol etmiyorsunuz. . . WHRoeder'ın önerdiği değişiklikleri yapın ve tekrar test edin. Dosya adınız benzersiz değil. . . geçerli zamandan ss:dd:ss kullanırsınız, bu nedenle her gün bir önceki güne ait bir dosyanın üzerine yazmak mümkündür, bu dosya o sırada açıksa bu 4103 hatasına neden olabilir.

Yerine . . .

 string timestamp = TimeToStr ( TimeCurrent (), TIME_DATE | TIME_SECONDS );
filename = filename + "_" + timestamp +   ".gif" ;

. . . dosya adına tarih eklemek için.

 
RaptorUK :

Görebildiğim kadarıyla en büyük sorununuz hata işlemeniz, WHRoeder'ın daha önce de belirttiği gibi, hataları meydana geldiğinde/olduğunda bildirme konusunda kötü bir iş çıkarıyorsunuz. Örneğin, WindowsScreenShot()'ın çalışıp çalışmadığını bile kontrol etmiyorsunuz. . . WHRoeder'ın önerdiği değişiklikleri yapın ve tekrar test edin. Dosya adınız benzersiz değil. . . geçerli zamandan ss:dd:ss kullanırsınız, bu nedenle her gün bir önceki güne ait bir dosyanın üzerine yazmak mümkündür, bu dosya o sırada açıksa bu 4103 hatasına neden olabilir.

Yerine . . .

. . . dosya adına tarih eklemek için.

lasterror 4103, devam et

hata 0

.....ve MT4'ten çıktım ve yeniden çalıştırdım, doğru şekilde çalıştırdım

Bir süre sonra (rastgele) süre çalışmıyor . Dosyayı yazmayın. Ama dosya, dosya adı benzersiz.

niye ya?


 string timestamp = TimeToStr ( TimeCurrent (), TIME_DATE )+ "_" + TimeToStr ( TimeCurrent (), TIME_SECONDS );
   for ( int i= StringLen (timestamp); i> 0 ; i--)
     if ( StringFind (timestamp, ":" ,i)!=- 1 || StringFind (timestamp, "." ,i)!=- 1 ) timestamp= StringSetChar (timestamp, i, '-' );
          

string filename = mappa + CharToStr ( 92 ) + CharToStr ( 92 ) + Symbol ();
filename = filename + "_" + timestamp +   ".gif" ;

int error;
if (! WindowScreenShot (filename, X_pixels, Y_pixels))
   { 
    error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite0 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
   }
Alert(filename);  
int handle = FileOpen (filename, FILE_BIN | FILE_READ ); 
if (handle>- 1 )
    {
     error=GetLastError();
     if (error!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot FileWrite1 error: (" , Symbol (), "  " ,error, "): " ,ErrorDescription(error));
     FileClose (handle);
    }
else
   {  
     int lasterror=GetLastError();
     if (lasterror!= 0 ) Alert ( TimeToStr ( TimeCurrent (), TIME_SECONDS ), " trade_mode:" , trade_mode, " T_ScreenShot, Schoted file open error: (" , Symbol (), "  " ,lasterror, "): " ,ErrorDescription(lasterror));
   }
 
ttechnik :

lasterror 4103, devam et

hata 0

.....ve MT4'ten çıktım ve yeniden çalıştırdım, doğru şekilde çalıştırdım

Bir süre sonra (rastgele) süre çalışmıyor . Dosyayı yazmayın. Ama dosya, dosya adı benzersiz.

niye ya?



Lütfen günlük dosyasının hataları gösteren kısmını gösterin. . .
Neden: