unit e6_4;interfaceuses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;type
  TForm1 = class(TForm)
    Memo1: TMemo;
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    procedure Button4Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
   f:textfile;
    wfilename:string;
     flag:boolean;implementation{$R *.dfm}procedure TForm1.Button4Click(Sender: TObject);   //exit
begin
        close;
end;procedure TForm1.Button1Click(Sender: TObject);  //new
begin
        assignfile(f,'f:\smalt\newfile.txt');
         form1.Caption:='newfile.txt';
          wfilename:='newfile.txt';
           rewrite(f);
            memo1.Enabled:=true;
             button1.Enabled:=true;
             button2.Enabled:=true;
             button3.Enabled:=true;
             button4.Enabled:=true;
end;procedure TForm1.Button2Click(Sender: TObject);   //open
 var line:string;
begin
        if opendialog1.Execute then
         begin
                wfilename:=opendialog1.FileName;
                 assignfile(f,wfilename);
                  reset(f);
                   memo1.Enabled:=true;
                    while not eof(f) do
                     begin
                      readln(f,line);
                       memo1.lines.Add(line);
                     end;
                    button1.Enabled:=true;
                    button2.Enabled:=true;
                    button3.Enabled:=true;
                    button4.Enabled:=true;
                   closefile(f);
         end;
end;procedure TForm1.Button3Click(Sender: TObject); //save
 var i,lastline:integer;
begin
     lastline:=memo1.Lines.Add('')-1;
      assignfile(f,wfilename);
       rewrite(f);
        for i:=0 to lastline do
         begin
          writeln(f,memo1.lines[i]);
         end;
        closefile(f);
end;end.

解决方案 »

  1.   

    button1下面好象没有关闭文件    lastline:=memo1.Lines.Add('')-1; //
    是不是要这个
    Memo1.Lines.Count
      

  2.   

    你的错误提示是不是没有执行Button2的事件直接执行Button3造成的?
    你可以把Button3的OnClick事件稍微改动一下procedure TForm1.Button3Click(Sender: TObject); //save 
    var i,lastline:integer; 
    begin 
       if wfilename='' then 
         Raise Exception.Create('请先选择文件路径');
        lastline:=memo1.Lines.Add('')-1; 
          assignfile(f,wfilename); 
          rewrite(f); 
            for i:=0 to lastline do 
            begin 
              writeln(f,memo1.lines[i]); 
            end; 
            closefile(f); 
    end;