试了一下,老是提示I/O错误,不知道为什么具体点,是这样的:先检测abc.txt是否存在,存在就写入edit.text的内容,否则写入一个值但是每次都出错,说I/O错误希望高手指点,如果能给个比较全的代码就更好了,谢谢!!

解决方案 »

  1.   

    var
      F: File of char;
      a: Char;
    begin
      AssignFile(F,'C:\aa.txt');  //文件名你自己修改
      Rewrite(F);  //进行写操作,读操作用Reset(F);
      WriteLn(F,'你的字符'); //写入一行 读入一行用Readln(F); 读入一个字符用read(f,a);
      closeFile(F);
    end;
      

  2.   

    如果要判断文件是否存在
    在开始加上判断语句
    整个代码就是var
      F: File of char;
      a: Char;if not FileExists(''C:\aa.txt'') then//filename为你的文件路径
    begin
      showmessage('File not Exist');
      Exit;
    end
    else
    begin
      AssignFile(F,'C:\aa.txt');  //文件名你自己修改
      Rewrite(F);  //进行写操作,读操作用Reset(F);
      WriteLn(F,'你的字符'); //写入一行 读入一行用Readln(F); 读入一个字符用read(f,a);
      closeFile(F);
      showmessage('Operation Completed');
    end;
      

  3.   

    呵呵,上面的说得很清楚了可以是Rewrite/Reset/Append的http://lysoft.7u7.net
      

  4.   

    >>否则写入一个值写入什么地方??不会是不存在的文件吧
      

  5.   

    非常感谢楼上朋友的帮助!请先看看偶的代码:
    var
      NewFile, TimeElse:TextFile;
      SourceFile,s:String;
    begin
      SourceFile:= 'e:\temp\Work\Timer\TimeElse.txt'; //想用一个函数获取当前程序的路径,没办法
      If (FileExists(SourceFile)) Then
        Begin
         AssignFile(TimeElse, SourceFile);
         Write('500');
         Readln(TimeElse,s); //以下两句是为了方便看是否写入数据成功用的
         ComboBox.text := s;
        End
      Else   //没有找到文件的情况
        Begin
          AssignFile(NewFile, SourceFile);
          Rewrite(NewFile);
          Writeln(NewFile, '300000');
        end
    end;我就不知道哪错了~~郁闷 麻烦各位了!!再帮偶看看
      

  6.   

    SourceFile没有你怎么付给变量?
      

  7.   

    什么啊,有值的啊!SourceFile,s:String;
    begin
      SourceFile:= 'e:\temp\Work\Timer\TimeElse.txt';
      

  8.   

    var FileHandle: Integer;begin
      //......................
      FileHandle := FileCreate(SourceFile);
      FileWrite(FileHandle,'300000');
      FileClose(FileHandle);  
    end;
      

  9.   

    SourceFile:= 'e:\temp\Work\Timer\TimeElse.txt'; 只是个路径不是文件本身
      

  10.   

    var
      F: TextFile;
      a: String;
    begin
      a := '写入文件';
      SaveDialog1.Filter := 'Text files (*.txt)|*.TXT';
      SaveDialog1.FileName := 'F:\TXT文件';
      if SaveDialog1.Execute then
      begin
        AssignFile(F, SaveDialog1.FileName + '.txt');  
        Rewrite(F);     Writeln(F, a); 
        CloseFile(F);
      end;
    end;这样不会有问题。
      

  11.   

    SourceFile只是一个字符串,不能指文件本身。
      

  12.   

    AssignFile(NewFile, SourceFile);函数并不能生成一个文件,而是操作一个已有的文件,所以才I/O错误,摆脱你把人家给你的代码都试试,有什么问题再来提问
      

  13.   

    非常感谢楼上各位的帮助,问题已经搞定了!!只是有点不明白,SourceFile只是个字符串不是文件本身是什么意思呢?我看书上也这样用啊
      

  14.   

    你原来代码的错误主要是在文件存在的情况下:If (FileExists(SourceFile)) Then
        Begin
         AssignFile(TimeElse, SourceFile);
         Write('500');
         Readln(TimeElse,s); //以下两句是为了方便看是否写入数据成功用的
         ComboBox.text := s;
        End此处:你只作了"AssignFile",而实际上文件并没有打开,还需要加一个reset(TimeElse);
    这样,程序就可以运行了。你的用法没错,不过记得:
    assginfile后面,必须跟Reset或是rewrite.这样才真正打开文件或重写文件。