文件reset 问题怪问题 (20分)

  • 主题发起人 主题发起人 caoliu
  • 开始时间 开始时间
C

caoliu

Unregistered / Unconfirmed
GUEST, unregistred user!
这是我的代码
for i:=0 to FileListBox1.Items.Count-1 do
begin
assignfile(txt1,FileListBox1.items);
reset(txt1);
assignfile(txt2,Edit1.txt);
if fileExists(Edit1.txt) then
append(txt2)
else
rewrite(txt2);
writeln(txt2,head1,head2:15,head3:15,head4:12,head5:18,
head6:10,head7:10,head8:15,head9:10,head10:21,head11:10,head12:11);
while not eof(txt1) do
begin
readln(txt1,Status,Trunk,Number,Dialed,Time,Callstop,
Ccode,OutTrunk,OutChannel,StopDate);
if Status='S ' then
writeln(txt2,Trunk,Dialed,Callstop,OutTrunk,StopDate);
end;
closefile(txt1);
closefile(txt2);
end;
请看:
assignfile(txt2,Edit1.txt);fileExists(Edit1.txt)
或者为assignfile(txt2,savedialog1.filename);fileExists(savedialog1.filename) 时我通过Savedialog1 写文本时只能放在D:/的根目录下
(我的源文件在D:/的根目录的一个文件夹中)如果放在其它地方,编译运行报'file not find'
在reset(txt1);这步出问题.
如果把assignfile(txt2,Edit1.txt),fileExists(Edit1.txt) 分别改为assignfile(txt2,'D:/Tools/1234.txt'),fileExists('D:/Tools/1234.txt') 或E:/temp/123.txt时一切OK.
这是怎么回事,我解决不了,望个位富翁指点,谢谢!
 
看了半天没看懂你想问什么?[:(!]
 
你为什么不把FileListBox1.Items打印出来看看? 这不就知道是怎么回事了么
 
我解决不了,望个位富翁指点.
 
设置SAVEDIALOG1的DEFAULTDIR,默认的路径是源程序所在的目录。
 
我知道了,Filelistbox 是不包括路径的,
而assign的时候要求全路径(除非在当前路径下)。
可以这样做:
var tmppath:string;

tmppath:=filelistbox1.directory;
if copy(tmppath,length(tmppath),1)<>'/'
then tmppath:=tmppath+'/';
assignfile(txt1,tmppath+FileListBox1.items);
 
你的程序我编译了,是会出现出错信息。
reset方法是以只读方式打开文件,如果此文件不存在是不能用Reset方法的。
你可以在reset前fileExists(FileListBox1.items) 测试一下。
这样改了之后,就没有问题了。我已调试通过。
 
行了!谢谢太阳火
 
后退
顶部