ライブラリ: メモリマッピング

 

メモリマッピング:

メモリマッピングファイル操作のDLL (MS VC++ 2010) 。

作者: o_O

 

誰かの役に立つかもしれない:

または、RAMディスクを作成し、そこにファイルを置くこともできます。RAMディスクとは、コンピュータのRAMにある仮想ディスクのことです。

私はこのようなソフトを使ってラムディスクを作成していますhttp://ramdisk.nm.ru/ramdiskent-rus.htm

 

全部MQLに書き込んで、DLLなしで使えるようになればいいのに。

アレックス、ありがとう。

 
Urain:

これをMQLに実装して、DLLなしで使えるようになればいいのだが。

残念なことに、すべての問題はMapViewOfFileという 1つの関数にある。 これはポインターを返すので、MQLで直接使うことはできない...配列にポインターを持ってくることはできないのだ。

他の関数(CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandleの4つしかない)は呼び出すことができる。
。しかし、このMapViewOfFileだけは、MQLからマッピングを直接使って完全に機能する作品を作る機会を与えてくれなかった。残念なことに、私も本当に自作のDLLなしでやりたかったのだ。

 
sergeev:

残念なことに、すべての問題はMapViewOfFileという 1つの関数にある。 この関数はポインタを返すので、MQLで直接使うことはできない。配列にポインタを持ってくることはできないのだ。

他のすべての関数(CreateFileMapping、OpenFileMapping、UnmapViewOfFile、CloseHandleの4つしかない)は呼び出すことができる。
。しかし、このMapViewOfFileだけは、MQLからマッピングを直接使って完全に機能する作品を作る機会を与えてくれなかった。残念なことに、私自身も自作のDLLなしでやりたかった。

実は、あなたではなく、MQの開発者へのメッセージなのですが、この問題は古く、その解決策は明らかに需要があります。

ZY 私も同じような目的で、イベント経由で配列にポインタを渡す関数を書きました(ただしMTの内部で)。

 
Urain:

この問題は古く、その解決策が求められているのは明らかだ。

そうそう、必要なものは必要なんだ。

コンバーター関数を作成するために何かをしたことがありますか?

例えば、あるdll関数がポインタを返すとする。たいていの場合、それは何らかの構造体へのポインタだろう。

そして次の作業は、この構造体からデータを取り出すことだ。構造体のサイズはわかって いるので、まずこのポインタをchar配列へのポインタに変換することができる。

ポインタを渡す中間DLL関数を使えば 、ポインタがこのchar配列を返すのだろうか?
さて、次にこのchar配列を単純に=構造体に転送する。

このようなDLLの関数の一種を紹介しよう。

void Convert(char *_in, char *_out) { _out=_in; }

mqlからこのように呼び出されます。

// 例えば、api関数はデータ構造へのポインタを返した。
int ptr=ФункцияИзАпи(); // へのポインタ ДанныеИзАпи

struct ДанныеИзАпи
{
  // apiからのデータ構造 16バイト
};

struct refData
{
 char byte[16]; // 同じ構造体のイメージ。 
};

refData ref;

Convert(ptr, ref.byte); // 配列へのポインタを変換

ДанныеИзАпи data=ref; // 単純なコピーによって構造体のフィールドを埋める

追記
memcpyというのを思いついたんだけど、これもポインタでコピーする。
 
そうだ。memcpyは 機能する !そしてstrcpyと組み合わせることで、文字列さえも 正しく処理することが可能だ!

、直接機能するかもしれない!
 

またひとつ、MKに有利な石が増えた。

なぜこんなにいじくり回すのか?

自分たちの番組が本当に顔を台無しにするのだろうか?

 
Urain:

実際、これはあなたに対する恨みではなく、MQ開発者へのメッセージであり、問題は古く、その解決策は明らかに需要があります。

問題は解決され、自作DLLを使わないMQL5のバイブルは無事に作成され、テストされました。

すでに出版用に送りました :)

 
her.human:

またひとつ、MKに有利な石が増えた。

なぜこんなにいじくり回すのか?

彼ら自身のプログラムが本当に顔を台無しにするのだろうか?

MQ5/EX5プログラムは非常に簡単に配布され、厳密なセキュリティ管理なしではユーザーに取り返しのつかない損害を与えかねない。

そのため、MQL5 アプリケーション言語は保護され、危険な関数を呼び出す機能はなく、独自のサンドボックスで動作するように作成されています。機能を拡張するためにDLLライブラリとの統合があります。

 
Renat:

MQ5/EX5プログラムは非常に配布しやすく、厳密なセキュリティ管理なしではユーザーに取り返しのつかない損害を与える可能性があります。

そのため、MQL5 アプリケーション言語は保護されるように設計されており、危険な関数を呼び出す機能はなく、独自のサンドボックスで動作します。機能を拡張するためのDLLライブラリとの統合もあります。

マーケットについてはどうですか?

それとも勝利のDLLはマーケットで許可されるのでしょうか?

一般的に、私はその答えを知っています。だからこそ、この実装をMQL5標準にすることを提案したのです。