我调用一个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
这是怎么回事?有谁能告诉我该怎么改?谢了
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
这是怎么回事?有谁能告诉我该怎么改?谢了
建议你在转存为文件时,先调用FileExists函数来判断文件是否存在,如果不存在就调用CreateFile函数来创建这个文件.具体看看帮助吧
只要FileName是合法文件名(如果有路徑,哪路徑一定要存在)就可以
不會去問你該文件是否存在
2.saveftofile(路径/filename);
3.用createfile创建filename
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.
改为 SaveToFile('C:\test.txt'); 试试如果正确,证明filename有问题。