mql5 언어의 특징, 미묘함 및 작업 방법 - 페이지 162

 
Nikolai Semko :


문자열이나 동적 배열 또는 클래스 참조를 포함하는 구조 및 클래스의 경우 sizeof()는 손가락을 하늘로 가리킵니다.

이해할 수 있어요 :-)

 
Nikolai Semko :


mql의 문자열 유형은 매우 까다로우며 설명서에 완전히 공개되어 있지 않습니다.
그러나 C 언어에 따르면 char 배열(버퍼)이 문자열 형식으로 래핑되어 있음을 추측할 수 있습니다.
그리고 춤은 그것이 어떻게 작동하는지 이해하는 것으로 시작됩니다))

 
Roman :

mql의 문자열 유형은 매우 까다로우며 설명서에 완전히 공개되어 있지 않습니다.
그러나 C 언어에 따르면 char 배열(버퍼)이 문자열 형식으로 래핑되어 있음을 추측할 수 있습니다.
그리고 춤은 그것이 어떻게 작동하는지 이해하는 것으로 시작됩니다))

C에는 문자열이 없습니다.

 
Maxim Kuznetsov :

문자열이나 동적 배열 또는 클래스 참조를 포함하는 구조 및 클래스의 경우 sizeof()는 손가락을 하늘로 가리킵니다.

이해할 수 있어요 :-)

하지만 왜?
모든 동적 배열의 경우 동적 배열 개체의 크기(MQL5의 경우 52바이트)가 표시됩니다.


 
Nikolai Semko :

C에는 문자열이 없습니다.

나는 이미 가지고 있지만 그것이 우리가 말하는 것이 아닙니다.
예, C에는 char[]이 있습니다. 요점은 mql 문자열로 싸여 있다는 것입니다.

 
Nikolai Semko :

하지만 왜?
모든 동적 배열의 경우 동적 배열 개체의 크기가 표시되며 이는 MQL5에서 52바이트입니다.

무엇을, 누구에게 보여줄 것인가?

52바이트는 독점적으로 내부 장치입니다.

64가 명확하지 않은 이유는 정렬 될 수 있습니다 :-)

 
Roman :

나는 이미 가지고 있지만 그것이 우리가 말하는 것이 아닙니다.
예, C에는 char[]이 있습니다. 요점은 mql 문자열로 싸여 있다는 것입니다.

글쎄, 그것은 분명하다.
문자열 함수 를 전혀 사용하지 않습니다. StringToCharArray 함수를 사용하여 즉시 문자 배열로 변환한 다음 배열로 작업합니다. 경험상 훨씬 효율적입니다.

특히 구문 분석과 관련하여.

 
Maxim Kuznetsov :

무엇을, 누구에게 보여줄 것인가?

52바이트는 독점적으로 내부 장치입니다.

64가 명확하지 않은 이유는 정렬 될 수 있습니다 :-)

아마도 다른 유형의 구조일 것입니다. 예를 들어 5 ulong 및 3 uint입니다. 내부 처리를 위한 시간과 마지막 호출 시간이 있을 수 있습니다. HZ. 이 구조가 무엇을 포함할 수 있는지 결코 알 수 없습니다.

 
Nikolai Semko :

글쎄, 그것은 분명하다.
문자열 함수 를 전혀 사용하지 않습니다. StringToCharArray 함수를 사용하여 즉시 문자 배열로 변환한 다음 배열로 작업합니다. 경험상 훨씬 효율적입니다.

그리고 mql 문자열 아래에 short[] 또는 wchar_t[] 또는 wchar_t*가 있을 가능성이 큽니다.
결국 mql 문자열은 유니코드이고 utf는 2바이트입니다.
그리고 StringToCharArray는 short[]에서 char[]로 변환합니다.

 
Roman :

그리고 mql 문자열 아래에 short[]가 있을 가능성이 큽니다.
결국 유니코드의 mql 행에는 2바이트가 있습니다.
그리고 StringToCharArray는 short[]에서 char[]로 변환합니다.

아니, 알아차렸을 것이다. 어떤 경우에는(유니코드로 작업할 때) 이것이 가능하다는 것을 배제하지는 않습니다. 예를 들어 Java에서 char 유형은 2바이트입니다.
이 JSON 라이브러리 와 char 배열 작업의 두 가지 방법으로 암호화 교환에서 데이터를 구문 분석하려고 했습니다.
그 차이는 속도에서 700(!!!)배인 것으로 밝혀졌습니다. 충격을 받았다. 아마도 JSON의 최상의 구현이 없었을 것입니다.

사유: