2011/03/31

MQL4で使用していたDLLをMQL5で使用する方法 ■■■

※追記2011/4/3しました。
MQL4で使用していたDLL(ANSI版DLL)は、そのままでは、MQL5で使用できません。原因は、MQL4とMQL5の、文字コードが異なるからです。MQL5は、より高速処理を実現させるために、WINDOWSの内部処理文字コードであるUNICODEを採用しています。そのため、引数をDLLに渡す時や、DLLから戻り値を受け取る際に文字コードエラーが発生します。

MQL5用のUNICODE版DLLの作り方

以下のサイトに簡単な作り方が紹介されている。
How to Exchange Data: A DLL for MQL5 in 10 Minutes

ANSI版DLLをMQL5で使用する方法

先に記述の通り文字コードの互換問題をクリアすればANSI型DLLを使用することが可能です。
方法は、以下のサイトにまとめられていますので参照してくだい。
MQLmagazine.com DLL Hell, MQL5 edition : UNICODE vs ANSI
変換方法は、上記サイトにある【stringlib.mqh】をインクルードし 、
UNICODE2ANSI関数でUNICODEからANSICODEに変換
ANSI2UNICODE関数でANSICODEからUNICODEに変換
します。
実際にテストしてみると、
kodee
前々回紹介したSQLite3のデーターベースを接続することができました。

まとめ

ANSI型DLLの場合でも内部的にはUNICODEに変換して処理しているので、ANSI型DLLを使用した場合、文字変換を4回行う結果となり、処理能力を下げる結果となります。

※追記事項
MQL5からSQLite3への接続には、ラッパーが必要ありません。
新しいプロジェクトが誕生したようです。
sqlite-class-for-metatrader5

0 件のコメント :