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に変換
します。
実際にテストしてみると、
前々回紹介したSQLite3のデーターベースを接続することができました。
まとめ
ANSI型DLLの場合でも内部的にはUNICODEに変換して処理しているので、ANSI型DLLを使用した場合、文字変換を4回行う結果となり、処理能力を下げる結果となります。※追記事項
MQL5からSQLite3への接続には、ラッパーが必要ありません。新しいプロジェクトが誕生したようです。
sqlite-class-for-metatrader5
0 件のコメント :
コメントを投稿