利用映象文件传递数据的例子:
procedure TForm1.WriteStringClick(Sender: TObject);
begin
if ExistMapFile then
hMapfile:=CreateFileMapping($FFFFFFFF, // 特殊内存映射句柄
nil,page_ReadWrite,0,10,
'DbhDemoMappedFile')
// 文件名
if hMapFile <&gt
0 then
begin
MapfilePointer:=MapviewOfFile(hMapFile, // 上面映象文件的句柄
File_Map_All_Access,
0,0,0)
// 访问整个映象文件
StrCopy(PChar(MapFilePointer),pchar(edit1.Text));//把内容写入共享内存
//s:=edit1.text
//Error!!!
//move(s,mapfilepointer^,10)
//Error!!!
edit1.SetFocus;
end
else
ShowMessage ('hMapFile = 0');
if MapFilePointer = nil then
ShowMessage ('MapFilePointer = nil');
end;
procedure TForm1.ReadStringClick(Sender: TObject);
var s:string;
begin
hMapfile:=CreateFileMapping($FFFFFFFF, // 特殊内存映射句柄
nil,page_ReadWrite,0,10,
'DbhDemoMappedFile')
// 文件名
if hMapFile <&gt
0 then
begin
MapfilePointer:=MapviewOfFile(hMapFile, // 上面映象文件的句柄
File_Map_All_Access,
0,0,0)
// 访问整个映象文件
S:= pchar(MapFilePointer);//从共享内存读出内容
edit1.Text:= S;
end
else
edit1.text:='无映象文件!';
end;
procedure TForm1.FormDestroy(Sender: TObject);
begin
unmapviewoffile(mapfilepointer)
//删除不用的映像文件
closehandle(hmapfile);
end;
function ExistMapFile:boolean;
var Fhmap:integer;
begin
Fhmap:=openfilemapping(file_map_write,bool(True),'DbhDemoMappedFile');
Result:=Fhmap=0
//不存在映象文件时为0
end;
procedure TForm1.ExistMapClick(Sender: TObject);
begin
if ExistMapFile then
showmessage('映象文件不存在!');
end;