MQL5의 OOP에 대한 질문 - 페이지 62

 
Dmitry Fedoseev :

마지막으로 매우 흥미로운 것이 있습니다. 이것이 '증기열차' 패턴인가?

디마, 여기로 끌지 말고 진정해)))

 
Vladimir Simakov :

어떻게 든 당신은하지 않습니다.)

추신 수정

마법사!

작동합니다!

 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) 하나.-----------------------

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

2020.05.21 20:56:34.192 tst_json(EURUSD,H1) "시험":{

2020.05.21 20:56:34.192 tst_json(EURUSD,H1) "아":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) "티":"안녕하세요"

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

2020.05.21 20:56:34.192 tst_json(EURUSD,H1) "아":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) "시험":{

2020.05.21 20:56:34.192 tst_json(EURUSD,H1) "아":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) "티":"안녕하세요"

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

2020.05.21 20:56:34.192 tst_json(EURUSD,H1) "아":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+= "}" ;}
};

그리고 배열과 구조 배열을 위한 메소드를 추가하십시오(너무 게으름). 그리고 원칙적으로 코드 베이스에서 실행할 수 있습니다.

먼저 도착하는 사람에게 주겠습니다.

추신: 가서 확인하겠습니다))))

 
Vladimir Simakov :

이것은 다음과 같이 보일 것입니다. 줄 바꿈은 불필요합니다. 명확성을 위한 것입니다.

그리고 배열과 구조 배열을 위한 메소드를 추가하십시오(너무 게으름). 그리고 원칙적으로 코드베이스에서 실행할 수 있습니다.

먼저 도착하는 사람에게 주겠습니다.

추신: 가서 확인하겠습니다))))

KB에 넣어

IMHO, 필요한 것!

json은 잘 정립된 형식이며 C# 및 MQL에서 100% 일대일 클래스를 가질 수 있고 런타임에 모델 로드를 구성할 수 있어 편리합니다. 지금은 이 방향으로 연결합니다.

하지만 여기 저기 바이너리 데이터를 구동하려면 .... 글쎄, 그것은 더 이상 참신하지 않고 게으른 사람들 만이 할 수없는 것 같습니다))))


추신: Python은 json에서도 문제 없이 작동하는 것 같습니다. Metaquotes가 pythonists에게 새로운 MT5 기능을 제공한 것이 확실하지 않습니다. 어리석게도 과거 데이터를 펌핑합니까? - 의미? 문제가 아니었어

 
Vladimir Simakov :

이것은 다음과 같이 보일 것입니다. 줄 바꿈은 불필요합니다. 명확성을 위한 것입니다.

그리고 배열과 구조 배열을 위한 메소드를 추가하십시오(너무 게으름). 그리고 원칙적으로 코드 베이스에서 실행할 수 있습니다.

먼저 도착하는 사람에게 주겠습니다.

추신: 가서 확인하겠습니다))))

그리고 그러한 객체 생성이 얼마나 빨리 작동합니까? 그 용도는 얼마나 적절한가? 마무리를 위해 다른 매크로를 사용하는 것이 좋지 않을까요? 물론 작업이 감동을 주는 것이라면 의심의 여지 없이 그 효과는 치명적입니다.

 
Vladimir Simakov :

이것은 다음과 같이 보일 것입니다. 줄 바꿈은 불필요합니다. 명확성을 위한 것입니다.

VS에서 확인, 클립보드 {"test":{"a":10,"b":0.369,"t":"Hi"},"a":123456789,"b":99999999999999}를 통해 문제 없음

편집기에 넣어:

 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("{")가 아닌 text(NULL)가 초기화되는 이유입니다.

 
Vladimir Simakov :
그리고 빨리 해야 한다면 문제 없이 바이너리를 구동하세요. 문자열은 드레인입니다. 물론 N 문자에 대한 메모리를 즉시 할당할 수 있습니다. 여기서 유일한 오버헤드는

그러나 컴파일러가 최적화하고 제거해야 하는 것은 바로 이것입니다. 이것이 text("{")가 아닌 text(NULL)가 초기화되는 이유입니다.

나는 이것에 대해 이야기하고 있습니다 : (CJSon()).V...

 
Dmitry Fedoseev :

나는 이것에 대해 이야기하고 있습니다 : (CJSon()).V...

그리고 문제는 스택에 메모리의 바이트 12를 할당합니다. 문자열 개체가 무엇인지 확실하지 않습니까?