社区
Delphi
帖子详情
rewrite到文本文件时,报告“invalid filename”错误,怎么办
heziqq
2003-04-08 04:27:22
下面这段代码,执行到rewrite时,有时报错,有时通过,不知到底是什么原因?
procedure form1.button1Click(Sender:Object);
var
f: textfile;
begin
//定义文件名
assignfile(f,'e:\1.txt');
rewrite(f);
writeln(f,'Test');
CloseFile(f);
end;
...全文
974
5
打赏
收藏
rewrite到文本文件时,报告“invalid filename”错误,怎么办
下面这段代码,执行到rewrite时,有时报错,有时通过,不知到底是什么原因? procedure form1.button1Click(Sender:Object); var f: textfile; begin //定义文件名 assignfile(f,'e:\1.txt'); rewrite(f); writeln(f,'Test'); CloseFile(f); end;
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
fuzhan820
2003-07-16
打赏
举报
回复
文件处理基本的方法。我们按对磁盘上已存在的文件和创建新文件两种操作方式分别说明。
对于磁盘上已经存在的文件,我们的操作方法一般是,用AssignFile对象方法将它和实际文件相连,AssignFile方法的语法是 AssignFile(文件变量,文件名称)。接下来如果要读取文件内容,需要使用Reset(文件变量)打开文件,文件打开后使用相应的过程或函数读取文件内容,对不同的文件类型有不同的读取方法,下面再讲。如果打开文件是为了在文件的末尾进行追加写操作,需要调用Append(文件变量)方法。
创建新文件。创建新文件只能用于写,因为创建的新文件是没有内容可读的。用AssignFile对象方法将文件变量和要创建的文件相连,即 AssignFile(文件变量,要创建的文件名称字符串),然后使用Rewrite(文件变量)方法可创建新的文件。
重要说明:1 在打开已存在的文件时,用户必须考虑要打开的文件可能因各种原因而导致文件可能不存在的情况。也就是说用户应该在打开时检测文件是否存在。有两种方法可检测要打开的文件是否存在,首先可用Delphi提供的fileExists函数,使用例句如下:
if not fileExists('my.dat') then
showmessage('文件不存在');
其次,可在使用Reset后检测IOResult函数的返回值来判断文件是否存在,IOResult函数不需要任何参数。这里先说明一下$I编译开关,此开关控制着I/O(输入/输出)过程中产生的错误信息是否出现,缺省情况下开关处于开的状态,也就是程序会自动提示错误信息。比如我们执行下面两行代码,事实上my.dat文件是不存在的,
assignfile(mf,'my.dat');
reset(mf);
执行的结果会得到一串英文错误信息,告诉你文件不存在。如果在assignfile前面加上一行编译开关{$I-}(抑制提示信息),再运行程序就不会有任何提示。其实,我们即需要给用户提示文件不存在的信息,但又不想使用Delphi自动提供的英文信息,这种情况下需要我们自己编写代码,在Reset过程之后,通过检测IOResult函数的返回值来判断文件是否存在并给出提示信息,由于文件存在时,IOResult函数的返回值为0,所以我们检测它不为0的情况即可,代码如下:
begin
{$I-}
assignfile(mf,'my.dat');
reset(mf);
if IOResult<>0 then
showmessage('文件不存在');
……
end;
heziqq
2003-04-21
打赏
举报
回复
这问题我已解决了,确实是灵活选择路径selpath.pas那块出错了,我重新写了代码,就通过了。但我还没有找到原因,我将错误的那段代码粘贴如下,有谁帮分析一下:
unit SelPath;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, FileCtrl;
type
TSelPathFrm = class(TForm)
DirectoryListBox1: TDirectoryListBox;
DriveComboBox1: TDriveComboBox;
Label1: TLabel;
Label2: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
procedure BitBtn2Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure DriveComboBox1Change(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
sPath : string;
end;
var
SelPathFrm: TSelPathFrm;
implementation
uses PutUp;
{$R *.dfm}
//取消选定
procedure TSelPathFrm.BitBtn2Click(Sender: TObject);
begin
sPath := '';
PutUpFrm.Efilename.Text := '';
SelPathFrm.Close;
end;
//选定目录
procedure TSelPathFrm.BitBtn1Click(Sender: TObject);
begin
DirectoryListBox1.OpenCurrent;
sPath := DirectoryListBox1.Directory ;
if sPath = '' then
begin
PutUpFrm.Efilename.Text := DirectoryListBox1.Directory ;
end
else
PutUpFrm.Efilename.Text := sPath;
SelPathFrm.Close;
end;
procedure TSelPathFrm.FormCreate(Sender: TObject);
begin
DriveComboBox1.Drive := 'e' ;
DriveComboBox1.DirList := DirectoryListBox1;
DirectoryListBox1.Directory := DriveComboBox1.Drive + 'windows\system\';
sPath := '';
end;
procedure TSelPathFrm.DriveComboBox1Change(Sender: TObject);
begin
DirectoryListBox1.Drive := DriveComboBox1.Drive;
end;
end.
cx_super
2003-04-08
打赏
举报
回复
灵活选择路径是怎么选择的?是不是选择路径有问题?
heziqq
2003-04-08
打赏
举报
回复
这段代码,我一直都可以运行,对于指定的文件不存在,使用rewrite时,就会创建;如果存在,就overwrite文件的内容。只是我今天想改为灵活选择路径,就出错,再恢复为固定路径就不可以了。请那位大虾帮帮忙,我已经困扰了整整一天了,看似简单,但就是不知何固。
wang11912
2003-04-08
打赏
举报
回复
先判断文件e:\1.txt是否存在,再用rewrite
或者reset.
isfileexist(filename)
关于Delphi使用
Rewrite
()报
Invalid
File
Name错的问题
本文介绍了一种在Delphi环境下使用
Rewrite
()方法创建文件
时
遇到的问题及解决办法。当尝试创建新文件夹下的文件
时
,由于
Rewrite
()不能创建文件夹,会导致
错误
发生。文中提供了一个示例代码,通过先检查并创建所需文件夹,再利用
Rewrite
()方法创建文件,从而避免了
错误
的发生。
nginx常见
错误
---持续更新
本文介绍了Nginx配置中常见的两个问题及解决方法:一是如何正确设置fastcgi_param SCRIPT_
FILE
NAME参数避免
File
notfound
错误
;二是如何通过
rewrite
规则实现访问二级目录
时
自动补全斜杠。
Ubuntu 18.04 Apache mod_
rewrite
不生效的四大根源与修复
URL重写是Web服务器实现友好链接、路由分发和安全控制的基础能力,其核心依赖模块加载、目录权限、正则解析与运行
时
环境四层协同。在Apache 2.4中,mod_
rewrite
并非开箱即用,尤其Ubuntu 18.04默认禁用.htaccess覆盖且
rewrite
模块未启用,导致大量Laravel、WordPress等PHP应用部署失败。理解AllowOverride权限模型与PCRE正则匹配机制,是规避404、403及规则静默失效的关键。本文聚焦生产级调试路径:从模块启用、虚拟主机配置校准,到.htacc
Debian 10 Apache mod_
rewrite
实战:从启用到安全重写
URL重写是Web服务器的核心能力之一,其本质是通过请求路径的动态映射实现路由控制、安全加固与用户体验优化。在Apache中,mod_
rewrite
作为内建重写引擎,需先启用模块、配置AllowOverride权限,并结合
Rewrite
Engine上下文声明才能生效。它不仅支撑SEO友好的clean URL,更承担HTTPS强制跳转、WordPress伪静态、API版本路由、敏感文件防护及简易WAF过滤等关键任务。尤其在Debian 10系统中,受限于默认禁用.htaccess、AppArmor访问控制及严
Debian 8下Apache mod_
rewrite
生产级配置实战
URL重写是Web服务路由控制的基础能力,其核心原理在于Apache请求处理生命周期中的URI转换阶段。通过mod_
rewrite
模块,开发者可实现301跳转、SEO友好路径、参数隐藏等关键功能,技术价值体现在流量平滑迁移、搜索引擎权重保留与架构解耦上。典型应用场景包括老旧PHP系统URL重构、多语言站点路由、域名标准化及反向代理适配等。本文聚焦Debian 8(Apache 2.4.10)这一长期服役的生产环境,深入解析mod_
rewrite
启用机制、
Rewrite
Engine开关位置、AllowOver
Delphi
5,943
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章