如何把TStrings存入记录文件中?
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Grids;
type
TDDML=Record //调度命令
CZBZ:TStrings;//操作步骤
end;
DDMLFileType=file of TDDML;
TForm1 = class(TForm)
StringGrid1: TStringGrid;
WriteButton: TButton;
ReadButton: TButton;
procedure WriteButtonClick(Sender: TObject);
procedure ReadButtonClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.WriteButtonClick(Sender: TObject);
var DDML:TDDML;
DDMLFile:DDMLFileType;
FileName:string;//文件名
begin
FileName:='c:\调度命令';
AssignFile(DDMLFile,FileName);
if FileExists(FileName) then
Reset(DDMLFile)
else
Rewrite(DDMLFile);
DDML.CZBZ:=TStringList.Create;
DDML.CZBZ.Add('第一步');
DDML.CZBZ.Add('第二步');
seek(DDMLFile,0);
write(DDMLFile,DDML);
CloseFile(DDMLFile);
end;
procedure TForm1.ReadButtonClick(Sender: TObject);
var DDML:TDDML;
DDMLFile:DDMLFileType;
FileName:string;//文件名
i:Integer;
begin
FileName:='c:\调度命令';
AssignFile(DDMLFile,FileName);
if FileExists(FileName) then
Reset(DDMLFile)
else
Rewrite(DDMLFile);
if FileSize(DDMLFile)<>null then
begin
seek(DDMLFile,0);
Read(DDMLFile,DDML);
end;
CloseFile(DDMLFile);
for i:=0 to DDML.CZBZ.Count-1 do
StringGrid1.Cells[0,i]:=DDML.CZBZ[i];
end;
end.
运行程序,点击WriteButton后,再点击ReadButton,StringGrid1中会正确地显示操作步骤,
关掉程序,再重新运行,如果直接点击ReadButton,就会出现如下错误:
"Access violation at address 5320534D. Read of address 5320534D."
如何把TStrings存入记录文件中?