关于ReWrite(F)的Invalid FileName出错的问题

qinlouyiyue 2013-12-24 08:12:54
最近采了一组数据,但发现第一个数据后面多了个点,故想用Delphi编个小程序批量处理一下,数据为'.DAT'格式,

编程如下:

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'错误,

查看网上各种资料也没解决,想在这里请教一下。有人同样遇到这种问题么?
...全文
350 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
qinlouyiyue 2013-12-26
  • 打赏
  • 举报
回复
引用 4 楼 pathletboy 的回复:
给你个notepad++的正则表达式 查找 (\d+\.\d+)\. 替换 \1
果然方便 Notepad++很强大啊!
qinlouyiyue 2013-12-26
  • 打赏
  • 举报
回复
引用 2 楼 sololie 的回复:
你用TStringList.LoadFromFile(文件); 把文件读取这个TStringList,然后对这个TStringList操作,操作完后 TStringList.SaveTo 保存为一个新文件就好了,其他的先别管,达到目的再说
嗯 这个我试了一下,,确实可以,谢谢了啊
bdmh 2013-12-25
  • 打赏
  • 举报
回复
那估计就是 RF:= Copy(OpenDialog1.FileName,4,length(OpenDialog1.FileName)-8)+'.DAT';有问题,RF获取的值不是有效的文件路径
pathletboy 2013-12-25
  • 打赏
  • 举报
回复
给你个notepad++的正则表达式 查找 (\d+\.\d+)\. 替换 \1
pathletboy 2013-12-25
  • 打赏
  • 举报
回复
这种直接找个带正则表达式的文本编辑工具来的更快,比如notepad++之类的。
sololie 2013-12-25
  • 打赏
  • 举报
回复
你用TStringList.LoadFromFile(文件); 把文件读取这个TStringList,然后对这个TStringList操作,操作完后 TStringList.SaveTo 保存为一个新文件就好了,其他的先别管,达到目的再说

16,747

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 语言基础/算法/系统设计
社区管理员
  • 语言基础/算法/系统设计社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧