files フォルダ以外の場所を読み書きする。

otoari 2010/03/05 09:37
MT4でファイルの読み書きをすると、エキスパートフォルダの中の
filesフォルダしか読み書きできませんが、これ以外のフォルダ、
例えばCドライブのルートとかのフォルダを自由に指定してファイルの
読み書きを出来るようなことをしたいのですが・・・


ネタ応募ありがとうございます。私は実用的に使った事はないのですが、files フォルダ以外の場所を読み書きするにはいくつか方法があります。


(1) ジャンクションを使い、擬似的に files フォルダ内に存在するようにみせる。
MT4 からは、files 以下にアクセスしているカタチになるので、純正なMQL4 のプログラムだけで完結できます。自分でジャンクションの設定をする必要があるので、配布用のEAには不向きですが、自分専用の自作EAならお手軽な方法です。



(2) WindowsAPI を直接使う。
公式サイトの記事にある「File Operations via WinAPI」や、Code Base内のZhunko氏のZI_File_Functions_Full_Lib辺りを調べると参考になると思います。(ZI_File_Functions_Full_Libはコメント部分がロシア語なので、私がGoogle 翻訳で英語化したモノをCodeBase のコメント欄に置いてあります。)



(3) WindowsAPI をDLL経由で使う。
実質的に(2)と同じなのですが、より使いやすい関数の形になっている..かもしれないのがこの手法です。Forex-TSDのMT4 Files Functions Replacement.に紹介されています。(2)を使いこなすのが難しかったり、DLL自作したい人にお勧めです。DLLのソースコード(VC++)も付属していたと思います。



過去に見聞きした手法はこのくらいですが、参考になりますでしょうか?