关于ReWrite(F)的Invalid FileName出错的问题
。
编程如下:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComCtrls, StdCtrls;
type
TForm1 = class(TForm)
OpenDialog1: TOpenDialog;
Button2: TButton;
Button1: TButton;
Button3: TButton;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
WFile,RFile:TextFile;
WF,RF,P:String;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
close;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if OpenDialog1.Execute then
begin
WF:= OpenDialog1.FileName;
RF:= Copy(OpenDialog1.FileName,4,length(OpenDialog1.FileName)-8)+'.DAT';
Button3.Enabled:=true;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
AssignFile(WFile,WF);
Reset(WFile);
AssignFile(RFile,RF);
Rewrite(RFile);
While not EOF(WFile) do
begin
ReadLn(WFile,P);
Delete(P,13,1);
WriteLn(RFile,P);
end;
CloseFile(WFile);
CloseFile(RFile);
ShowMessage('Done');
end;
end.
但运行时提示exception class EInOutError with message 'Invalid FileName'错误,
查看网上各种资料也没解决,想在这里请教一下。有人同样遇到这种问题么?
[解决办法]
那估计就是 RF:= Copy(OpenDialog1.FileName,4,length(OpenDialog1.FileName)-8)+'.DAT';有问题,RF获取的值不是有效的文件路径
[解决办法]
你用TStringList.LoadFromFile(文件); 把文件读取这个TStringList,然后对这个TStringList操作,操作完后
TStringList.SaveTo 保存为一个新文件就好了,其他的先别管,达到目的再说
[解决办法]
给你个notepad++的正则表达式
查找
(\d+\.\d+)\.
替换
\1