二进制文件读写的问题(100分)

C

codepet

Unregistered / Unconfirmed
GUEST, unregistred user!
我写了2个函数一个是写文件,一个是读文件.
当我先写文件然后紧接着读文件,这时读出来的内容是正确的,
但是如果我只读文件,这时读出来的内容是错误的,为什么?
请大虾们帮我看看[:(]

代码:
procedure TForm2.SavePlayList;
var i:integer;
    f:TFileStream;
begin
  f := TFileStream.Create(FILENAME, fmCreate);
  try
    f.Seek(0, soFromBeginning);
    for i:=1 to 10 do
    begin
      f.Write(data[i], sizeof(TData));
    end;
  finally
    f.Free;
  end;
end;

procedure TForm2.ReadPlayList;
var f:TFileStream;
    i:integer;
    numread:integer;
begin
  f := TFileStream.Create(FILENAME, fmOpenRead);
  i:=0;
  try
  while True do
  begin
    numread := f.Read(data[i+1], sizeof(TData));
    if numread < sizeof(TData) then break;
    inc(i);
  end;
  finally
    f.Free;
  end;
end;
 
调试以下看看
 
who can help me!~!??[:(]
 
我试了一下没发现问题,你再确认一下下面问题:
1你直接读时文件是否存在?
2在读文件过程中data数组是否越界?
 
TData 是什么,我很想帮你。还有其实用流读写文件没有什么二制制之分的。
 
谢谢大家,我已经解决了。我把我的问题贴出来吧。

我原来定义的TData如下
TData = Record
Name : String;
Age : Integer;
end;

这样定义的话,读出来Age是对的,但Name就不对了
然后我改了一下定义
TData = Record
Name : String[20];
Age : Integer;
End;
这样就对了
不管怎样,谢谢大家这么热心[:D]
 
顶部