라이브러리: DLL 없는 파일 매핑 - 페이지 4

 
sergeev:
sizeof(<Type>)*<Number_Elements>의 긴 변수로 취급하면 모든 것이 잘 작동할 것입니다 :)
그럼 이 클래스는 포인터만 전송하는 데 필요한 건가요? 배열을 한 번에 사용할 수 있다고 생각했는데 :(
 
baramantan:
그럼 이 클래스는 포인터를 전송할 때만 필요한 건가요? 배열을 한 번에 사용할 수 있다고 생각했는데요 :(
무슨 질문인지 알기나 하셨나요? :)
 
sergeev:
sizeof(<Type>)*<Number_Elements>의 긴 변수로 취급하면 모든 것이 잘 작동할 것입니다 :)

void OnStart()
{
CMemMapFile hmem;
int err=hmem.Open("Local\\\\test",111,modeCreate);

int data[];
ArrayResize(data,50);

err=hmem.Write(data,ArraySize(data)*sizeof(int));

ArrayInitialize(data,0);
hmem.Seek(0,SEEK_SET);
err=hmem.Read(data, ArraySize(data)*sizeof(int) );


hmem.Close();
}

제가 제대로 했나요? 그렇지 않다면 무엇이 잘못되었나요?

 

baramantan:

제가 제대로 했나요?
디버그에게 물어보세요. 그는 100% 알고 있습니다.
 
sergeev:
디바그한테 물어봐요. 그는 100% 알아요.

왜 화살표를 움직여서 제 게시물에 응답해야 하나요?

배열을 int 또는 double로 전달하는 방법을 예시로 보여줄 수 있나요?

 

디버그도 없는데 어떻게 확인하나요? 학교에서 컴퓨터 없이 칠판으로 컴퓨터 공학을 공부하는 데 익숙하신가요?

자세한 내용과 예제를 원하시면 MSDN을 읽어보세요.


일반적으로 사람들은 뻔뻔스러울 수 있습니다. 그들은 이미 모든 것을 MQL로 전송하고 댓글로 모든 것을 씹어 먹었습니다
그래서 그들이 슬리 베이터를위한 기능도 작성하기 위해 :) 그것은 이상한 것으로 밝혀졌습니다.

;)

 
sergeev:

디버그도 없는데 어떻게 확인하나요? 학교에서 컴퓨터 없이 칠판으로 컴퓨터 공학을 공부하는 데 익숙하신가요?

자세한 내용과 예제를 원하시면 MSDN을 읽어보세요.


일반적으로 사람들은 뻔뻔스러울 수 있습니다. 그들은 이미 모든 것을 MQL로 전송하고 댓글로 모든 것을 씹어 먹었습니다
그래서 그들이 슬리 베이터를위한 기능도 작성하기 위해 :) 그것은 이상한 것으로 밝혀졌습니다.

;)

이제 나는 당신이 내 질문에 실질적으로 대답하고 싶지 않다면 왜 내 게시물에 내 질문에 들어 갔는지 이해하지 못합니까? 충격입니다, 편집진 여러분!
 

제가 직접 질문에 답해드리겠습니다. 저는 반쯤 완성된 덜 익은 제품을 집어 들어야 했습니다.

이 클래스는 아주 간단한 이유 때문에 int와 double 배열을 처리할 수 없습니다.

선언된 함수는 int나 double 타입의 배열을 받아들일 수 없습니다. 이 클래스는 uchar만 처리할 수 있습니다." 가상 int Write(const uchar &buf[],int sz); // 지정된 바이트 수를 메모리에 쓰기 "

제가 필요에 따라 레시피를 위조하여 완성한 것을 게시하고 있으며, 정수 배열만 전달할 수 있습니다. 작성자가 완성하지 못하면 나중에 제가 직접 게시하겠습니다.

파일:
MemMapLib.mqh  17 kb
MemMap.mq5  2 kb
 
baramantan:

제가 직접 질문에 답해드리겠습니다. 몇 가지 조사를 해봐야 했습니다.

그래서 목표를 달성했습니다 :)

이 클래스는 아주 간단한 이유로 int 및 double 배열을 허용할 수 없습니다.
선언된 함수는 int 또는 double 타입의 배열을 허용할 수 없습니다.

이는 명백한 사실입니다. <some_needed_type>이 아닌 uchar를 허용합니다.

같은 방식으로 문자열로 구조 배열을 저장하기 위해 "반제품"을 요구할 수 있습니다. 발을 구르며 - 저자가 "내가 필요한 데이터 형식"을 예상하지 못한 이유.

하지만 하나의 범용 함수가 주어졌습니다. 1바이트 미만이면 분할할 곳이 없습니다. 그래서 저장되는 것입니다.

모든 데이터 유형을 uchar 배열(읽기 바이트)로 변환할 수 있으므로 이러한 클래스에서 가장 보편적입니다.

저는 제 필요에 맞게 레시피를 완성하기 위해 자갈을 깔았고, 제가 얻은 것을 게시하고 있으며, int 배열 만 전달할 수 있습니다.

그것은 uchar와 함께 있었고, 지금은 int와 함께 있습니다.

예. 진행 중 :)
 
sergeev:

그래서 목표를 달성했습니다 :)

글쎄, 그것은 명백한 진실입니다. <some_necessary_type>이 아닌 uchar를 허용합니다.

같은 방식으로 문자열로 구조 배열을 저장하기 위해 "반제품"을 요구할 수 있습니다. 발을 구르며 - 저자가 "내가 필요한 데이터 형식"을 예상하지 못한 이유.

하지만 하나의 범용 함수가 주어졌습니다. 1바이트 미만이면 분할할 곳이 없습니다. 그래서 저장되는 것입니다.

모든 데이터 유형은 uchar 배열(읽기 바이트)로 변환할 수 있으므로 이러한 클래스에서 가장 보편적입니다.

uchar였는데, 이제는 int입니다.

예. 진행 중 :))

물론 저는 대단한 프로그래머는 아닙니다. 하지만 보편성이 어디에 있는지 이해가 안 되네요. uchar는 사용자를 제한하기 때문에 보편적 일 수 없습니다: uchar는 양수 값만 사용할 수 있습니다. 최소값은 0이고 최대값은 255입니다.

uchar 값을 초과하는 모든 데이터는 uchar의 최대값 또는 최소값과 같게 됩니다.

제가 말씀 드린 내용을 바탕으로 처음부터 "int 또는 double을 전달하는 방법"을 물었습니다. 무슨 말씀인지 모르겠네요, 과장님.