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?
.... 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));
Çü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?
hata=0
ve lasterror = 4103, dosyayı açmaz
niye ya?
Dosya adı benzersiz mi yoksa dosya adlarını yeniden mi kullanıyorsunuz?
eşsiz
eşsiz
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 ... }
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.
Onları nasıl benzersiz yaparsın?
string timestamp = TimeToStr ( TimeCurrent (), TIME_SECONDS ); filename = filename + "_" + timestamp + ".gif" ;
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.
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)); }
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. . .
- Ücretsiz alım-satım uygulamaları
- İşlem kopyalama için 8.000'den fazla sinyal
- Finansal piyasaları keşfetmek için ekonomik haberler
Gizlilik ve Veri Koruma Politikasını ve MQL5.com Kullanım Şartlarını kabul edersiniz
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