100分,写文本文件的问题。

来源:互联网  时间:2016/7/9 20:27:47

关于网友提出的“ 100分,写文本文件的问题。”问题疑问,本网通过在网上对“ 100分,写文本文件的问题。”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:

问题: 100分,写文本文件的问题。
描述:

var 
afile:textfile;  
fname;string;
if strexcel<>'' then begin
      tempdialog := tsavedialog.Create(nil);
      tempdialog.Filter:='*.txt|*.txt';
      tempdialog.Execute;
      fname:=tempdialog.FileName;
      if copy(fname,strlen(pchar(fname))-4,3)<>'txt' then fname:=fname+'.txt';
      showmessage(fname);
      if not FileExists(fname) then filecreate(fname);
      assignfile(afile,fname);//这里出错
      reset(afile);
      append(afile);
      writeln(afile,strexcel);
      flush(afile);
      closefile(afile);
      shellexecute(0,'Open',pchar(fname),nil,nil,1);
      end;
上面的代码执行时老是说什么I/O错误,停在 assignfile(afile,fname);这句
怎么搞,


解决方案1:


      这么写试试:
      assignfile(afile,fname);
      if FileExists(fname) then rewrite(afile)
        else append(afile);
      writeln(afile,strexcel);
      closefile(afile);
      shellexecute(0,'notepad.exe',pchar(fname),nil,nil,1);

解决方案2:

同意yjbnew(yjbnew) 
Reset是只读方式
Rewrite才是读写方式

解决方案3:

reset(afile)
去掉看看

解决方案4:

//我对你的程序的逻辑真的好头疼!!!
procedure TForm1.BitBtn1Click(Sender: TObject);
var 
afile:textfile;  
fname:string;
strexcel:String;
tempdialog:Tsavedialog;
begin
  strexcel:='ok';
  if strexcel<>'' then
  begin
      tempdialog := tsavedialog.Create(self);
      tempdialog.Filter:='*.txt|*.txt';
      if tempdialog.Execute then
      begin
        fname:=tempdialog.FileName;
        if copy(fname,strlen(pchar(fname))-4,3)<>'txt' then
          fname:=fname+'.txt';
        showmessage(fname);//调试完毕最好去掉这句!!!
        if not FileExists(fname) then
        begin
          assignfile(afile,fname);
          rewrite(afile);
          writeln(afile,strexcel);
          closefile(afile);
          shellexecute(handle,'Open',pchar(fname),nil,nil,1);
        end
        else
        begin
          assignfile(afile,fname);
          append(afile);
          writeln(afile,strexcel);
          closefile(afile);
          shellexecute(handle,'Open',pchar(fname),nil,nil,1);
        end;
      end;
  end;
end;
filecreate可以直接看帮助,需要一个句柄,filewrite,fileclose...

解决方案5:

问题出在这句话上,
if not FileExists(fname) then filecreate(fname);
用这个创建完文件后,append(afile);就会出错。
改成这样:
 //if not FileExists(fname) then filecreate(fname);去掉
      assignfile(afile,fname);//这里出错
      if not FileExists(fname) then
        rewrite(afile) //创建并打开文件 
      else
        append(afile);
      //reset(afile); //去掉,这个是只读方式打开
      writeln(afile,strexcel);
      flush(afile);
      closefile(afile);

上一篇如何过滤一个字符串中的特殊字符
下一篇TreeView中用鼠标左键点击带“+”号图标进行孩子项目扩展后和用鼠标左键点击TreeView中的项目内容所触发的不同事件分别是什么事件?
明星图片
相关文章
《 100分,写文本文件的问题。》由码蚁之家搜集整理于网络,
联系邮箱:mxgf168#qq.com(#改为@)