トップ  >  リファレンス  >  基本  >  プリプロセッサ  >  インポート
スポンサーリンク
検索
カスタム検索
リファレンスツリー
オススメ

天才数学者のエドワード・オークリー・ソープの物語とジョン・ケリーの公式は必見です。
インポート


関数は、コンパイルされたMQL4モジュール(.mq4ファイル)とOSのモジュール(.dll) からインポート出来ます。
インポートするモジュール名は、#importで指定します。
コンパイラがインポートした関数を呼び出し正しく使用出来るようにする為に、
適切なパラメータと関数の完全な記述が必要です。

関数は#import "モジュール名"の直後に記述します。
新しい#importコマンド(パラメータ無しで可能)はインポートされた関数の記述のブロック完了を意味します。


書式:
#import "ファイル名"
 関数名(引数) ;
 関数名(引数) ;
#import





インポートされた関数は、任意の名前を持つ事が出来ます。
異なるモジュールからでは無く、同じ名前を持つ関数を同時にインポートする事が出来ます。
インポートされた関数は、組み込み関数の名前と一致する名前を持つ事が出来ます。
スコープ定義演算子を使って呼びたい関数を指定します。

#importの後に指定したファイルを検索する順番は"インポート関数の呼び出し"に記載しています。

インポートした関数は、コンパイルされたモジュールなので、コンパイラは渡された引数の妥当性を検証する事は出来ません。
その為、ランタイムエラーを回避する為に、引数の構成と順序を正確に記述する必要があります。
インポート関数(.ex4と.dllの両方共)に渡される引数はデフォルト値を持つ事が出来ます。


インポート関数の引数へ渡せないもの
 ・ポインタ(*)
 ・動的配列


DLLからのインポート関数は、
クラス・文字列配列・複雑なオブジェクト(文字列・動的配列)を引数として渡す事は出来ません。


サンプルソース:
#import "user32.dll"
    int    MessageBoxW(uint hWnd,string lpText,string lpCaption,uint uType);
#import "stdlib.ex4"
    string ErrorDescription(int error_code);
    int    RGB(int red_value,int green_value,int blue_value);
    bool   CompareDoubles(double number1,double number2);
    string DoubleToStrMorePrecision(double number,int precision);
    string IntegerToHexString(int integer_number);
#import "ExpertSample.dll"
    int    GetIntValue(int);
    double GetDoubleValue(double);
    string GetStringValue(string);
    double GetArrayItemValue(double &arr[],int,int);
    bool   SetArrayItemValue(double &arr[],int,int,double);
    double GetRatesItemValue(double &rates[][6],int,int,int);
#import

MQL4プログラムのインポート関数の実行は事前事前バインディングが使用されます。
これはex4プログラムのロード時にライブラリをロードする事を意味します。


ロードモジュールを絶対パス("G:\Program Files\FXCM MetaTrader 4\MQL4\Libraries"等)付きで記述する事はお勧めしません。
MQL4ライブラリは"ターミナルディレクトリ\MQL4\Libraries"フォルダからロードされます。
スポンサーリンク



Copyright ©2015 MT4でEA自作しちゃお〜 All Rights Reserved.


Top

inserted by FC2 system