这到底是怎么了??????不能读取文件???(50分)

  • 主题发起人 主题发起人 3368aa
  • 开始时间 开始时间
3

3368aa

Unregistered / Unconfirmed
GUEST, unregistred user!
unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
ListBox1: TListBox;
procedure FormCreate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

type
setd=record
date:tdatetime;
cause:string[20];
end;

var
Form1: TForm1;
setfile:file of setd;
itset:setd;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
var
filename:string;
i:integer;
begin
filename:=extractfilepath(paramstr(0)+'set.dat');
assignfile(setfile,filename);
try
if fileexists(filename) then
begin
reset(setfile);
for i:=0 to filesize(setfile) do
begin
read(setfile,itset);
listbox1.Items.Add(itset.cause);
end;
end
else
begin
rewrite(setfile);
end;
finally
closefile(setfile);
end;
end;

end.


为什么会出现I/O错误?各位大侠请指教[:(][:(]
 
if fileexists(filename) //这句在前,先判断物理存在。
assignfile(setfile,filename);//这句在后,再连接。
 
filename:=extractfilepath(paramstr(0)+'set.dat');
这句话中的ExtractFilePath会把文件名称去掉,那么FileName就是一个路径了啊
 
filename:=extractfilepath(paramstr(0)+'set.dat');
改成:
filename:=extractfilepath(paramstr(0))+'set.dat';
这是第一个错误,你还没有保存的语句呀。。。
 
FileName := ExtractFilePath(ParamStr(0)) + 'set.dat';
应该改成这样子。呵呵
 
for i:=0 to filesize(setfile)-1 do
 
无问题:
procedure TForm1.FormCreate(Sender: TObject);
var
filename:string;
i:integer;
begin
// filename:=extractfilepath(paramstr(0)+'set.dat');
FileName := ExtractFilePath(ParamStr(0)) + 'set.dat';
assignfile(setfile,filename);
try
if fileexists(filename) then
begin
reset(setfile);
for i:=0 to filesize(setfile)-1 do //i:=0 to filesize(setfile)
begin
read(setfile,itset);
listbox1.Items.Add(DateTimetostr(itset.date));
listbox1.Items.Add(itset.cause);
end;
end
else
begin
rewrite(setfile);
itset.date:=now;
itset.cause:='地理';
write(setfile,itset);
itset.date:=now;
itset.cause:='数学';
write(setfile,itset);
end;
finally
closefile(setfile);
end;
end;
 
多人接受答案了。
 
后退
顶部