MQL5におけるOOPに関する質問 - ページ 62

 
Dmitry Fedoseev:

最後にとても興味深いことがあります。スチームトレイン」柄ですか?

デミ、ここで引きずってないで落ち着けよ)))

 
Vladimir Simakov:

なんとなく、やり方が悪いような気がする)

PS修正

ウィザード!

効いてる効いてる

void OnStart(){
   CTest test;
   Print("1.-----------------------");
   Print(test.JSon());
   Print("2.-----------------------");
   test.a = 123456789;
   test.b = 9999999999999999;
   Print(test.JSon());
 }

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 1.-----------------------.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) {.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "test":{.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10,

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369,

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "こんにちは"

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":555,

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":-9223372036854775808

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) 2.-----------------------.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) {.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "test":{.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":10,

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":0.369,

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "t": "こんにちは"

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }.

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "a":123456789

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) "b":9999999999999

2020.05.21 20:56:34.192 tst_json (EURUSD,H1) }.


クール!一般的に、この簡単な方法で、以前のようにバイナリデータではなく、単純なオブジェクトをjsonにダウンロードすることができます。

ありがとうございました。

 
Vladimir Simakov:

ディマ、ここでパンチはないだろう、落ち着けよ)))

あなたのクラブには、なんという誇大妄想狂がいるのでしょう。そして、あのキーパーがいた後、誰がここでその話をするのでしょうか。読めるのは自分だけだと思わないか?

それよりも、すべての知恵を完全に使いこなせないことの方が問題です。少しずつ切り落として、人前では誇大妄想で見せびらかす。この知識からそのエリート主義の誇りは、15年前かもしれないが、今、主題とコースの多くの本。

 
Igor Makanu:

ウィザード!

効いてる効いてる


一般的に、この方法では、私が通常行うように、バイナリデータを介してではなく、jsonに単純なオブジェクトをアンロードすることが可能です。

ありがとうございました。

改行は不要で、わかりやすくするためのものです。

#define COMMA (text==NULL?"{":",")
#define VALUE(dVal) Push(#dVal,dVal)
#define STRUCT(dVal) PushStruct(#dVal,dVal.JSon())

class CJSon{
   string text;
public:
   CJSon():text(NULL){}
   CJSon* Push(string key,string value) {text+=COMMA+"\""+key+"\":\""+value+"\""; return &this;}
   CJSon* PushStruct(string key,string value) {text+=COMMA+"\""+key+"\":"+value; return &this;}
   CJSon* Push(string key,long value)   {text+=COMMA+"\""+key+"\":"+(string)value; return &this;}
   CJSon* Push(string key,double value) {text+=COMMA+"\""+key+"\":"+(string)value; return &this;}
   string Finish()   {return text+="}";}
};

また、配列や構造体の配列(lazy)に対するメソッドも追加したいです。また、原理的にはkodobaseで実行することができます。

時間的に最初になる人、提示します。

追記:入って確認します))))

 
Vladimir Simakov:

改行は不要で、わかりやすくするためのものです。

また、配列や構造体の配列に対するメソッドも追加すべきです(怠慢)。そして、原理的にはkodobaseで動作させることが可能です。

時間的に最初になる人、提示します。

PS:入って確認してみます)))。

キュービーに投稿する

イミフ、正しいことだ!

jsonは確立されたフォーマットで、C#とMQLで100%1対1のクラスを持つことができ、実行時にモデルの読み込みを整理することができるので便利です - 今のところこの方向には問題があります

と、あちこちにバイナリデータを渡す...。まあ、目新しさはないし、怠け者にしかできないけど)))


ZS: Pythonもjsonで問題なく動くようです。Metaquotesが新しいMT5の機能でpythonistに何を与えたのかは分かりませんが、単に過去のデータを送り出すだけなのでしょうか?- だからなんだ?

 
Vladimir Simakov:

改行は不要で、わかりやすくするためのものです。

また、配列や構造体の配列に対するメソッドも追加すべきです(怠慢)。また、原理的にはkodobaseで実行することができます。

時間的に最初になる人、提示します。

追記:入って確認します))))

また、そのようなオブジェクトの作成は、どれくらいのスピードで行われるのでしょうか?その適用がどれほど好都合か。もちろん、印象に残ればいいということであれば、その効果は絶大です。

 
Vladimir Simakov:

改行は不要で、わかりやすくするためのものです。

VSで確認、クリップボードで問題なし {"test":{"a":10, "b":0.369, "t": "Hi"}, "a":123456789, "b":999999999999}, "b":99999999, "a":123456789, "b":9999999999" }.

をエディタに入れる。

 public class Rootobject
    {
        public Test test { get; set; }
        public int a { get; set; }
        public long b { get; set; }
    }

    public class Test
    {
        public int a { get; set; }
        public float b { get; set; }
        public string t { get; set; }
    }
 
Dmitry Fedoseev:

このようなオブジェクトの作成は、どのくらいの速度で行われるのでしょうか?どのように役立つのか?仕上げにもう1つマクロを使ったほうがいいのでは? もちろん、印象を良くするための作業であれば、効果は間違いなくキラーです。

すぐに必要な場合は、何も注意することなくバイナリを実行すればよい。文字列はストーカです。もちろん、一度にN文字分のメモリーを確保することができます。ここでは、唯一のオーバーヘッドである
text==NULL?"{":","

しかし、コンパイラが最適化し、除去することが義務づけられているのは、まさにこの点なのです。これは、text(NULL)が初期化されるもので、text("{")ではありません。

 
Vladimir Simakov:
また、高速に必要な場合は、手間をかけずにバイナリを実行すればよい。文字列はストーカです。もちろん、一度にN文字分のメモリーを確保することができます。ここでは、唯一のオーバーヘッドである

しかし、これはコンパイラが最適化して削除することが義務づけられているものです。そのため、text(NULL)が初期化され、text("{")は初期化されません。

これはつまり、(CJSon()).V.

 
Dmitry Fedoseev:

これはつまり、(CJSon()).V....

何が問題なのか、スタックに12バイトのメモリを確保すること、文字列オブジェクトが何なのかよくわからないのですが?