我把Record放到Tstringlist中去,在同一个事件中取出来数据是对的,可到另一个事件中取出来就不对了。原代码如下:
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
DrugTList=^Drug;
Drug=record
DrugName: string;//药名
OperateMark: string;//用法标识,是否需要用法对比
end;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
MyDrugTlist: TStringList;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
DrugRecord: Drug;
TempRecord: Drug;
begin
DrugRecord.DrugName := 'name';
DrugRecord.OperateMark := '1';
MyDrugTlist.AddObject('name',Pointer(@DrugRecord));
TempRecord := drugtlist(MyDrugTlist.Objects[0])^;
ShowMessage(TempRecord.OperateMark); //可以显示1
end;procedure TForm1.FormShow(Sender: TObject);
begin
MyDrugTlist := TStringList.Create;
end;procedure TForm1.Button2Click(Sender: TObject);
var
DrugRecord: Drug;
begin
DrugRecord := drugtlist(MyDrugTlist.Objects[0])^;
ShowMessage(DrugRecord.OperateMark); //无显示结果
end;end.请大家多多指教
unit Unit1;interfaceuses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;type
DrugTList=^Drug;
Drug=record
DrugName: string;//药名
OperateMark: string;//用法标识,是否需要用法对比
end;type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;var
Form1: TForm1;
MyDrugTlist: TStringList;implementation{$R *.dfm}procedure TForm1.Button1Click(Sender: TObject);
var
DrugRecord: Drug;
TempRecord: Drug;
begin
DrugRecord.DrugName := 'name';
DrugRecord.OperateMark := '1';
MyDrugTlist.AddObject('name',Pointer(@DrugRecord));
TempRecord := drugtlist(MyDrugTlist.Objects[0])^;
ShowMessage(TempRecord.OperateMark); //可以显示1
end;procedure TForm1.FormShow(Sender: TObject);
begin
MyDrugTlist := TStringList.Create;
end;procedure TForm1.Button2Click(Sender: TObject);
var
DrugRecord: Drug;
begin
DrugRecord := drugtlist(MyDrugTlist.Objects[0])^;
ShowMessage(DrugRecord.OperateMark); //无显示结果
end;end.请大家多多指教
var
DrugRecord: DrugTList;
TempRecord: Drug;
begin
New(DrugRecord);
DrugRecord^.DrugName := 'name';
DrugRecord^.OperateMark := '1';
MyDrugTlist.AddObject('name',Pointer(DrugRecord));
TempRecord := drugtlist(MyDrugTlist.Objects[0])^;
ShowMessage(TempRecord.OperateMark); //可以显示1
end;