我调用一个TSpeedButton控件作为保存信息的按钮,并为其添加了如下代码:
procedure Tmainform.SaveFileClick(Sender: TObject);
var     i: Integer;
begin
  with Memo1.Lines do
  begin
    clear;
    Append(Edit1.Text);
    Append(SpinEdit1.Text);
    Append(ComboBox1.Text);
    Append(DateToStr(DateTimePicker1.date));
    Append(IntToStr(RadioGroup1.ItemIndex));
    for i:=0 to RichEdit1.Lines.Count-1 do
    Append(RichEdit1.Lines[i]);
    SaveToFile(FileName);
  end;
end;
在调试时,能够编译通过,但是执行时 SaveToFile(FileName);却报错:
Project Project2.exe  raised exception class EFCreateError with message 'Cannot create file'. process stoped. Use step or Run to continue
这是怎么回事?有谁能告诉我该怎么改?谢了

解决方案 »

  1.   

    问题一定出在SaveToFile(FileName)这里,好好检查一下你的FileName参数吧
      

  2.   

    这个错误提示的信息是:无法创建不存在的文件.
    建议你在转存为文件时,先调用FileExists函数来判断文件是否存在,如果不存在就调用CreateFile函数来创建这个文件.具体看看帮助吧
      

  3.   

    没有那么复杂,只要你的FileName参数正确,是一个合法的文件全路径名的话是没有问题的
      

  4.   

    你可以用单步调试一下,肯定是你的FileName没有赋值,要么就是其指向的文件不存在,我也曾出过一次这种问题,改过来就行,快看看吧,很易解决的.
      

  5.   

    FileName裡面有值嗎?檢查一下FileName吧
    只要FileName是合法文件名(如果有路徑,哪路徑一定要存在)就可以
    不會去問你該文件是否存在
      

  6.   

    filename的定义为var  filename: TFileName;设置的为全局变量。好像里面没有值的。
      

  7.   

    你在哪里给filename赋值的呀?一定有问题,代码贴出来看看
      

  8.   

    1.filename不存在
    2.saveftofile(路径/filename);
    3.用createfile创建filename
      

  9.   

    代码如下,请各位看看:
    unit MainUnit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, Buttons, ToolWin, ComCtrls, Menus, ExtDlgs, StdCtrls, ExtCtrls,
      Spin;type
      Tmainform = class(TForm)
        MainMenu1: TMainMenu;
        N1: TMenuItem;
        N2: TMenuItem;
        N3: TMenuItem;
        N4: TMenuItem;
        N5: TMenuItem;
        N6: TMenuItem;
        N7: TMenuItem;
        N8: TMenuItem;
        N9: TMenuItem;
        N10: TMenuItem;
        N11: TMenuItem;
        N12: TMenuItem;
        F61: TMenuItem;
        N13: TMenuItem;
        PopupMenu1: TPopupMenu;
        PopupPaste: TMenuItem;
        PopupCut: TMenuItem;
        PopupCopy: TMenuItem;
        ToolBar1: TToolBar;
        OpenFile: TSpeedButton;
        SaveFile: TSpeedButton;
        OpenPicture: TSpeedButton;
        SavePicture: TSpeedButton;
        ModifyFont: TSpeedButton;
        Exit: TSpeedButton;
        GroupBox1: TGroupBox;
        Label1: TLabel;
        Label2: TLabel;
        Label3: TLabel;
        Label4: TLabel;
        Edit1: TEdit;
        SpinEdit1: TSpinEdit;
        ComboBox1: TComboBox;
        DateTimePicker1: TDateTimePicker;
        RadioGroup1: TRadioGroup;
        Label5: TLabel;
        Image1: TImage;
        Label6: TLabel;
        RichEdit1: TRichEdit;
        StatusBar1: TStatusBar;
        FontDialog1: TFontDialog;
        OpenPictureDialog1: TOpenPictureDialog;
        SavePictureDialog1: TSavePictureDialog;
        OpenDialog1: TOpenDialog;
        SaveDialog1: TSaveDialog;
        Timer1: TTimer;
        Memo1: TMemo;
        Bevel1: TBevel;
        procedure OpenFileClick(Sender: TObject);
        procedure SaveFileClick(Sender: TObject);
        procedure OpenPictureClick(Sender: TObject);
        procedure SavePictureClick(Sender: TObject);
        procedure ModifyFontClick(Sender: TObject);
        procedure ExitClick(Sender: TObject);
        procedure N8Click(Sender: TObject);
        procedure N10Click(Sender: TObject);
        procedure N11Click(Sender: TObject);
        procedure N12Click(Sender: TObject);
        procedure F61Click(Sender: TObject);
        procedure N13Click(Sender: TObject);
        procedure Timer1Timer(Sender: TObject);  private
        { Private declarations }
      public
        { Public declarations }
      end;var
      mainform: Tmainform;
      filename: TFileName;
    implementationuses Unit2;{$R *.dfm}procedure Tmainform.OpenFileClick(Sender: TObject);
    var     i: Integer;
    begin
      if OpenDialog1.Execute then
      begin
        filename:=OpenDialog1.FileName;
        Memo1.lines.LoadFromFile(OpenDialog1.FileName);
        with Memo1.Lines do
        begin
          Edit1.Text :=Memo1.Lines[0];
          SpinEdit1.Text:=Memo1.Lines[1];
          ComboBox1.Text :=Memo1.Lines[2];
          DateTimePicker1.Date:=StrToDate(Memo1.Lines[3]);
          RadioGroup1.ItemIndex:=StrToInt(Memo1.Lines[4]);
          RichEdit1.Clear;
          for i:=5 to Memo1.Lines.Count-1 do
              RichEdit1.Lines.Append (Memo1.Lines [i]);
        end;
      end;
    end;procedure Tmainform.SaveFileClick(Sender: TObject);
    var     i: Integer;
    begin
      with Memo1.Lines do
      begin
        clear;
        Append(Edit1.Text);
        Append(SpinEdit1.Text);
        Append(ComboBox1.Text);
        Append(DateToStr(DateTimePicker1.date));
        Append(IntToStr(RadioGroup1.ItemIndex));
        for i:=0 to RichEdit1.Lines.Count-1 do
        Append(RichEdit1.Lines[i]);
        SaveToFile(FileName);
      end;
    end;procedure Tmainform.OpenPictureClick(Sender: TObject);
    begin
      if OpenPictureDialog1.Execute then
        Image1.Picture.LoadFromFile(OpenPictureDialog1.Filename);
    end;procedure Tmainform.SavePictureClick(Sender: TObject);
    begin
      if SavePictureDialog1.Execute then
        Image1.Picture.SaveToFile(SavePictureDialog1.FileName);
    end;procedure Tmainform.ModifyFontClick(Sender: TObject);
    begin
      if FontDialog1.Execute then
        with RichEdit1.SelAttributes,FontDialog1 do
        begin
        Color:=Font.Color;
        Pitch:=Font.Pitch;
        Size:=Font.Height;
        Style:=Font.Style;
        end;
    end;procedure Tmainform.ExitClick(Sender: TObject);
    begin
      close;
    end;procedure Tmainform.N8Click(Sender: TObject);
    var     i: Integer;
    begin
      if SaveDialog1.Execute then
        with Memo1.Lines do
        begin
          clear;
          Append(Edit1.Text);
          Append(SpinEdit1.Text);
          Append(ComboBox1.Text);
          Append(DateToStr(DateTimePicker1.date));
          Append(IntToStr(RadioGroup1.ItemIndex));
          for i:=0 to  RichEdit1.Lines.Count-1 do
          Append(RichEdit1.Lines[i]);
          SaveToFile(SaveDialog1.FileName );
        end;
    end;procedure Tmainform.N11Click(Sender: TObject);
    begin
       RichEdit1.PasteFromClipboard;
    end;procedure Tmainform.N10Click(Sender: TObject);
    begin
       RichEdit1.CutToClipboard;
    end;procedure Tmainform.N12Click(Sender: TObject);
    begin
       RichEdit1.CopyToClipboard;
    end;procedure Tmainform.F61Click(Sender: TObject);
    begin
      Memo1.Clear;
      Edit1.Text:=' ';
      RadioGroup1.ItemIndex:=0;
      RichEdit1.Clear;
      Image1.Picture:=nil; 
    end;procedure Tmainform.N13Click(Sender: TObject);
    begin
      form2.show;
    end;procedure Tmainform.Timer1Timer(Sender: TObject);
    begin
      StatusBar1.Panels[0].Text:='当前打开的文件是: '+ filename;
      StatusBar1.Panels[1].Text:=DateToStr(Date);
    end;end.
      

  10.   

    一定是filename没赋值或者路径不正确,
    改为 SaveToFile('C:\test.txt'); 试试如果正确,证明filename有问题。