こんにちは。
コスト・インジケータのWindowScreenShotは完璧に動作しています。
10:15、10:20など、5分ごとに画像を作成します。
そして
一定時間(ランダム)経過 すると動作 しません。ファイルを書き込むことができません。
なぜですか?
.... 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));
それは、あなたのコードが、私たちが見ることができないので、壊れているからです。 私たちはあなたのコードを見ることができないので、どこが壊れているのかを知ることはできません。
error=0
とか、lasterror =4103, connotopen file とか。
なぜでしょうか?
error=0
とか、lasterror =4103, connot open file とか。
なぜ?
ファイル名は ユニークですか、それとも再利用しますか?
ユニーク
ユニーク
エラーが発生しない限り、GetLastError()を呼び出さないでください。 WindowScreenShot(filename, X_pixels, Y_pixels); int error=GetLastError(); if (error!=0) Alert(TimeToStr(TimeCurrent(),TIME_SECONDS
関数の戻り値とは何ですか?どのように使用するのですか?- MQL4フォーラム 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が 失敗した場合、handle == -1です。エラーがないときは警告を発し、エラーがあるときは続行します。
どのようにユニークにするのですか?
string timestamp = TimeToStr(TimeCurrent(),TIME_SECONDS); filename = filename + "_" + timestamp + ".gif";
私が見たところ、あなたの最大の問題はエラー処理です。WHRoederが すでに述べたように、あなたはエラーが発生したとき、または発生した場合、それを報告するのに不十分な仕事をしています。 例えば、WindowsScreenShot()が動作したかしないかさえチェックしていません ...WHRoederが 提案した変更を行って、再度テストしてください。 あなたのファイル名はユニークではありません。... 現在の時刻からhh:mm:ssを使用しているので、毎日、前日のファイルを上書きする可能性があり、その時にそのファイルが開いていると、4103エラーが発生する可能性があります。
代わりに ... .
string timestamp = TimeToStr(TimeCurrent(), TIME_DATE|TIME_SECONDS); filename = filename + "_" + timestamp + ".gif";
.ファイル名に日付を追加する。
私が見たところ、あなたの最大の問題はエラー処理です。WHRoederが すでに述べたように、あなたは、エラーが発生したとき/発生した場合の報告について、お粗末な仕事をしています。 例えば、WindowsScreenShot()が動作したかどうかさえチェックしていません ...WHRoederが 提案した変更を行って、もう一度テストしてください。 あなたのファイル名はユニークではありません。... 現在の時刻からhh:mm:ssを使用しているので、毎日、前日のファイルを上書きする可能性があり、その時にそのファイルが開いていると、4103エラーが発生する可能性があります。
代わりに ... .
...でファイル名に日付を入れる。
ラスターロールは4103、継続
エラーは0
....そして、私はMT4を終了し、それを再実行し、正常に実行されます。
After a period(random) of timeは 効きません。ファイルを書き込まない。 しかし、ファイル、ファイル名はユニークです。
なぜですか?
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)); }
ラスターロールは4103、継続
エラーは0
MT4を終了して再実行すると、正常に実行されます。
一定期間(ランダム)経過後、動作 しない。ファイルを書き込まない。 しかし、ファイル、ファイル名はユニークです。
なぜですか?
ログファイルのうち、エラーが表示されている部分を表示してください。
![MQL5 - MetaTrader 5クライアントターミナルにビルトインされたトレードストラテジーの言語](https://c.mql5.com/i/registerlandings/logo-2.png)
- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
こんにちは。
コスト・インジケータのWindowScreenShotは完璧に動作しています。
10:15、10:20など、5分ごとに画像を作成します。
そして
一定時間(ランダム)経過 すると動作 しません。ファイルを書き込むことができません。
なぜ?
GetLastError()は、エラーを通知しません。
どうやら すべて 順調のようです。
THX