社区
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;
...全文
937
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)
php程序员面试题(含html、JavaScript、php和mysql)
- `include` 和 `require` 的主要区别在于:当被包含文件不存在
时
,`require` 会产生致命
错误
并停止脚本执行,而 `include` 只会发出警告且脚本会继续执行。 - `include_once` 和 `require_once` 类似于 `include` ...
PHP 过滤页面中的BOM(实现代码)
然而,在网页显示或处理文本
时
,BOM可能导致不必要的空格、乱码或其他问题。因此,我们需要编写函数来检测并移除这些BOM。 以下是一个名为`checkBOM`的PHP函数,它用于检查一个文件是否含有UTF-8 BOM,并在存在
时
...
ZendFramework中文文档
6.3.3.
报告
选项 6.3.4. 读取非选项参数 6.4. 配置 Zend_Console_Getopt 6.4.1. 添加选项规则 6.4.2. 添加帮助信息 6.4.3. 添加选项别名 6.4.4. 添加参数列表 6.4.5. 添加配置 7. Zend_Controller 7.1. ...
nginx的
rewrite
详解
根据相关变量重定向和选择不同的配置,从一个location跳转到另一个location,不过这样的循环最多可以执行10次,超过后nginx将返回500
错误
。同
时
,重写模块包含set指令,来创建新的变量并设其值,这在有些情景下非常...
Nginx基础——
Rewrite
规则
rewrite
是nginx一个特别重要的指令,该指令可以使用正则表达式改写URI。可以指定一个或多个
rewrite
指令,按顺序匹配。
Delphi
5,935
社区成员
262,943
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章