自定义文件格式(record)读写的问题

it80 2003-06-28 07:45:03
当读写单个记录时一切正常,但是如果有多个记录时可写,但读不正常,不是出来乱码就是无法执行

PTkCost=^TkCost;
Tkcost=packed Record
kName:string; //名称
kinv1, //单价金额
kinv2,//数量
kinv3,//合价
kinv4:real; //属性
kinvFF:string;
end;
-----
---

var
Form1: TForm1;klist:tlist;

implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
var n:integer;ww:string;wwfile:tfilestream;fcost:Tkcost;
begin
if savedialog1.Execute then
begin
ww:=savedialog1.FileName;
wwfile:=tfilestream.Create(ww,fmCreate or fmOpenReadWrite);
for n:=1 to 5 do
begin
fcost.kName:='奇奇怪怪'+inttostr(n);
fcost.kinv1:=-0.11*n;
fcost.kinv2:=22;
fcost.kinv3:=5588;
fcost.kinv4:=0;
fcost.kinvFF:='ABCr';
wwfile.Write(fcost,sizeof(fcost));
end;
wwfile.Free;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
var n:integer;ww:string;wwfile:tfilestream;fcost3,fcost2:ptkcost;fcost:Tkcost;
begin
if opendialog1.Execute then
begin
klist.Clear;
ww:=opendialog1.FileName;
wwfile:=tfilestream.Create(ww,fmOpenRead);
for n:=1 to 5 do begin
wwfile.Read(fcost,sizeof(fcost)) ;
new(fcost3);
fcost3.kName:=fcost.kName;
fcost3.kinv1:=fcost.kinv1;
fcost3.kinv2:=fcost.kinv2;
fcost3.kinv3:=fcost.kinv3;
fcost3.kinv4:=fcost.kinv4;
fcost3.kinvFF:=fcost.kinvFF;
klist.Add(fcost3);
end;
for n:=1 to 5 do
begin
fcost2:=klist.Items[n-1];
stringgrid1.Cells[n,1]:=fcost2.kName;
stringgrid1.Cells[n,2]:=fcost2.kinvFF;
end;

wwfile.Free;
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
klist:=tlist.Create;
end;
...全文
115 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
it80 2003-07-08
  • 打赏
  • 举报
回复
浪费啊
ghostmirror 2003-06-29
  • 打赏
  • 举报
回复
看楼主发了三个帖子的啊~~~~呵呵~
前面有好多星星回答了~,看来偶知识还是不够。恩,向星星学习
risingsoft 2003-06-29
  • 打赏
  • 举报
回复
字符变量限制长度
iBear 2003-06-29
  • 打赏
  • 举报
回复
你定义的string的长度是动态,因此记录的长度不定,改用shortstring或char数组,指针也行
hansion3406 2003-06-28
  • 打赏
  • 举报
回复
嗯..
westfly 2003-06-28
  • 打赏
  • 举报
回复
你应该用字符数组代替字符串
Tkcost=packed Record
kName:array[0..255] of char; //名称
kinv1, //单价金额
kinv2,//数量
kinv3,//合价
kinv4:real; //属性
kinvFF:array[0..255] of char;
end;

16,742

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧