ライブラリ: DLLなしでのファイルマッピング - ページ 7 123456789101112 新しいコメント Al_key 2016.02.19 09:14 #61 o_O:libはセクションにバインドしない。理論的には、コードは異なるプロセスで実行できるからだ。それを制御するには、例えば、あなたのバリアントかhttps://www.mql5.com/ja/code/1835 を使ってください。 ミューテックスに名前がついていれば、メタトレーダーだけでなく、どのプロセスからでもそのハンドルを取得できるということでよろしいでしょうか? Al_key 2016.02.19 09:25 #62 Al_key: ミューテックスに名前がついていれば、メタトレーダーだけでなく、どのプロセスからでもそのハンドルを取得できるという理解で合っていましたか?https://msdn.microsoft.com/ru-ru/library/windows/desktop/ms686931%28v=vs.85%29.aspx 自分で答えを見つけました。確かに、プロセス間で共有できます。 Dmitry Luck'janenko 2016.03.04 07:35 #63 作者に質問です。mt4でこのクラスを使っています。ターミナルをオフにしてオンにすると、すべてが機能しなくなります。この問題を回避する方法はありますか?この問題を回避する方法はないでしょうか。そして2つ目。Delphiで書かれたプログラムで作成されたファイルマッピングが読めません。どういうニュアンスなのでしょうか。簡単に言うと、これらは多くの端末で動作する取引パネルです。 --- 2016.03.04 08:11 #64 Dmitry Luck'janenko:電源を切って端末の電源を入れると、すべてが動かなくなる。この問題を回避する方法はありますか?この問題を回避する方法はありますか?このような初期化解除中にファイルがどうなっているか、ログをとって確認する必要があります。ファイルのマッピングが読めません。winapiのどの関数が "read "を意味するのでしょうか? Dmitry Luck'janenko 2016.03.04 08:47 #65 o_O:このような初期化解除中にファイルに何が起こったか、ログをとって確認する必要がある。winapiのどの関数が "read "なのか?その関数はHANDLE64 CMemMapFile::Open(LPTSTR path, DWORD size, int mode=modeOpen)は常に0を返します。そのため、ファイルが開いているのかどうかがよくわからない。上の画像はExpert Advisorがまだ作成されていないファイル・マッピングを開いているログです。エラーはありません。多分、関数CMemMapFile::Openしかし、返されるハンドルは常に0であるため、ティックごとに常にファイルを開くことを避けるためのチェックを行う可能性はありません。そして2つ目の質問です。Delphiでファイルマッピングを作成するアプリケーションを作成しました。接続するとエラーが発生します。すなわち、数字が正しく渡されません。私は{$Align Off}で整列を始めました。他にも、「msvcrt.dll」の0x04E91000にアクセス違反が読み込まれるなどのエラーが出ました。これでデータは正常に 19 バイト整列されました - "00:35:50.260 Panel v 1.00 GBPUSD.m,M5: OnInitsizeof(PipeData)= 19"。しかし、読み込み時にはすべてのデータがゼロになります。 --- 2016.03.04 09:32 #66 Dmitry Luck'janenko:この関数はは常に0を返すということだ。そのため、ファイルが開いているのかどうかがよくわからない。その通り、CMemMapFile::Openはエラーコードを 返すか、エラーがない場合は0を返します。(CMemMapApi:とは異なり、CMemMapFile::Openはオープンハンドルを返し、渡されたパラメータにエラーを書き込みます)。そして、ハンドルはm_hmemにある。delphiで、ファイルマッピングを作成するアプリケーションを作成する。それを接続するとエラーが発生する。すなわち、数字が正しく渡されない。 ファイル先頭の予約DWORDバイトを考慮していますか? Dmitry Luck'janenko 2016.03.04 09:43 #67 o_O: ファイル先頭の予約DWORDバイトを考慮していますか? 4バイトですか、試してみます。 --- 2016.03.04 09:53 #68 Dmitry Luck'janenko: 4バイト? 試してみます、数えてませんでした。ソースのファイルの書き方や作り方を見てください。m_sizeパラメータについて Dmitry Luck'janenko 2016.03.04 18:05 #69 o_O:が正しい場合、CMemMapFile::Openはエラーコードを 返し、エラーがない場合は0を返します。(CMemMapApi:とは異なり、CMemMapFile::Openはオープンハンドルを返し、渡されたパラメータにエラーを書き込みます)。ハンドルはm_hmemにあります。 ファイル先頭の予約DWORDバイトを考慮していますか? 2016.03.04 19:00:00.897 BuyNow Client v 1.03 USDCHF.m,M5: BuyNow Client v 1.03.mq4, handle=8589934592存在しないファイル マッピングを開くと、m_hmem です。これがエラーかハンドルかを判断する方法を教えてください。 --- 2016.03.04 18:07 #70 Dmitry Luck'janenko:存在しないファイル・マッピングを開くとm_hmemになる。エラーなのかハンドルなのか、どう判断すればいいのでしょうか? CMemMapFile::Openはエラーコードを 返すか、エラーがない場合は0を返すと書きました。 123456789101112 新しいコメント 取引の機会を逃しています。 無料取引アプリ 8千を超えるシグナルをコピー 金融ニュースで金融マーケットを探索 新規登録 ログイン スペースを含まないラテン文字 このメールにパスワードが送信されます エラーが発生しました Googleでログイン WebサイトポリシーおよびMQL5.COM利用規約に同意します。 新規登録 MQL5.com WebサイトへのログインにCookieの使用を許可します。 ログインするには、ブラウザで必要な設定を有効にしてください。 ログイン/パスワードをお忘れですか? Googleでログイン
libはセクションにバインドしない。理論的には、コードは異なるプロセスで実行できるからだ。
それを制御するには、例えば、あなたのバリアントかhttps://www.mql5.com/ja/code/1835 を使ってください。
ミューテックスに名前がついていれば、メタトレーダーだけでなく、どのプロセスからでもそのハンドルを取得できるという理解で合っていましたか?
作者に質問です。
mt4でこのクラスを使っています。ターミナルをオフにしてオンにすると、すべてが機能しなくなります。この問題を回避する方法はありますか?この問題を回避する方法はないでしょうか。
そして2つ目。Delphiで書かれたプログラムで作成されたファイルマッピングが読めません。どういうニュアンスなのでしょうか。
簡単に言うと、これらは多くの端末で動作する取引パネルです。
電源を切って端末の電源を入れると、すべてが動かなくなる。この問題を回避する方法はありますか?この問題を回避する方法はありますか?
このような初期化解除中にファイルがどうなっているか、ログをとって確認する必要があります。
ファイルのマッピングが読めません。
winapiのどの関数が "read "を意味するのでしょうか?
このような初期化解除中にファイルに何が起こったか、ログをとって確認する必要がある。
winapiのどの関数が "read "なのか?
その関数は
は常に0を返します。
そのため、ファイルが開いているのかどうかがよくわからない。
上の画像はExpert Advisorがまだ作成されていないファイル・マッピングを開いているログです。エラーはありません。
多分、関数
CMemMapFile::Openしかし、返されるハンドルは常に0であるため、ティックごとに常にファイルを開くことを避けるためのチェックを行う可能性はありません。
そして2つ目の質問です。
Delphiでファイルマッピングを作成するアプリケーションを作成しました。接続するとエラーが発生します。すなわち、数字が正しく渡されません。私は{$Align Off}で整列を始めました。
他にも、「msvcrt.dll」の0x04E91000にアクセス違反が読み込まれるなどのエラーが出ました。
これでデータは正常に 19 バイト整列されました - "00:35:50.260 Panel v 1.00 GBPUSD.m,M5: OnInitsizeof(PipeData)= 19"。
しかし、読み込み時にはすべてのデータがゼロになります。
この関数は
は常に0を返すということだ。
そのため、ファイルが開いているのかどうかがよくわからない。
その通り、CMemMapFile::Openはエラーコードを 返すか、エラーがない場合は0を返します。
(CMemMapApi:とは異なり、CMemMapFile::Openはオープンハンドルを返し、渡されたパラメータにエラーを書き込みます)。
そして、ハンドルはm_hmemにある。
delphiで、ファイルマッピングを作成するアプリケーションを作成する。それを接続するとエラーが発生する。すなわち、数字が正しく渡されない。
ファイル先頭の予約DWORDバイトを考慮していますか?4バイト? 試してみます、数えてませんでした。
ソースのファイルの書き方や作り方を見てください。
m_sizeパラメータについて
が正しい場合、CMemMapFile::Openはエラーコードを 返し、エラーがない場合は0を返します。
(CMemMapApi:とは異なり、CMemMapFile::Openはオープンハンドルを返し、渡されたパラメータにエラーを書き込みます)。
ハンドルはm_hmemにあります。
ファイル先頭の予約DWORDバイトを考慮していますか?存在しないファイル マッピングを開くと、m_hmem です。これがエラーかハンドルかを判断する方法を教えてください。
存在しないファイル・マッピングを開くとm_hmemになる。エラーなのかハンドルなのか、どう判断すればいいのでしょうか?