異なる端末で動作する2つのEA間のデータ交換 - ページ 8

 
zhuki >>:

В личке

ありがとうございます。

 
これはソースコードでもDLLでもありません。これは、1週間以上かけて書いたフレーム付きDLLソースヘッダです。マッピングのためのクラスを書くのに1週間かかりました。主に構造化を考えるため。
しかも、60個の関数を書くのに60分もかかっている。各機能には数行があります。

//| 一般的な機能

//|
/// ファイルに割り当てられたメモリのサイズを事前に変更することが可能である.ファイルマッピングが存在しない場合、作成される。
関数 //| は、成功すればファイルマッピングシステムディスクリプタを返し、そうでなければ NULL を返す。
//| HANDLE FileMappingCreate(const int hFileUser, // ユーザのファイルシステム記述子.
//| const char *szNameFileMapping, //投影されるファイルの名前。
//| const int nBytes); // ファイルマッピングのために確保するメモリ量.

//| 2.この関数は、ファイルマッピングを開きます。この関数は、成功すればファイルマッピングシステムディスクリプタを返し、そうでなければ NULL を返す。
//| HANDLE FileMappingOpen(const char *szNameFileMapping); //投影するファイルの名前を指定します。

//| 3.この関数は、ファイルマッピングをその名前でクリアします。
//| Function returns: 1 successful completion;
//| 0 other errors; |
//| -1 initial address not received;
//| -2 memory not cleared;
//| -3 file mapping failure.
//| int FileMappingClear(const char *szNameFileMapping); // ファイルマッピング名.

//| 4.この関数は、ファイルマッピングをその名前でクローズします。この関数は、成功すれば TRUE を、そうでなければ FALSE を返します。
//| bool FileMappingClose(const char *szNameFileMapping); //ファイルマッピングの名前。

呼び出し元プロセスのアドレス空間における投影ファイルのファイルマッピング表現にアクセスするための ///汎用関数である。

//| 5.この関数は,ユーザのファイルディスクリプタおよび/またはファイルマッピング名によってファイルマッピングを作成し,そのために割り当てられたメモリの
//| サイズをあらかじめ変更し,投影されたファイル表現を呼び出し元プロセスのアドレス空間にマッピングする機能を提供する.
関数 //| は,成功すればマッピングメモリ領域の最初のバイトへのポインタを返し,そうでなければ NULL を返す.
//| char *FileMappingCreateViewOfFile(const int hFileUser, // // ///ユーザファイルのシステムディスクリプタ.
//| const char *szNameFileMapping, //投影されるファイルの名前。
//| const int nBytes); // ファイルマッピングのために確保するメモリ量.

//| 6.この関数は、その名前でファイルマッピングを開き、投影されたファイルの表現を呼び出しプロセスのアドレス空間にマッピングします。
//| 成功した場合は投影されたファイル表現のマッピングメモリ領域の先頭バイトへのポインタを返し,そうでない場合は NULL を返す.
//| char *FileMappingOpenViewOfFile(const char *szNameFileMapping); // 投影されたファイルの名前を指定する。

//| 7.この関数は、投影されたファイルの表現を呼び出し元プロセスのアドレス空間にマッピングします。
関数 //| は、成功時に TRUE を、エラー時に FALSE を返す。
//| bool FileMappingViewOfFile(const char *pcAddress); //
// // 関数 FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile() が返す投影ファイル表現のメモリ領域の最初のバイトへのポインタを指定します.

//| 8.この関数は、呼び出し元プロセスのアドレス空間への投影ファイルの提示をキャンセルします。
//| この関数は、成功すれば TRUE を、エラーなら FALSE を返します。
//| bool FileMappingUnViewOfFile(const char *pcAddress); // 投影ファイル表現のメモリ領域の最初のバイトへのポインタ、
// // FileMappingCreateViewOfFile(), FileMappingOpenViewOfFile() によって返される。



//| ファイルマッピングに数値や文字列を書き込む関数 //| 9.説明: ファイルマッピングを開き、メモリ上の指定されたバイトから論理的な BOOL 値を書き込む。
//| ファイルマッピングが存在しない場合、作成されます。INT 型の数値を BOOL 型に変換し、ファイルマッピングに書き込む関数です。
//|
//| 0 その他のエラー;
//| -1割り当てられたメモリより 多くのデータ;
//| -2 初期アドレスを受け取っていない;
//| -3 メモリに値が書き込まれていない;
//| -4 ファイルマッピングの失敗.
//| int FileMappingWriteBoolValue(const char *szNameFileMapping, //プロジェクトファイルのための名前。
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const int nValue); // ファイルマッピングに書き込むべき論理値.

//|10.ファイルマッピングをオープンし、メモリ上の指定されたバイトから CHAR 型の番号をファイルマッピングに書き込む関数です。
//| ファイルマッピングが存在しない場合、作成されます。この関数は,ファイルマッピングに書き込むために INT 数値を CHAR に変換します。
//| Function returns: 1 successful completion;
//| 0 other errors;
//| -1 data number greater than allocated memory;
//| -2 initial address not received;
//| -3 value not written to memory;
//| -4 file mapping failure.
//| int FileMappingWriteCharValue(const char *szNameFileMapping, // projected file 用名前)ファイルマッピングに失敗しました。
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const int nValue); // ファイルマッピングに書き込むべき整数値.

//|11.ファイルマッピングをオープンし、メモリ上の指定されたバイトから SHORT 型の番号をファイルマッピン グに書き込む。
//| ファイルマッピングがない場合、作成されます。この関数は、ファイルマッピングに書き込むために INT 数を SHORT に変換します。
//| Function returns: 1 successful completion;
//| 0 other errors;
//| -1 data number greater than allocated memory;
//| -2 initial address not received;
//| -3 value not written to memory;
//| -4 file mapping failure.
//| int FileMappingWriteShortValue(const char *szNameFileMapping, // projected file 用名前)ファイルマッピングに失敗。
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const int nValue); // ファイルマッピングに書き込む整数値.

//|12.ファイルマッピングをオープンし、メモリ上の指定されたバイトから INT 型の数値をファイルマッピングに書き込む関数です。
//| ファイルマッピングが存在しない場合、作成されます。
//| Function returns: 1 successful completion;
//| 0 other errors; |
//| -1 data quantity is greater than allocated memory;
//| -2 initial address not received;
//| -3 value not write to memory;
//| -4 file mapping failure.
//| int FileMappingWriteIntValue(const char *szNameFileMapping, // projected file 用名前.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const int nValue); // ファイルマッピングに書き込むべき整数値.

//|13.ファイルマッピングを開き、メモリ上の指定されたバイトから FLOAT 型の数値をファイルマッピングに書き込む関数です。
//| ファイルマッピングがない場合、作成されます。この関数は、ファイルマッピングに書き込むために、DOUBLE 数値を FLOAT に変換します。
//| Function returns: 1 successful completion;
//| 0 other errors;
//| -1 data number greater than allocated memory;
//| -2 initial address not received;
//| -3 value not written to memory;
//| -4 file mapping failure.
//| int FileMappingWriteFloatValue(const char *szNameFileMapping, // projected file 用名前).
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const double dValue); // ファイルマッピングに書き込む倍精度の数値.

//|14.この関数は、ファイルマッピングを開き、メモリ上の指定されたバイトから DOUBLE 型の数値をファイルマッピングに書き込む。
//| ファイルマッピングが存在しない場合、ファイルマッピングが作成されます。
//|
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータ;
//| -2 初期アドレスを受け取っていない;
//| -3 メモリに値が書き込まれていない;
//| -4 ファイルマッピングの失敗
//| int FileMappingWriteDoubleValue(const char *szNameFileMapping, //投影ファイルの名前。
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から番号が書き込まれるかを示す。
//| const double dValue); // ファイルマッピングに書き込むための倍精度数.

//|15.説明: ファイルマッピングを開き、メモリ上の指定されたバイトからその中に文字列を書き込む。ファイルマッピングがない場合は、作成されます。
//|
//| 0 その他のエラー;
//| -1 文字列長より書き込む文字数が多い ;
//| -2 割り当てたメモリより文字列長が多い ;
//| -3 開始アドレスを受信しなかった ;
//| -4 メモリ内の値を書き込まなかった ;
//| -5 ファイルマッピングの解除に失敗した
//| int FileMappingWriteString(const char *szNameFileMapping, //| 投写するファイルの名前).
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目から文字列を書き込むかを指定する。
//| const char *szString); // ファイルマッピングに書き込むための文字列。

//| 呼び出しプロセスのアドレス空間に投影されたファイルのファイルマッピング表現に数値や文字列を書き込む関数です。

//|16.この関数は、メモリ上の指定されたバイトから、呼び出し元プロセスの開始アドレス空間のファイルマッピングに論理的な BOOL 値を書き込む。
//| この関数はループの中で使用されることを想定しています。この関数は、ファイルマッピングに書き込むために、INT型の数値をBOOLに変換します。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleBoolValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int nValue); // ファイルマッピングに書き込む論理値.

//|17.この関数は、メモリ上の指定されたバイトから CHAR 型の数値を呼び出し元のプロセス空間の先頭アドレスでファイルマッピングに書き込みます。
//| この関数はループの中で使用されることを想定しています。この関数は,ファイルマッピングに書き込むために INT 数値を CHAR に変換します。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより大きいデータ数;
//| -2 メモリに書き込まれていない値.
//| int FileMappingWriteSimpleCharValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int nValue); // ファイルマッピングに書き込む論理値.

//|18.この関数は、メモリ上の指定されたバイトから、呼び出し元のプロセス空間の先頭アドレスでマッピングされたファイルに SHORT 型の数値を書き込む。
//| この関数はループの中で使用されることを想定しています。この関数は、ファイルマッピングに書き込むために INT 型の数値を SHORT 型に変換します。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleShortValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int nValue); // ファイルマッピングに書き込むための論理値.

//|19.説明: メモリ上の指定されたバイトから INT 型の数値を呼び出し元プロセスの初期空間アドレスのファイルマッピン グに書き込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleIntValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int nValue); // ファイルマッピングに書き込む整数値.
 
//|20.説明: メモリ上の指定されたバイトから、呼び出し元プロセスの初期空間アドレスのファイルマッピングに、FLOAT 型の数値を書き込む。
//| ファイルマッピングに書き込むために、DOUBLE 値を FLOAT に変換する関数です。この関数はループの中で使用することを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleFloatValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const double dValue); // ファイルマッピングに書き込む倍精度数値.

//|21.説明: メモリ上の指定されたバイトから、DOUBLE 型の数値を呼び出し元プロセスの初期空間アドレスでマッピングされたファイルに書き込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleDoubleValue(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const double dValue); // ファイルマッピングに書き込む倍精度数値.

//|22.この関数は、メモリ上の指定されたバイトから、呼び出し元プロセスの初期空間アドレスのファイルマッピングに文字列を書き込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータがある;
//| -2 メモリに値が書き込まれない.
//| int FileMappingWriteSimpleString(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const char *szString); // ファイルマッピングに書き込む文字列を指定する。

//| ファイルマッピングから数値や文字列を読み込む関数です。

//|23.この関数は、ファイルマッピングを開き、そこからメモリ内の指定されたバイトから論理的な BOOL 値を読み取る。
//| ファイルマッピングが存在しない場合、作成されます。この関数は、読み取った値を返し、エラーが発生した場合は FALSE を返す。
//| bool FileMappingReadBoolValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte); // 割り当てられたメモリの先頭から何バイト目から数値を読み込むか。

//|24.この関数は、ファイルマッピングを開き、そこからメモリ上の指定されたバイトから CHAR 型の数値を読み出す。
//| ファイルマッピングがない場合、作成されます。この関数は,読み込んだ値を返すが,エラーが発生した場合は NULL を返す。
//| char FileMappingReadCharValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte); // 割り当てられたメモリの先頭から、数値を読み込むためのバイト数。

//|25.この関数は、ファイルマッピングを開き、そこからメモリ上の指定されたバイトから SHORT 型の数値を読み出す。
//| ファイルマッピングがない場合、作成されます。この関数は,読み込んだ値を返すが,エラーが発生した場合は NULL を返す。
//| short FileMappingReadShortValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte); // 割り当てられたメモリの先頭から何バイト目から数値を読み込むか。

//|26.この関数は、ファイルマッピングをオープンし、そこからメモリ上の指定されたバイトから INT 型の数値を読み出す。
//| ファイルマッピングがない場合、作成されます。この関数は、読み込んだ値を返すか、エラーの場合は NULL を返す。
//| int FileMappingReadIntValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte); // 割り当てられたメモリの先頭から何バイト目から数値を読み込むか。

//|27.ファイルマッピングを開き、メモリ内の指定されたバイトから FLOAT 型の数値を読み込む。ファイルマッピングがない場合は、作成されます。
//| 読み込んだ値を返すか,エラーの場合はNULLを返す.この関数は、ファイルマッピングからFLOAT型の数値をDOUBLEに変換します。
//| double FileMappingReadFloatValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, //ファイルマッピングのための予約メモリ数.
//| const int nStartByte); // 割り当てられたメモリの先頭から何バイト目から数値を読み込むか。

//|28.この関数は、ファイルマッピングを開き、そこからメモリ上の指定されたバイトから DOUBLE 型の数値を読み出すものである。
//| ファイルマッピングが存在しない場合、作成されます。この関数は、読み込んだ値を返すか、エラーの場合は NULL を返す。
//| double FileMappingReadDoubleValue(const char *szNameFileMapping, //投影されるファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte); // 割り当てられたメモリの先頭から何バイト目から数値を読み込むか。

//|29.この関数は、ファイルマッピングを開き、そこからメモリ上の指定されたバイトから1行を読み出す。ファイルマッピングがない場合は、作成されます。
//| この関数は、文字列の先頭へのポインタを返します。
//| エラーが発生した場合、この関数は戻ります。「
//| "Error_2" 初期アドレスを受け取っていない ;
//| "Error_3" メモリからのメッセージを読んでいない ;
//| "Error_4" ファイルマッピング失敗
//| char *FileMappingReadString(const char *szNameFileMapping, //投影ファイルの名前).
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から、文字列を読み込むためのバイト数.
//| const int nLengthString); // 読み込む文字列の長さ(バイト数)。

//| 呼び出しプロセスのアドレス空間に投影されたファイル表現から数値や文字列を読み取るための関数です。

//|30.この関数は、呼び出し元プロセスの初期アドレス空間にマッピングされたファイルから、メモリ内の指定されたバイトから論理BOOL値を読み出す。
//| この関数はループの中で使用されることを想定しています。この関数は、読み取った値を返し、エラーが発生した場合は FALSE を返す。
//| bool FileMappingReadSimpleBoolValue(const char *pcAddress); // 投影ファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータが書き込まれる。

//|31.この関数は、ファイルマッピングを開き、そこから CHAR 型の番号をメモリ上の指定されたバイトから読み出します。
//| この関数はループの中で使用されることを想定しています。この関数は,読み取った値を返すが,エラーが発生した場合は NULL を返す。
//| char FileMappingReadSimpleCharValue(const char *pcAddress); // 投影されたファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き込む。

//|32.ファイルマッピングをオープンし、メモリ上の指定されたバイトから SHORT 型の番号を読み出す関数です。
//| この関数はループの中で使用されることを想定しています。この関数は,読み取った値を返すが,エラーが発生した場合は NULL を返す。
//| short FileMappingReadSimpleShortValue(const char *pcAddress); // 投影されたファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き込む。

//|33.この関数は、ファイルマッピングをオープンし、そこから INT 型の数値をメモリ上の指定されたバイトから読み出します。
//| この関数はループの中で使用されることを想定しています。この関数は、読み込んだ値を返すか、エラーの場合は NULL を返す。
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // 投影されたファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き込む.

//|33.この関数は、ファイルマッピングをオープンし、そこから INT 型の数値をメモリ上の指定されたバイトから読み出します。
//| この関数はループの中で使用されることを想定しています。この関数は、読み込んだ値を返すか、エラーの場合は NULL を返す。
//| int FileMappingReadSimpleIntValue(const char *pcAddress); // 投影されたファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き込む.

//|34.この関数は、ファイルマッピングを開き、そこからメモリ内の指定されたバイトから FLOAT 型の数値を読み出します。この関数はループの中で使用することを想定しています。
//| 読み込んだ値を返すか,エラーの場合はNULLを返す.この関数は、ファイルマッピングからFLOAT型の数値をDOUBLE型に変換します。
//| double FileMappingReadSimpleFloatValue(const char *pcAddress); // 投影ファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き出す.

//|35.この関数は、ファイルマッピングを開き、そこからメモリ内の指定されたバイトから DOUBLE 型の番号を読み出します。
//| この関数はループの中で使用されることを想定しています。この関数は,読み取った値を返すが,エラーが発生した場合は NULL を返す。
//| double FileMappingReadSimpleDoubleValue(const char *pcAddress); // 投影ファイル表現のメモリ領域のバイトへのポインタ
// // そこからデータを書き出す。

//|36.この関数は、ファイルマッピングをオープンし、そこからメモリ上の指定されたバイトから1行を読み出す。この関数はループの中で使用することを想定しています。
//| この関数は、文字列の先頭へのポインタを返します。
//| エラーが発生した場合、この関数は戻ります。「
//| "Error_2" メモリからのメッセージの読み込み失敗
//| char *FileMappingReadSimpleString(const char *pcAddress); // ファイル表現を投影したメモリ領域のバイトへのポインタ
//| // ここからデータの記録を行う.



//|ファイルマッピングに配列を書き込む 関数 //|37説明: ファイルマッピングを開き、メモリ上の指定されたバイトから BOOL 型のデータを持つ配列をそこに書き込む。
//| ファイルマッピングがない場合、作成されます。この関数は,ファイルマッピングに書き込むために INT 配列データを BOOL に変換します。
//|
//| 0 その他のエラー;
//| -1 配列サイズ以上の書き込みセル数;
//| -2 割り当てメモリ以上のデータ数;
//| -3 初期アドレスを受信しなかった;
//| -4 メモリに配列を書き込まなかった;
//| -5 ファイルマッピング失敗
//| int FileMappingWriteBoolArray(const char *szNameFileMapping, // ファイルマッピング用の名称.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列を書き込むまでのバイト数.
//| const int *aiArray, // ファイルマッピングに書き込む論理 BOOL データを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|38.ファイルマッピングを開き、メモリ上の指定されたバイトから CHAR 型のデータを配列として書き込む関数である。
ファイルマッピングがない場合、作成されます。この関数は,ファイルマッピングに書き込むために,INT 配列のデータを CHAR に変換します。

//|
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2 割り当てメモリ以上のデータ数 ;
//| -3 初期アドレスを受信しない ;
//| -4 メモリに配列を書き込まない ;
//| -5 ファイルマッピングに失敗
//| int FileMappingWriteCharArray(const char *szNameFileMapping, // 投影ファイル名.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目の配列を書き込むか.
//| const int *aiArray, // ファイルマッピングに書き込むCHAR型データを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|39.この関数は、ファイルマッピングを開き、メモリ上の指定されたバイトからSHORT型のデータを持つ配列をその中に書き込む。
ファイルマッピングがない場合、作成されます。この関数は,ファイルマッピングに書き込むために,INT 配列のデータを SHORT に変換します。

//|
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2 割り当てメモリ以上のデータ数 ;
//| -3 初期アドレスを受信しない ;
//| -4 メモリに配列を書き込まない ;
//| -5 ファイルマッピングに失敗
//| int FileMappingWriteShortArray(const char *szNameFileMapping, // プロジェクトファイルの名前.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列を書き込むまでのバイト数.
//| const int *aiArray, // ファイルマッピングに書き込む SHORT 型のデータを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.
 
//|40.この関数は、ファイルマッピングを開き、メモリ上の指定されたバイトから INT 型のデータを配列として書き出します。
ファイルマッピングがない場合は、作成されます。

//|
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2割り当てメモリ 以上のデータ数 ;
//| -3 初期アドレスを受信しなかった ;
//| -4 メモリに配列を書き込まなかった ;
//| -5 ファイルのマッピング解除に失敗
//| int FileMappingWriteIntArray(const char *szNameFileMapping, //投影ファイル名).
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列を書き込むまでのバイト数.
//| const int *aiArray, // ファイルマッピングに書き込むINT型データを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|41.ファイルマッピングを開き、メモリ上の指定されたバイトから、FLOAT 型のデータを持つ配列を書き込む関数です。
ファイルマッピングがない場合、作成されます。この関数は,配列データ DOUBLE を FLOAT に変換し,ファイルマッピングに書き出します。

//|
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2 割り当てメモリ以上のデータ数 ;
//| -3 初期アドレスを受信しない ;
//| -4 メモリに配列を書き込まない ;
//| -5 ファイルマッピングに失敗
//| int FileMappingWriteFloatArray(const char *szNameFileMapping, //投影ファイル名.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目の配列が書き込まれるかを示す.
//| const double *adArray, // ファイルマッピングに書き込むFLOAT型データを格納した配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|42.この関数は、ファイルマッピングを開き、メモリ上の指定されたバイトから DOUBLE 型のデータを持つ配列をそこに書き込むものである。
もし //| ファイルマッピングがなければ、作成されます。

//|
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2 割り当てメモリ以上のデータ数 ;
//| -3 初期アドレスを受信しなかった ;
//| -4 メモリに配列を書き込まなかった ;
//| -5 ファイルマッピングのキャンセルに失敗
//| int FileMappingWriteDoubleArray(const char *szNameFileMapping, // 投影ファイルの名前).
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から何バイト目の配列が書き込まれるかを示す.
//| const double *adArray, // ファイルマッピングに書き込むDOUBLE型データを格納した配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//| 呼び出しプロセスのアドレス空間に投影されたファイルのファイルマッピング表現に 配列を書き込む関数

//|43.説明: BOOL 型のデータを持つ配列を、メモリ上の指定されたバイトから呼び出し元プロセスの初期アドレス空間によるファイルマッピングに書き込む。
//| この関数はループの中で使用されることを想定しています。この関数は,ファイルマッピングに書き込むために INT 配列データを BOOL に変換します。
//| 関数の戻り値: 1 正常終了;
//| その他のエラー;
//| -1 配列サイズ以上の書き込みセル数;
//| -2 割り当てメモリ以上のデータ数;
//| -3 メモリに書き込まれていない配列.
//| int FileMappingWriteSimpleBoolArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int *aiArray, // ファイルマッピングに書き込む論理BOOLデータを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|44.説明: メモリ上の指定されたバイトから BOOL 型のデータを持つ配列を呼び出し元プロセスの初期空間 アドレスでマッピングされたファイルに書き込む。
//| この関数はループの中で使用されることを想定しています。この関数は,ファイルマッピングに書き込むために,INT 配列のデータを CHAR に変換します。
//| 関数の戻り値: 1 正常終了;
//| その他のエラー;
//| -1 配列サイズ以上の書き込みセル数;
//| -2 割り当てメモリ以上のデータ数;
//| -3 メモリに書き込まれていない配列.
//| int FileMappingWriteSimpleCharArray(const char *pcAddress, // 投影されたファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int *aiArray, // ファイルマッピングに書き込む CHAR 型データを格納した配列へのポインタを指定.
//| const int nSizeBuffer); // 配列のサイズ.

//|45.説明: メモリ上の指定されたバイトから BOOL 型のデータを持つ配列を呼び出し元プロセスの初期空間アドレスのファイルマッピングに書き込む。
//| この関数はループの中で使用されることを想定しています。この関数は,ファイルマッピングに書き込むために INT 配列のデータを SHORT に変換します。
//| 1 正常終了 ;
//| 0 その他のエラー ;
//| -1 配列サイズ以上の書き込みセル数 ;
//| -2 割り当てられたメモリ以上のデータ数 ;
//| -3 配列がメモリに書き込まれていない.
//| int FileMappingWriteSimpleShortArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int *aiArray, // ファイルマッピングに書き込む SHORT 型のデータを格納した配列へのポインタを指定する.
//| const int nSizeBuffer); // 配列のサイズ.

//|46.この関数は、メモリ上の指定されたバイトから INT 型のデータを持つ配列を、呼び出したプロセス空間の先頭アドレスのファイルマッピングに書き込みます。 |
//| この関数はループの中で使用することを想定しています。
//| Function returns: 1 successful completion;
//| 0 other errors;
//| -1 count of cell to write more than array size;
//| -2 data number more than allocated memory;
//| -3 array not written to memory.
//| int FileMappingWriteSimpleIntArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const int *aiArray, // ファイルマッピングに書き込むべき INT 型データを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|47.この関数は、FLOAT 型のデータを持つ配列を、呼び出し元のプロセス空間のイニシャルアドレスで指定されたメモリ上のバイトからファイルマッピングに書き込みます。
//| この関数はループの中で使用されることを想定しています。この関数は,ファイルマッピングに書き込むために DOUBLE 配列データを FLOAT に変換します。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 配列サイズ以上の書き込みセル数;
//| -2 割り当てメモリ以上のデータ数;
//| -3 メモリへの配列書き込みがない.
//| int FileMappingWriteSimpleFloatArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const double *adArray, // ファイルマッピングに書き込む FLOAT 型のデータを格納した配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|48.説明: メモリ上の指定されたバイトから DOUBLE 型のデータを持つ配列を呼び出し元プロセスの初期空間アドレスで指定されたファイルに書き込む。
//| この関数はループの中で使用されることを想定しています。
//| Function returns: 1 successful completion;
//| 0 other errors;
//| -1 count of cell to write more than array size;
//| -2 data number more than allocated memory;
//| -3 array not written to memory.
//| int FileMappingWriteSimpleDoubleArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| const double *adArray, // ファイルマッピングに書き込むDOUBLE型データを格納した配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//| ファイルマッピングから配列を読み込むための関数です.

//|49.説明: ファイルマッピングをオープンし、そこから BOOL 型のデータをメモリ上の指定されたバイトから配列に読み込む。
If //| ファイルマッピングが存在しない場合、ファイルマッピングが作成されます。

//|
//| -1 割り当てられたメモリより多いデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 開始アドレスを受信できなかった;
//| -4 メモリからのメッセージを読めなかった;
//| -5 ファイルのマッピングをキャンセルできなかった
//| int FileMappingReadBoolArray(const char *szNameFileMapping, //| マッピング中のファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列の書き込みを行うバイト数.
//| int *aiArray, // ファイルマッピングから論理的な BOOL データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.
 
//|50.ファイルマッピングを開き、そこから CHAR 型のデータをメモリ上の指定されたバイトから配列に読み込む関数である。
ファイルマッピングがない場合は、作成されます。

//|
//| -1割り当てられたメモリより 多いデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 スタートアドレスを受信できなかった;
//| -4 メモリからのメッセージを読めなかった;
//| -5 ファイルマッピングの解除に失敗した
//| int FileMappingReadCharArray(const char *szNameFileMapping, // 投影ファイルの名前.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列の書き込みを行うバイト数.
//| int *aiArray, // ファイルマッピングからCHAR型データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|51.説明: ファイルマップを開き、そこから SHORT 型のデータをメモリ上の指定されたバイトから配列に読み込む。
もし //| ファイルマッピングがなければ、作成されます。

//|
//| -1 割り当てられたメモリより多いデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 スタートアドレスを受信できなかった;
//| -4 メモリからのメッセージを読み込めなかった;
//| -5 ファイルマッピングの解除に失敗した。
//| int FileMappingReadShortArray(const char *szNameFileMapping, // 投影ファイルの名前.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列の書き込みを行うバイト数.
//| int *aiArray, // ファイルマッピングから SHORT データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|52.説明: ファイルマップをオープンし、そこから INT 型のデータをメモリ上の指定されたバイトから配列に読み込む。
//| ファイルマッピングがない場合、作成されます。

//|
//| -1 割り当てられたメモリより多いデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 開始アドレスを受信できなかった;
//| -4 メモリからのメッセージを読めなかった;
//| -5 ファイルマッピングのキャンセルに失敗した
//| int FileMappingReadIntArray(const char *szNameFileMapping, //| マッピングするファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から,配列の書き込みを行うバイト数.
//| int *aiArray, // ファイルマッピングから INT 型データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|53.ファイルマップをオープンし、そこから FLOAT 型のデータをメモリ上の指定されたバイトから配列に読み込む関数です。
ファイルマッピングがない場合、作成されます。この関数は,ファイルマッピングの FLOAT 型データを DOUBLE 型に変換し,配列に読み込む。
//|
//| 0 その他のエラー;
//| -1 割り当てられたメモリより多くのデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 開始アドレスを受信しない;
//| -4 メモリからのメッセージを読まない;
//| -5 ファイルマッピングの取り消しに失敗。
//| int FileMappingReadFloatArray(const char *szNameFileMapping, //プロジェクトファイルの名前.
//| const int nMemorySize, // ファイルマッピングのための予約メモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から, // 配列を書き込むためのバイト数.
//| double *adArray, // ファイルマッピングからFLOAT型データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|54.説明: ファイルマッピングを開き、そこから DOUBLE 型のデータをメモリ上の指定されたバイトから配列に読み込む関数である。
//| ファイルマッピングがない場合、作成されます。

//|
//| -1 割り当てられたメモリより多いデータ;
//| -2 受信バッファのサイズが足りない;
//| -3 開始アドレスを受信できなかった;
//| -4 メモリからのメッセージを読めなかった;
//| -5 ファイルマッピングの解除に失敗した
//| int FileMappingReadDoubleArray(const char *szNameFileMapping, //| 投影ファイルの名前.
//| const int nMemorySize, // ファイルマッピングのために確保するメモリ量。
//| const int nStartByte, // 割り当てられたメモリの先頭から, // 配列を書き込むためのバイト数.
//| double *adArray, // ファイルマッピングから DOUBLE データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//| 呼び出し元プロセスのアドレス空間に投影されたファイルのファイルマッピング表現にある配列を読み込む関数。

//|55.説明: BOOL 型のデータを呼び出し元プロセスの初期アドレス空間がマッピングするファイルから、メモリ上の指定されたバイトから配列に読み込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりもデータが多い;
//| -2 受信バッファサイズが足りない;
//| -3 メモリからのメッセージが読み取れなかった.
//| int FileMappingReadSimpleBoolArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む。
//| int *aiArray, // ファイルマッピングから論理的な BOOL データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|56.呼び出し元のプロセス空間の先頭アドレスでマッピングされたファイルから CHAR 型のデータをメモリ上の指定されたバイトから配列に読み込む関数である。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりデータが多い;
//| -2 受信バッファのサイズが足りない;
//| -3 メモリからのメッセージが読み取れなかった.
//| int FileMappingReadSimpleCharArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む.
//| int *aiArray, // ファイルマッピングから CHAR 型データを読み込むための配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.

//|57.この関数は、呼び出し元のプロセス空間の先頭アドレスでマッピングされたファイルから、SHORT 型のデータをメモリ上の指定されたバイトから配列に読み込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりデータが多い;
//| -2 受信バッファのサイズが足りない;
//| -3 メモリからのメッセージが読み取れなかった.
//| int FileMappingReadSimpleShortArray(const char *pcAddress, // ファイル表現を投影したメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む.
//| int *aiArray, // ファイルマッピングから SHORT データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|58.説明: INT 型のデータを、呼び出し元プロセスの初期空間アドレスでマッピングされたファイルから、メモリ上の指定されたバイトから配列に読み込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりもデータが多い;
//| -2 受信バッファのサイズが足りない;
//| -3 メモリからのメッセージが読み込まれていない.
//| int FileMappingReadSimpleIntArray(const char *pcAddress, // 投影ファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む.
//| int *aiArray, // ファイルマッピングから INT 型データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|59.説明: FLOAT 型のデータを、呼び出し元のプロセス空間の先頭アドレスでマッピングされたファイルから、メモリ上の指定されたバイトから配列に読み込む。
//| この関数はループの中で使用されることを想定しています。ファイルマッピングタイプFLOATのデータをDOUBLEに変換して配列に読み込む関数です。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりもデータが多い;
//| -2 受信バッファのサイズが足りない;
//| -3 メモリからのメッセージが読み込まれていない.
//| int FileMappingReadSimpleFloatArray(const char *pcAddress, //| 投影されたファイル表現のメモリ領域のバイトへのポインタ,
//| // そこからデータを書き込む).
//| double *adArray, // ファイルマッピングから FLOAT 型データを読み込むための配列へのポインタ。
//| const int nSizeBuffer); // 配列のサイズ.

//|60.説明: DOUBLE 型のデータを、呼び出し元プロセスの初期空間アドレスでマッピングされたファイルから、メモリ上の指定されたバイトから配列に読み込む。
//| この関数はループの中で使用されることを想定しています。
//| 関数の戻り値: 1 正常終了;
//| 0 その他のエラー;
//| -1 割り当てられたメモリよりもデータが多い;
//| -2 受信バッファのサイズが足りない;
//| -3 メモリからのメッセージが読み込まれていない.
//| int FileMappingReadSimpleDoubleArray(const char *pcAddress, // 投影されたファイル表現のメモリ領域のバイトへのポインタ,
// // そこからデータを書き込む).
//| double *adArray, // ファイルマッピングから DOUBLE 型のデータを読み込むための配列へのポインタ.
//| const int nSizeBuffer); // 配列のサイズ.
 
Zhunko >>:
Это не исходник, и не DLL. Это офрмленный заголовок исходника DLL, на который потратил больше недели. Написание класса для маппинга заняло неделю. В основном на продумывание структурированности.
А само писание 60 функций заняло 60 минут. Там в каждой функции по паре строчек.
とても素敵な図書館です。完成したファイルを共有することはできないのでしょうか?それとも支払いが伴うのでしょうか?
 
Andrei01 >>:
Очень приятная библиотечка. А файлами готовыми Вы не можете поделиться? Или это подразумевает оплату?

まだ完成していません。すべてが進行中です。MQL4では長すぎる記述の誤りを修正し、関数名を編集しています。
テストはまだまだこれからです。このライブラリは、私のToolboxと連携することを目的としているため、保護されています。ソースコードは渡さない。
希望者はレンタルすることができます。:-))
でも、やっぱり、並べたものが一番貴重なんですよね。この記述は、ソースコードよりも重要です。

 
3/4テスト済み。INTを除く符号なし整数用の関数を16個追加する必要があることがわかった。
現時点では、ヘッダーファイルは次のようになっています。
ファイル:
 
終了しました。現在80機能。貯金箱に入れる。おそらく近日中に登場すると思われます。
ヘッダーファイルはこのようになりました。
ファイル:
 
Zhunko: Всё-таки, общение через файлы это не тот инструмент. Не по назначению.
Файлы придуманы для длительного хранения информации. Зачем терзать диск? Для общения есть ОЗУ.

RAMにディスクを作れば(RAMdisk)、ハードディスクが苦にならないし、JavaDevを提供することも一定の意味がある。

そして、ライブラリーに - どうもありがとうございました!!! まさに傑作!!!