longに関する質問ですが、intを4バイトのレシーバーとして使用し、文字配列からそのようなものを受け取るのであれば、可能ですが、その必要は全くありません(つまり、&ポインターで正確に渡します)。(つまり、&ポインタで正確に渡す)。
longに関する質問ですが、intを4バイトのレシーバーとして使用し、文字配列からそのようなものを受け取るのであれば、可能ですが、その必要は全くありません(つまり、&ポインターで正確に渡します)。(つまり、&ポインタで正確に渡す)。
どうやって調べるか - http://forum.ixbt.com/topic.cgi?id=26:37968
こんにちは。この記事が書かれたのは比較的昔のことですが、ライブラリDLLを使ったデータ交換の問題はまだ関連しています。私自身、最近ある機能を 実装する必要に迫られ、自分でDLLを書くか、それともライブラリDLLを使うかという選択を迫られました。私は後者を選択したが、当然ながら構造体の転送とデータの取得の難しさに直面した。この記事を読んだ後、私はいくつかのポイントをよく理解できなかった。この記事では、構造体を外部環境に転送する場合、ライブラリ関数が結果を置く割り当てられたメモリ領域として配列を使用することが提案されています。私はこの分野での経験がほとんどないので、おそらく私の推論は素人っぽいと思われるかもしれないが、それでも賢明な人たちが私を正してくれることを期待して、私の意見を述べることにする。古い記事(https://www.mql5.com/ja/articles/1543)で言及されている簡単な例を考えてみよう。
その記事では、ライブラリDLLを使ったファイル検索の問題を扱っている。また、必要なサイズの配列へのポインタを渡し、この配列から必要なデータを取り出すことを提案している。
構造体とは何ですか?同じメモリセクションである。では、構造体を渡してデータを取り出すアプローチを変えてみよう:
// データ型の定義を宣言する #define DWORD int #define TCHAR short // ユニコードを扱うので、このタイプを設定する。 #define MAX_PATH (260) // FILETIME構造体の宣言 struct FILETIME { DWORD dwLowDateTime; DWORD dwHighDateTime; }; // 検索結果のデータ構造を宣言する struct _WIN32_FIND_DATA { DWORD dwFileAttributes; FILETIME ftCreationTime; FILETIME ftLastAccessTime; FILETIME ftLastWriteTime; DWORD nFileSizeHigh; DWORD nFileSizeLow; DWORD dwReserved0; DWORD dwReserved1; TCHAR cFileName[MAX_PATH]; TCHAR cAlternateFileName[14]; }; // データ型を宣言することで、WinAPIの構造をそのままコピーする。 // ライブラリ関数のインポート #import "kernel32.dll" int FindFirstFileW(string path, _WIN32_FIND_DATA& answer); #import //+------------------------------------------------------------------+ //| エキスパート初期化関数| //+------------------------------------------------------------------+ int OnInit() { // 先に作成した構造体の型を持つ変数を作成する。 _WIN32_FIND_DATA data; // ライブラリ関数を呼び出し、構造体へのポインタを渡す。 int handle = FindFirstFileW(TerminalInfoString(TERMINAL_DATA_PATH) + "\\MQL5\\Experts\\*.mq5", data); if(handle!=-1) { // 追加の変換なしに構造体のフィールドにアクセスして検索結果を表示する Print(「見つかったファイル名: ", ShortArrayToString(data.cFileName)); Print(「一時的に見つかったファイル名: ", ShortArrayToString(data.cAlternateFileName)); Print(「見つかったファイルサイズ: ", data.nFileSizeLow); } //--- return(INIT_SUCCEEDED); } //+-

- 2008.07.15
- MetaQuotes Software Corp.
- www.mql5.com
構造体とは要するに何なのか?同じメモリセクションである。では、構造体を渡してデータを取り出すアプローチを変えてみよう:
あなたのコードをエディターを通して正しく貼り付けました
あなたのコードをエディタに正しく貼り付けました。
どうもありがとう!私はまだここでコードを正しくフォーマットする方法を見つけられていません。(((

- 無料取引アプリ
- 8千を超えるシグナルをコピー
- 金融ニュースで金融マーケットを探索
新しい記事 自作 DLL の排除 はパブリッシュされました:
作者: o_O