MQL4에서 dll로 2차원 배열 전달 - 페이지 3

 
TheXpert :
MQL4에는 다차원 배열이 없습니다. 1차원으로 전송, 가장 중요한 것은 크기를 올바르게 계산하고 전송하는 것입니다.

int 배열 크기 조정 ( 개체 및 배열[], int new_size)
배열의 첫 번째 차원에서 새 크기를 설정합니다. 성공하면 이 함수는 크기 조정 후 배열에 포함된 모든 요소의 수를 반환하고, 그렇지 않으면 -1을 반환하고 배열 크기가 조정되지 않습니다.
참고: 크기가 조정된 함수에서 로컬로 선언된 배열은 함수가 종료된 후에도 변경되지 않은 상태로 유지됩니다. 함수가 다시 호출 되면 이러한 배열은 선언된 배열과 다른 크기를 갖게 됩니다.
옵션:
정렬[] - 크기를 조정할 배열입니다.
new_size - 첫 번째 측정을 위한 새 크기입니다.
예시:
 이중 배열1[][4];
int element_count=ArrayResize(배열1, 20);
// 새로운 크기 - 80개 요소


이것은 도움말의 인용문이자 MQL에서 모든 어레이가 1차원이라는 사실에 대한 게시물 작성자의 동시 답변입니다.

 
Debugger :

이것은 도움말의 인용문이자 MQL에서 모든 어레이가 1차원이라는 사실에 대한 게시물 작성자의 동시 답변입니다.

이것은 1차원 배열 위에 있는 함수입니다. 그렇지 않으면 증명해보십시오.
 
왜 바퀴를 재발명하고 C++ 개발자보다 더 똑똑하게 들리려고 합니까?
 
Debugger :
왜 바퀴를 재발명하고 C++ 개발자보다 더 똑똑하게 들리려고 합니까?

우리가 생각하는 것과 실제로 존재하는 것은 다른 경우가 매우 많으며, 다른 사람을 위해 생각하려고 할 때는 더욱 그렇습니다!

Vadim이 "개발자보다 더 똑똑해 보이는" 것보다 더 나은 것이 없다고 정말로 생각하십니까? 이 사람이 그런 환상을 가질 줄 얼마나 잘 압니까?! 이렇게 왜곡된 세상에서 살기가 무서웠을텐데... :)))

그리고 누군가가 이전에 다른 사람들이 만든 것을 변경/완성/리메이크하는 경우 - 이것은 그의 완전한 권리입니다! 정상입니다 - "변화하는 세상에서 처짐"으로 받아들여지는 것과는 대조적으로, 스스로 세상을 바꾸는 것입니다... ;)

 

그런 "자전거"가 어디에 있는지 궁금합니다. :-))

글을 쓰기 전에 모든 것을 살펴보았습니다. 버스 안에서도 그런 일은 없다. C++는 말할 것도 없고, STL에도 그런 내용이 없습니다.

그건 그렇고, 이 문제에 대한 완전한 해결책은 없습니다. 자세히 설명하지는 않겠지만 C++로는 이 문제를 해결하기에 충분하지 않습니다.

Vingrad에 문의했습니다. 좋은 프로그래머가 있습니다. 그들은 과제를 배우자마자 특정 문제를 즉시 예측했습니다. 물론 거의 모두 대처했습니다. 기본적으로 해결되지 않은 채로 남아 있습니다. 이는 인덱싱 연산자 "[]"를 통해 배열의 내용으로 작업하는 것과 관련된 문제입니다. 인터넷상의 아무도 이것을 하는 방법을 모릅니다. 목발을 만들었습니다. 이제 "[]" 연산자로 거의 완벽하게 작업할 수 있지만 마지막 차원에서 특정 인덱스 유형을 제공해야 합니다(이를 수행하는 것을 잊어버리기 쉽고 컴파일러에서 경고하지 않음). 그런 다음 []를 통해 인덱싱된 일반 다차원 배열 처럼 작동합니다. 즉, 이 연산자는 다른 유형의 인덱스로 4번 오버로드됩니다. 하나의 오버로드는 이전 [] 문으로 선형 인덱스를 마지막으로 계산한 셀의 내용을 반환합니다. 나머지 오버로드는 [] 연산자를 다시 사용할 수 있도록 개체를 반환합니다. 어떤 경우에는 마지막으로 액세스한 셀의 내용을 반환하는 캐스트 연산자가 실행됩니다. 어떤 경우에는 이것이 작동하지 않습니다. 프로그램이 제대로 작동하지 않는 후에야 알게 되는 문제가 있을 수 있습니다. 어떤 경우에는 컴파일러가 도움이 됩니다. 기타 - 가능한 사용자 오류를 발생시키는 예외. 모든 경우를 예견하려고 했습니다.

주요 문제는 다음과 같습니다.

a[ 0 ][ 1 ][ 2 ] = a[ 0 ][ 1 ][ 3 ] + a[ 0 ][ 5 ][ 2 ] / a[ 0 ][ 8 ][ 12 ]; // Здесь на всякий случай надо в последнем измерении использовать тип _SIZE_T. Для логических операций тоже надо.

at() 메서드가 있습니다. "[]" 연산자를 완전히 대체합니다.

클래스는 다중 스레드 응용 프로그램에서 작동하는 중요한 섹션으로 보호됩니다.

 
Zhunko :

아니, 내 힘을 넘어서서 조용히 읽을 수 없습니다.

당신은 멍청한 자전거 타는 사람입니다. 가장 간단한 구현은 라인 크기가 100인 mql5(!)에 얼마 전에 배치되었습니다.

 
TheXpert :

아니, 내 힘을 넘어서서 조용히 읽을 수 없습니다.

당신은 멍청한 자전거 타는 사람입니다. 가장 간단한 구현은 라인 크기가 100인 mql5(!)에 얼마 전에 배치되었습니다.

보풀이 있습니다.
 
Zhunko :
보풀이 있습니다.

그래, 위대한 구루 Vadim만이 헛소리가 아니다. 그의 얼굴 앞에 무릎을 꿇어라.

어휴... 교육을 덜 받은 사람들이 CSF가 가장 큽니다. msdn과 help 사용법을 배웠고 1000줄 이상을 썼습니다. 나는 어디선가 싱글톤과 XP라는 단어를 들었습니다. 패턴과 프로그래밍 방법을 알고 있습니다. 나는 내 무릎에 뱀의 눈을 멀게했습니다 - 예, 나는 디자이너 쇼 피펫입니다 ...

부끄럽게도 친구야, 소년이 아닌 것 같다.

 
바딤! SUCH("바보 그 자신") 수준의 "대화 주의자 와" 논쟁에 시간을 낭비하는 데 관심이 있습니까 ???
 
TheXpert :

그래, 위대한 구루 Vadim만이 헛소리가 아니다. 그의 얼굴 앞에 무릎을 꿇어라.

으아아아아아아아아ㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏㅏ" msdn과 help 사용법을 배웠고 1000줄 이상을 썼습니다. 나는 어디선가 싱글톤과 XP라는 단어를 들었습니다. 패턴과 프로그래밍 방법을 알고 있습니다. 나는 내 무릎에 뱀의 눈을 멀게했습니다 - 예, 나는 디자이너 쇼 피펫입니다 ...

부끄러운 일이야, 친구야, 소년이 아닌 것 같아.


Andrey, 글쎄요, 당신은 당신이 슈퍼 프로그래머라는 것을 보여주지 않았습니까? 문제를 어떻게 해결했는지 설명하는 것으로 시작하십시오. 나는 내가 결정한 것을 썼다. 이제 당신은 말한다. 그러면 우리는 함께 당신의 망상을 분석할 것입니다.

다시 한번 말씀드리지만 저는 프로그래머가 아닙니다. 나는 그 위에 있다.

============

그건 그렇고, 나는 1000 라인 미만의 프로젝트 가 없습니다. 보통 10배 이상. 이 클래스(기본)는 5110줄 + 2 x 2500줄로 상속된 클래스입니다. 이것은 프로젝트에서 사용된 12개의 유사한 것을 세지 않은 것입니다.