S
SuKiDelphi
Unregistered / Unconfirmed
GUEST, unregistred user!
我想在二个程序(A 和 B)中共享数据,但总不成功, 请大家来指点一下
//程序 A :
type
TData = record
StrA : String;
IntA, IntB :Integer;
end;
PData=^TData;
var //全局
DLLData : PData;
procedure TFormA.FormCreate(Sender: TObject);
var FHandle: LongWORD;
begin
New(DLLData);
FHandle:=CreateFileMapping($FFFFFFFF, // 文件句柄
nil, // 可选安全属性
PAGE_READWRITE, // 映象文件保护方式
0,
$ffff,
'SuKiDelphi'); // 映象文件的名字
if FHandle > 0 then
begin
FHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'SuKiDelphi');
DLLData:=MapViewOfFile(FHandle,FILE_MAP_ALL_ACCESS, 0, 0, 0);
end;
end;
//程序 B :
type
TData = record
StrA : String;
IntA, IntB :Integer;
end;
PData=^TData;
var //全局
DLLData : PData;
procedure TFormB.FormCreate(Sender: TObject);
var FHandle: LongWORD;
S : String;
begin
New(DLLData);
FHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'SuKiDelphi');
DLLData:=MapViewOfFile(FHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
CloseHandle(FHandle);
S:=DLLData^.StrA;
Edit1.Text:=S;
end;
上面的代码在运行时总是出错!!!
//程序 A :
type
TData = record
StrA : String;
IntA, IntB :Integer;
end;
PData=^TData;
var //全局
DLLData : PData;
procedure TFormA.FormCreate(Sender: TObject);
var FHandle: LongWORD;
begin
New(DLLData);
FHandle:=CreateFileMapping($FFFFFFFF, // 文件句柄
nil, // 可选安全属性
PAGE_READWRITE, // 映象文件保护方式
0,
$ffff,
'SuKiDelphi'); // 映象文件的名字
if FHandle > 0 then
begin
FHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'SuKiDelphi');
DLLData:=MapViewOfFile(FHandle,FILE_MAP_ALL_ACCESS, 0, 0, 0);
end;
end;
//程序 B :
type
TData = record
StrA : String;
IntA, IntB :Integer;
end;
PData=^TData;
var //全局
DLLData : PData;
procedure TFormB.FormCreate(Sender: TObject);
var FHandle: LongWORD;
S : String;
begin
New(DLLData);
FHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS, False, 'SuKiDelphi');
DLLData:=MapViewOfFile(FHandle, FILE_MAP_ALL_ACCESS, 0, 0, 0);
CloseHandle(FHandle);
S:=DLLData^.StrA;
Edit1.Text:=S;
end;
上面的代码在运行时总是出错!!!