unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
type
TShared = record
keys:array of String[255];
end;
PShared = ^TShared;
const
PMEMF='afkgjsl';
var
Shared:PShared;
MapHandle: THandle;
i:Integer;
begin
SetLength(Shared^.keys,4); //到这里出错,
MapHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, PMEMF);
if MapHandle=0 then
begin
MapHandle := CreateFileMapping($FFFFFFFF, nil,PAGE_READWRITE,0,SizeOf(TShared),PMEMF);
end;
if MapHandle<>0 then
begin
Shared:=MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
end;
Shared^.keys[0]:='abcd';
Shared^.keys[1]:='efgh';
Shared^.keys[2]:='hijkl';
Shared^.keys[3]:='mnopq';
end;end.Shared^.keys 是需要动态确定的,请问如何设置!
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form3: TForm3;implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
type
TShared = record
keys:array of String[255];
end;
PShared = ^TShared;
const
PMEMF='afkgjsl';
var
Shared:PShared;
MapHandle: THandle;
i:Integer;
begin
SetLength(Shared^.keys,4); //到这里出错,
MapHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, PMEMF);
if MapHandle=0 then
begin
MapHandle := CreateFileMapping($FFFFFFFF, nil,PAGE_READWRITE,0,SizeOf(TShared),PMEMF);
end;
if MapHandle<>0 then
begin
Shared:=MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
end;
Shared^.keys[0]:='abcd';
Shared^.keys[1]:='efgh';
Shared^.keys[2]:='hijkl';
Shared^.keys[3]:='mnopq';
end;end.Shared^.keys 是需要动态确定的,请问如何设置!
MapHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, PMEMF);
请帮我改写下代码,
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm3 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;type
TShared = record
keys:array of String[255];
end;
PShared = ^TShared;
var
Form3: TForm3;implementation{$R *.dfm}procedure TForm3.Button1Click(Sender: TObject);
const
PMEMF='afkgjsl';
var
Shared:PShared;
MapHandle: THandle;
begin
new(Shared);
SetLength(Shared^.keys,4);
MapHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, PMEMF);
if MapHandle=0 then
begin
MapHandle := CreateFileMapping($FFFFFFFF, nil,PAGE_READWRITE,0,SizeOf(TShared),PMEMF);
end;
if MapHandle<>0 then
begin
Shared:=MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
end;
Shared^.keys[0]:='abcd';
Shared^.keys[1]:='efgh';
Shared^.keys[2]:='hijkl';
Shared^.keys[3]:='mnopq';
end;end.读取代码
unit Unit2;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
TForm4 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
type
TShared = record
keys:array of String[255];
end;
PShared = ^TShared;
var
Form4: TForm4;implementation{$R *.dfm}procedure TForm4.Button1Click(Sender: TObject);
const
PMEMF='afkgjsl';
var
MapHandle: THandle;
Shared:PShared;
begin
New(Shared);
SetLength(Shared^.keys,4);
MapHandle:=OpenFileMapping(FILE_MAP_ALL_ACCESS,False, PMEMF);
Shared:=MapViewOfFile(MapHandle,FILE_MAP_ALL_ACCESS,0,0,0);
ShowMessage(String(Shared^.keys[0]));
ShowMessage(String(Shared^.keys[1]));
ShowMessage(String(Shared^.keys[2]));
ShowMessage(String(Shared^.keys[3]));
end;end.