- FileSelectDialog
- FileFindFirst
- FileFindNext
- FileFindClose
- FileIsExist
- FileOpen
- FileClose
- FileCopy
- FileDelete
- FileMove
- FileFlush
- FileGetInteger
- FileIsEnding
- FileIsLineEnding
- FileReadArray
- FileReadBool
- FileReadDatetime
- FileReadDouble
- FileReadFloat
- FileReadInteger
- FileReadLong
- FileReadNumber
- FileReadString
- FileReadStruct
- FileSeek
- FileSize
- FileTell
- FileWrite
- FileWriteArray
- FileWriteDouble
- FileWriteFloat
- FileWriteInteger
- FileWriteLong
- FileWriteString
- FileWriteStruct
- FileLoad
- FileSave
- FolderCreate
- FolderDelete
- FolderClean
FileOpen
この関数は、指定された名称とフラグでファイルを開きます。
int FileOpen(
|
パラメータ
file_name
[in] ファイルの名称はサブフォルダを含むことが出来ます。ファイルが書き込み用に開かれている場合は、存在しないサブフォルダは作成されます。
open_flags
[in] ファイル操作のモードを決めるフラグの組み合わせフラグは次の通りです。
FILE_READ - ファイルが読み込みのために開かれる
FILE_WRITE - ファイルが書き込みのために開かれる
FILE_BIN - バイナリ読み書きモード(文字列から/への変換はなし)
FILE_CSV - csv ファイル(unicode または ansi 文字列への変換され区切り文字で区切られる)
FILE_TXT - 単純なテキストファイル( csv と同じだが区切り文字がない)
FILE_ANSI - ANSI 文字列( 1 バイト文字)
FILE_UNICODE - UNICODE 文字列(2 バイト文字)
FILE_SHARE_READ - 複数プログラムから読み込まれる
FILE_SHARE_WRITE - 複数プログラムから書き込まれる
FILE_COMMON - 全てのクライエント端末に共通なファイルの位置( \Terminal\Common\Files )
delimiter='\t'
[in] txt または csv ファイルでセパレータとして使用される値。csv ファイルのデリミタが指定されていない場合、デフォルトはタブです。txt ファイルのデリミタが指定されていない場合、セパレータは使用されません。セパレータが明らかに 0 に設定されている場合、セパレータは何も使用されません。
codepage=CP_ACP
[in] コードページの値。よく使用される コードページ では定数が提供されています。
戻り値
ファイルが正常に開かれた場合、この関数は、ファイルデータのアクセスに使用されるファイルハンドルが返されます。失敗した場合 INVALID_HANDLE を返します。
注意事項
セキュリティ上の理由から、MQL5 言語ではファイルの扱いは厳しく制御されています。MQL5 手段を用いて操作されるファイルは、ファイルサンドボックスの外に存在することは出来ません。
ファイルを特定のエンコーディング(コードページパラメータにはコードページ値を指定されます)で読み込む必要がある場合は、FILE_ANSIフラグを必ず設定してください。指定されたFILE_ANSIフラグがない場合、テキストファイルは変換なしでUnicodeで読み込まれます。
ファイルは MQL5\files サブフォルダ(テスト時は testing_agent_directory\MQL5\files )内のクライアント端末のフォルダで開かれます。FILE_COMMON フラグが指定されている場合、ファイルは、全てのメタトレーダー5クライアント端末が使用する共有フォルダで開かれます。
「名前付きパイプ」は以下の規則に従って開くことが出来ます。
- パイプ名は文字列で「\\servername\pipe\pipename」の様な外観を持つべきです。ここで servername はネットワーク内のサーバ名でpipename はパイプ名です。パイプが同じコンピュータ上で使用されている場合はサーバ名は省略出来ますが「\\.\pipe\pipename」のように点を挿入する必要があります。パイプに接続しようとしているクライアントはその名称を知っているべきです。
- FileFlush() 及び FileSeek() は、パイプから読み込み、それへ書き込みという一連の動作の間に、ファイルの先頭に呼び出す必要があります。
特殊記号「\ 」が表示される文字列で使用されています。従って MQL5 アプリケーションで名称を書く際には「\ 」は二重にされるべきです。つまり上の例はコード内では "\\\\servername\\pipe\\pipename" になる必要があります。
名前付きパイプでの作業の詳細は 「Communicating With MetaTrader 5 Using Named Pipes Without Using DLLs」でみられます。
例:
//+------------------------------------------------------------------+
|
参照