私のアプローチコアはエンジンです。 - ページ 99

 
Реter Konow:
つまり、ユーザーパラメータの値を変更するたびに、この値をユニファイド変数に変換して、すぐに共有バイト配列に保存し、それをuintに変換してリソースに書き込む必要があるのです。

ユニオン構造体の中にユーザーパラメータを入れる必要があります。パラメータを変更すると,同時にint配列も変更され,構造体が変更されます

union c
{
  uint i[2];
  long width;
}cc;
 
cс.width = 200;

i[2]は他のプログラムによって読み込まれるユーザリソースである。

cc.width = 200の1行で変更されます。

  1. 幅を担当するパラメータ。
  2. このパラメータを含む構造体。
  3. 相手プログラムが読み込んでいるリソースの配列。

また、ここでは変換やコピーは行わず、マッピングを行うだけです。
 
Vasiliy Sokolov:


Connection Propertiesファイルのラッパー関数を変更して、使える値をそれぞれユニオンから対応する変数に変換して、その場でバイト配列にすることができるんだ。ただし、テキスト値も渡す必要があるため、StringToChar() でバイト配列に変換する必要がある。

しかし、これではユニオンを使う意味が無くなってしまいます。結局のところ、どうせStringToChar() を使わなければならないのなら、すべてを文字列に組み立ててから、StringToChar() を使って文字列全体をバイトに変換してはどう だろう。

 
Vasiliy Sokolov:

ユニオン構造体の中にユーザーパラメータを入れる必要があります。パラメータを変更すると,同時にint配列の構造も変更されます

i[2]は他のプログラムによって読み込まれるユーザリソースである。

cc.width = 200の1行で変更されます。

  1. 幅を担当するパラメータ。
  2. このパラメータを含む構造体。
  3. サードパーティプログラムが読み込むリソースの配列。

そして、ここでは変換もコピーもせず、マッピングするだけです。

ワシリー、双方向のコミュニケーションの話をしてることを忘れてないか?私のエンジンでは、すべてをユニオンに結びつけることはできても、ユーザーコードに責任を持つことはできません。ラッパーを思いついて、プラグインに入れるくらいしかできない。

ユーザーもユニオンを使うという保証はどこにあるんだ?そのため、彼が私のラッパー関数を呼び出すとき、私は彼の値を自分で受け取り、彼のプラグインファイル内の私のユニオンから私の変数の1つにキャストしなければならないのです。

 
Реter Konow:

Connection Propertiesファイルのラッパー関数を変更して、使える値をそれぞれユニオンから対応する変数に変換して、その場でバイト配列にすることができるんだ。ただし、テキスト値も渡す必要があるため、StringToChar() でバイト配列に変換する必要がある。

しかし、これではユニオンを使う意味が無くなってしまいます。結局のところ、どうせStringToChar() を使わなければならないのなら、すべてを文字列に組み立ててから、StringToChar() を使って文字列全体をバイトに変換してはどう だろう。

二重の構文解析をすることになるからです。すべてを文字列に変換することになり、非常に時間がかかります。そして、文字列を配列にパースするのですが、これが非常に速いのです。そして、それを文字列に戻して組み立てるのですが、これが非常に速いんです。そして、その文字列を正しい型にパースするのですが、これが非常に時間がかかります。

 
Реter Konow:

しかし、テキストはどうでしょうか?

StringToChar() でバイトに変換する必要があります。ユニオンは使えませんよね?

確かに翻訳する必要はありますが、パースと違って速いですからね。

 

例えば、こんな感じです。

以下は、Connection Properties プラグインファイルのラッパー関数です。

string E_Last_10_bars_2_Close_price(string n = rare_value,  int Property = -1){return(GET_N_SET(11,n,Property));}

この機能は、次のように呼び出されます。

E_Last_10_bars_2_Close_price(Close[2]);

つまり、ユーザーはテーブルのセルにClose[2] の値を設定する。

Close[2] - это значение дабл.

したがって、彼のプログラムのラッパー関数内では、値(Close[2])をchar配列として表現することができます。

しかし、同じセルで、ユーザーが「こんにちは! :)」という値を送ることができます。では、どうすればいいのでしょうか?

E_Last_10_bars_2_Close_price("Привет! :)");
 
 

ああ、ピーター、君はプログラミング言語を間違えて始めたんだね。厳密な打ち込みではないものを学ぶべきでしたね。

一般的には、MQLをベースに独自の非定型言語を発明されたと理解しています。文字列を使うことで、その厳しい型付けを回避したのですね。これぞマヌーバ!

 
Vasiliy Sokolov:

ああ、ピーター、君はプログラミング言語を間違えて始めたんだね。厳密な打ち込みではないものを学ぶべきでしたね。

一般的には、MQLをベースに独自の非定型言語を発明されたと理解しています。文字列を使うことで、その厳しい型付けを回避したのですね。これぞマヌーバ!

うん、))ナイトを使った一手!

 

表を使用する場合、表のデータを厳密に数値にするか、テキストにするかを決めなければなりません。テキストなら文字列で渡す。もしそれが本物なら、あなたの関数はこうなるに違いない。

string E_Last_10_bars_2_Close_price(double n,  int Property = -1){return(GET_N_SET(11,n,Property));}