Q&A

  • 질문] 고수님 도와줘요~~~
고수님 안녕하세요....

제가 메모리 맵을 이용한 DLL 사이의 데이터 교환을 공부하던중

아래와 같은 소스를 구하게 되었습니다.. 원래소스에서는

정수형의 데이터를 교환하는것이었구요...

제가 교환할 데이터는 스트링형입니다....

그래서 아래와 같이 제가 바꾸었거든요.....

그런제 정수형으로 할때는 잘 작동했는데 스트링형으로 할때는

에러가 나네요....고수님 도와주세요...



var

Form1: TForm1;



implementation



{$R *.DFM}



var

// 메모리 맵 파일의 오브젝트.

FileMapObj : THandle;



// 폼 생성시 메모리 맵 파일 만들기.

procedure TForm1.FormCreate(Sender: TObject);

begin

FileMapObj :=

CreateFileMapping(

$FFFFFFFF, // 파일 연동 안함.

nil, // 보안문제 신경 안 씀.

PAGE_READWRITE, // 읽고 쓸 것임.

0, // 크기 상위 DWORD

SizeOf(Integer), // 크기 하위 DWORD

'메모리 맵 테스트를 위한 공유영역' // 메맵 파일의 이름

);

end;



// 폼 해제시 메모리 맵 파일 지우기.

procedure TForm1.FormDestroy(Sender: TObject);

begin

CloseHandle(FileMapObj);

end;



// 메모리 맵 파일의 데이터 읽기.

procedure TForm1.Button1Click(Sender: TObject);

var

strP : ^string;

begin

strP := MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);

try

ShowMessage(strP^);

finally

UnMapViewOfFile(strP);

end;

end;



// 메모리 맵 파일에 데이터 쓰기.

procedure TForm1.Button2Click(Sender: TObject);

var

strp : ^string;

begin

strP := MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);

try

strP^ := edit1.text;

finally

UnMapViewOfFile(strp);

end;

end;



end.

0  COMMENTS