ライブラリ: DLLなしでのファイルマッピング - ページ 10 1...3456789101112 新しいコメント Иван 2017.09.20 12:44 #91 o_o:少なくとも、コンピュータを再起動した後にメモリ上のファイルを読み込もうとはしない...。ということは、この方法では2つの端末間でメモリーを介してデータを転送することはできないということですね?正しい方法は何ですか?MemMapLib.mqhを使って、ある端末から別の端末へのテキスト文字列の転送を実装する必要があります。 --- 2017.09.20 13:01 #92 Иван: つまり、この方法では2つの端末間でメモリーを介してデータを転送することはできないということですね?できますMemMapLib.mqhを使って、ある端末から別の端末へのテキスト行の転送を実装する必要があります。ファイルを作成し、書き込み、そして読み込む。だいたいこの順番https://www.mql5.com/ja/code/10571 Иван 2017.09.23 01:20 #93 CMemMapFile hmem; long err=hmem.Open("Local\\test",111,modeCreate);メモリ上のオープンファイルに書き込んで読み込めるデータの最大量は?4096を超えるとExpert Advisorがクラッシュします。 --- 2017.09.23 07:35 #94 コードとピン配置を教えて 削除済み 2017.10.07 09:35 #95 HANDLE64 CMemMapFile::Open(LPTSTR path, DWORD size, int mode=modeOpen) { m_size=size; m_path=path; m_mode=mode; m_pos=0; // начальное положение if (m_path=="") return(-1); m_hmem=Open(m_path, size, mode, err); if (m_hmem==NULL) return(err); // если ошибка создания return(0); } こんにちは、上記のコードで "return(0) "を "return(m_hmem) "に修正する必要があります。 Алексей Барбашин 2017.10.23 10:14 #96 200文字の文字列をファイルに 書き込もうとしたところ、ライブラリの214行目で配列サイズを超えるというエラーが出た。受信配列のサイズを決定する際に、ヘッダーのサイズが考慮されていないことが判明した。 --- 2017.10.23 11:20 #97 Алексей Барбашин:機能している動かない。コードとスピンドルを教えて Алексей Барбашин 2017.10.23 16:58 #98 o_o:うまくいかないんだ。コードとプリントアウトをくれ string control_text = "私たちのママが大声で泣いている。ママ、泣かないで!他の人たちも同じよ..."; string NAME_MAPPING = "Local\\" + Symbol() + "_" + (string)ChartID(); uchar Data_sender[]; int size_data = StringToCharArray(control_text, Data_sender); //--- メモリ・オブジェクトを作成する CMemMapFile* MappingFile = new CMemMapFile(); //--- 録音用のファイルを作成する long err = MappingFile.Open(NAME_MAPPING, size_data+4, modeCreate); //--- データをファイルに書き込む err = MappingFile.Write(Data_sender, size_data); //--- レコードを閉じる MappingFile.Close(); //--- ポインターを削除する delete MappingFile; uchar Data_receiver[]; ArrayResize(Data_receiver, size_data); //--- メモリ・オブジェクトを作成する CMemMapFile* MF = new CMemMapFile(); //--- 読み込み用にファイルを開く err = MF.Open(NAME_MAPPING, size_data+4, modeOpen); //--- Сдвигаем указатель чтения на начало файла MF.Seek(0,SEEK_SET); //--- Читаем данные из файла err=MF.Read(Data_receiver, size_data); //--- ファイルを閉じる MF.Close(); //--- ポインターを削除する delete MF; Print(CharArrayToString(Data_receiver));寸法はわかりました。しかし、別のオブジェクトでファイルを読み込もうとしたところ、出力が無音になってしまいました。エラーはどこですか? --- 2017.10.23 17:45 #99 Алексей Барбашин: 寸法はわかった。しかし、そのファイルを別のオブジェクトで読み込もうとしたところ、出力が無音になってしまいました。エラーはどこですか?//--- レコードを閉じるレコードを閉じるのではなく、ファイルを閉じて削除 するのです。だから //--- 読み込み用にファイルを開く 存在しないものを開こうとしている。 Алексей Барбашин 2017.10.23 19:01 #100 o_o:レコードを閉じるのではなく、ファイルを閉じて削除 するのだ。だから 存在しないものを開こうとしているわけだ。なるほど、納得です。私は通常のファイルを扱うときの例えを追っていたのですが、閉じるということは、ファイルを削除することではなく、まさに閉じて解放することにつながるのですね。 1...3456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
少なくとも、コンピュータを再起動した後にメモリ上のファイルを読み込もうとはしない...。
ということは、この方法では2つの端末間でメモリーを介してデータを転送することはできないということですね?
正しい方法は何ですか?MemMapLib.mqhを使って、ある端末から別の端末へのテキスト文字列の転送を実装する必要があります。
つまり、この方法では2つの端末間でメモリーを介してデータを転送することはできないということですね?
できます
MemMapLib.mqhを使って、ある端末から別の端末へのテキスト行の転送を実装する必要があります。
ファイルを作成し、書き込み、そして読み込む。
だいたいこの順番
https://www.mql5.com/ja/code/10571
メモリ上のオープンファイルに書き込んで読み込めるデータの最大量は?
4096を超えるとExpert Advisorがクラッシュします。
こんにちは、上記のコードで "return(0) "を "return(m_hmem) "に修正する必要があります。
200文字の文字列をファイルに 書き込もうとしたところ、ライブラリの214行目で配列サイズを超えるというエラーが出た。受信配列のサイズを決定する際に、ヘッダーのサイズが考慮されていないことが判明した。
機能している
動かない。
コードとスピンドルを教えて
うまくいかないんだ。
コードとプリントアウトをくれ
寸法はわかりました。しかし、別のオブジェクトでファイルを読み込もうとしたところ、出力が無音になってしまいました。エラーはどこですか?
寸法はわかった。しかし、そのファイルを別のオブジェクトで読み込もうとしたところ、出力が無音になってしまいました。エラーはどこですか?
//--- レコードを閉じるレコードを閉じるのではなく、ファイルを閉じて削除 するのです。
だから
//--- 読み込み用にファイルを開く存在しないものを開こうとしている。レコードを閉じるのではなく、ファイルを閉じて削除 するのだ。
だから
存在しないものを開こうとしているわけだ。なるほど、納得です。私は通常のファイルを扱うときの例えを追っていたのですが、閉じるということは、ファイルを削除することではなく、まさに閉じて解放することにつながるのですね。