Вопросы по ООП в MQL5 - страница 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":"Hi"

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":"Hi"

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":9999999999999999

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+="}";}
};

И еще методы под массивы и массив структур дописать (лень). И, в принципе, можно в кодобазу запускать.

Дарю, кто первый успеет.

PS: Зайду и проверю)))

 
Vladimir Simakov:

Вот так это должно выглядеть, перенос строки лишний, он для наглядности был:

И еще методы под массивы и массив структур дописать (лень). И, в принципе, можно в кодобазу запускать.

Дарю, кто первый успеет.

PS: Зайду и проверю)))

выложите в КБ

имхо, нужная вещь!

json устоявшийся формат, мне удобно иметь возможность на 100% один в один классы в C# и в MQL , и организовать загрузку моделей в рантайм - пока в этом направлении затык

а гонять бинарные данные тудым-сюдым.... ну вроде как уже не новинка и не умеет это делать только ленивый )))


ЗЫ: Питон кажется тож без проблем с json работает, не понятно что дали питонистам Метаквоты своими новыми возможностями МТ5 - тупо выкачать исторические данные? - смысл? это и не было проблемой, имхо

 
Vladimir Simakov:

Вот так это должно выглядеть, перенос строки лишний, он для наглядности был:

И еще методы под массивы и массив структур дописать (лень). И, в принципе, можно в кодобазу запускать.

Дарю, кто первый успеет.

PS: Зайду и проверю)))

А на сколько быстро работает такое создание объекта? На сколько целесообразно его применение? Не будет ли лучше еще один макрос использовать для финиша?  Если конечно стоит задача произвести впечатление, то бесспорно, эффект убойный.

 
Vladimir Simakov:

Вот так это должно выглядеть, перенос строки лишний, он для наглядности был:

проверил в VS , без проблем через буфер обмена {"test":{"a":10,"b":0.369,"t":"Hi"},"a":123456789,"b":9999999999999999}

ставил в редактор:

 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:

А на сколько быстро работает такое создание объекта? На сколько целесообразно его применение? Не будет ли лучше еще один макрос использовать для финиша?  Если конечно стоит задача произвести впечатление, то бесспорно, эффект убойный.

А если надо быстро, то гоняй бинарник, без всяких заморочек. Строка - это стока, можно, конечно, сразу память под N символов выделять. Здесь, единственный оверхэд - это
text==NULL?"{":","

Но, именно это, компилятор обязан оптимизировать и убрать. Для того и инициализируется text(NULL), а не text("{")

 
Vladimir Simakov:
А если надо быстро, то гоняй бинарник, без всяких заморочек. Строка - это стока, можно, конечно, сразу память под N символов выделять. Здесь, единственный оверхэд - это

Но, именно это, компилятор обязан оптимизировать и убрать. Для того и инициализируется text(NULL), а не text("{")

Я вот про это: (CJSon()).V...

 
Dmitry Fedoseev:

Я вот про это: (CJSon()).V...

А в чем проблема, на стеке выделить байт 12 памяти, не знаю, доподлинно, что из себя объект string представляет?