|
FileMapObj 는 HWND가 아니라 HANDLE 입니다.
그리고 파일연동안할때는 NULL 이 아니라 0xFFFFFFFF 입니다.
그리고 전체적으로 소스를 수정했는데 다음과 같습니다.
앗... 그리고 타입이 integer 이기때문에
Edit 컴포넌트 쓰신것은 테스트상 좋지 않군요.
Edit에 영문등을 입력하면 에러가 납니다.
CSpinButton 같은걸 이용하시면 좋을텐데...
그래서 이예제에서 테스트할때는 Edit에 숫자만 입력하십시오.
다른거 넣으면 에러날지도 모릅니다.
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
HANDLE FileMapObj;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
FileMapObj = CreateFileMapping(
(HANDLE)0xFFFFFFFF, // 파일 연동 안함.
NULL, // 보안문제 신경 안 씀.
PAGE_READWRITE, // 읽고 쓸 것임.
0, // 크기 상위 DWORD
sizeof(int), // 크기 하위 DWORD
"WhatTheHeck" // 메맵 파일의 이름
);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormDestroy(TObject *Sender)
{
CloseHandle(FileMapObj);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int *buf;
buf = (int *)MapViewOfFile(FileMapObj, FILE_MAP_WRITE, 0, 0, 0);
if(buf==NULL)
{
UnmapViewOfFile( (void*)buf );
CloseHandle(FileMapObj);
return;
}
*buf=Edit1->Text.ToInt();
UnmapViewOfFile( (void*)buf );
}
//---------------------------------------------------------------------------
void __fastcall TForm1::Button2Click(TObject *Sender)
{
int *buf;
buf = (int *)MapViewOfFile(FileMapObj, FILE_MAP_READ, 0, 0, 0);
if(buf==NULL)
{
UnmapViewOfFile( (void*)buf );
CloseHandle(FileMapObj);
return;
}
ShowMessage(IntToStr(*buf));
UnmapViewOfFile( (void*)buf );
}
//---------------------------------------------------------------------------
|