关于文件操作的问题(100分)

  • 主题发起人 主题发起人 makilyang
  • 开始时间 开始时间
M

makilyang

Unregistered / Unconfirmed
GUEST, unregistred user!
我在一个程序中用了一个记录文件保存ComboBox控件的列表项。这个文件是从数据中
更新数据。下面是源程序
procedure TForm1.N15Click(Sender: TObject);
type
Tlistcfg = packed record
Sell_list:string[30];
leibie:string[30];
cost:string[10];
end;
var
Listcfg:Tlistcfg;
text: File of Tlistcfg;
begin
assignFile(TEXT,'listcfg/LISTCFG.mkc');
rewrite(text);
mkdata.ADOQuery1.Close ;
mkdata.ADOQuery1.SQL.Clear ;
mkdata.ADOQuery1.SQL.Add('select * from List_cfg order by sell_list asc');
mkdata.ADOQuery1.Open ;
while not mkdata.ADOQuery1.Eof do
begin
listcfg.Sell_list:=mkdata.ADOQuery1.Fields[1].asstring;
listcfg.cost:=mkdata.ADOQuery1.Fields[2].AsString ;
listcfg.leibie :=mkdata.ADOQuery1.fields[4].asstring;
seek(text,Filesize(text));
write(text,listcfg);
mkdata.ADOQuery1.Next;
end;
end;
为什么每次执行后会将原来数据重复增加后面

我数据库中有这样的数据
NAME Leibie Cost
Piii800 CPU 920
每执行上面程序一次后.记录文件中就会增加一条这样的记录。但重新启动程序后
再执行上面一次就又变成一条。是为什么?
 
rewrite(text);
应该改为
reset(text);
 
rewrite(text);
是创建新的文件,不管文件是否存在
reset(text);
是打开文件
不过我如果要保存列表状态我经常用Ini文件的
 
我已经解决了。就是把seek(text,Filesize(text));去掉。不过有个很奇怪的事。就是在
2000下没有这个问题。在98下就会出现。是什么原因呢。
 
write和read本来就会自动移动文件光标。seek本来就是多余。

 
多人接受答案了。
 
后退
顶部