ファイルへの書き込みを改行で行う - ページ 6

 
Aleksei Stepanenko:
セルゲイには複数のExpert Advisorが動作しており、複数の行があるので、配列になっています。そのため、すべてが醜く見えてしまうのです。Maxim KuznetsovはSQLを提案し、これはこれらのEAが互いに通信するための正しい方法です。

しかし、セリフは1つずつ読み上げられ、なぜか正しいものが選択される。そうすれば、配列は必要ありません。

私もそう言ったのですが、mql4はSQLiteをサポートして いません。

 

ライブラリの接続はしなかったのか?それともないのか、忘れました。

 
Aleksei Stepanenko:

ライブラリの接続はしなかったのか?それともないのか、忘れました。

後から保存したバージョンのファイルが保存されるため、ファイルを同時に編集することはできないようです。

例えば、プログラムAが編集のためにファイルを開き、同時にプログラムBも同じことを行い、その後プログラムAが変更を加えてFileCloseで保存し、プログラムBも同じことを行ったが、プログラムCがファイルを開くと、プログラムAが行った変更は表示されず、プログラムBが実装して保存した変更のみが表示される、これはプログラムAよりも後に保存したためである。

しかし、これは確かなことではありません。

これに関する情報は全くないのでしょうか?

 
1つのファイルで複数のプログラムを同時に動作させることは、最悪の悪である。EAは、ファイル操作中、他のEAによるそのファイルの読み書きの禁止を制御しなければならない。SQLまたはflag-global変数 またはflag-fileを使用します。そうでなければ、発見しにくい不可解なエラーが発生します。
 
Aleksei Stepanenko:
1つのファイルで複数のプログラムを同時に動作させることは、最悪の悪である。ファイル操作時に、他のExpert Advisorによるこのファイルの読み取り/書き込みを禁止するように制御する必要があります。SQLまたはフラググローバル変数 またはフラグファイルを使用します。そうでなければ、発見しにくい不可解なエラーが発生します。

邪道というか、タスクはそれぞれですが、ある種の特殊性を考慮する必要があるのです。

どうやらFileCloseの 瞬間に変更がきっちり保存されるようで、それまでは誰も気づかないようです。

 
それはあなた次第です。人間の脳は、新しい発想が生まれにくいようにできている。
 
EfremovSergey:

後から保存したバージョンのファイルが保存されるため、ファイルを同時に編集することはできないようです。

例えば、プログラムAが編集のためにファイルを開き、同時にプログラムBも同じことを行い、その後プログラムAが変更を加えてFileCloseで保存し、プログラムBも同じことを行ったが、プログラムCがファイルを開くと、プログラムAよりプログラムBの方が後に保存したため、ファイルにはプログラムAが行った変更点はなく、プログラムBが行って保存した変更のみが含まれていることになる。

しかし、これは確かなことではありません。

これに関する情報は全くないのでしょうか?

設定するのは難しいですが、不可能ではありません。保存する前に、最後に変更した時刻と開封時の時刻が一致していることを確認すれば十分です。 FILE_MODIFY_DATEを 読み 、ファイルを開いて変更を加え、再度 FILE_MODIFY_DATEを 読み 前回と比較し、誰も変更していなければ、ファイルを閉じて変更を保存 します。そうでない場合は、変更を破棄し、再度開きます。こんな感じ。

 
EfremovSergey:

邪道というか、タスクはそれぞれですが、ある種の特殊性を考慮する必要があるのです。

どうやら、FileCloseの瞬間に 変更が保存され、それまでは誰も気づかないようです。

事実ではありません。

FileFlush

ファイルI/Oバッファに残っている全データをディスクにリセット する。

void  FileFlush( 
   int  file_handle      // handle файла 
   );
 
Alexey Viktorov:

セットアップは難しいが、不可能ではない。書き込む前に、最後に変更した時刻と、開いたときの時刻が同じであることを確認すれば十分です。例えば、 FILE_MODIFY_DATEを読んでからファイルを開き、変更を加え、再度 FILE_MODIFY_DATEを 読んで 前回と比較し、誰も変更していない場合は変更を保存してファイルを 閉じます。そうでない場合は、変更を破棄し、再度開きます。こんな感じ。

忙しい」フラッグ(先着順)とほぼ同じで、何倍も複雑ですが、アイデアは面白いです、気に入りました、ありがとう。

 
Alexey Viktorov:

事実ではありません。

FileFlush

ファイルI/Oバッファに残っているデータをディスクにリセットする。

FileClose saveとの関連では、この意味がよくわからない。