主题:关于PASCAL文件操作的一个问题
游侠UFO
[专家分:1200] 发布于 2007-02-19 00:53:00
在Baidu上搜了半天,铺天盖地的尽是只适用于NOIP的文件操作.
我要问的是,如果打开一个文件,但这个文件不存在,在C语言里面用fopen(文件名,文件打开方式)会返回NULL值.不知道PASCAL里面如何实现类似功能,我在改进一个程序的时候需要用到判断文件路径是否正确(即该文件是否存在).
回复列表 (共8个回复)
沙发
编程黑客 [专家分:1660] 发布于 2007-02-19 08:54:00
好象在PASCAL中如果你用到的文件不存在,它回给你新建一个
板凳
小田甜 [专家分:3910] 发布于 2007-02-19 14:52:00
可以使用文件,但是必须使用DOS库:
代码如下:
Uses Dos;{这一句写在Program ***;以后,label **;以前}
function Exist(Path:string):boolean;
var
S: PathStr;
begin
S := FSearch(Path, GetEnv(''));
Exist := S <> '';
end;
3 楼
longcjx [专家分:50] 发布于 2007-02-19 15:16:00
使用文件
4 楼
游侠UFO [专家分:1200] 发布于 2007-02-19 20:24:00
[quote]可以使用文件,但是必须使用DOS库:
代码如下:
Uses Dos;{这一句写在Program ***;以后,label **;以前}
function Exist(Path:string):boolean;
var
S: PathStr;
begin
S := FSearch(Path, GetEnv(''));
Exist := S <> '';
end;[/quote]
谢了,我去试试.不过再麻烦大家解释一下GetEnv的用途及使用方法.
5 楼
游侠UFO [专家分:1200] 发布于 2007-02-19 20:56:00
无意中发现一个方法,利用编译开关加ioresult
不过下面这个例子是DELPHI写的,PASCAL应该也行
{$I-} // 让编译器忽略io检查,否则当io出现问题的时候会弹出错误对话框
Reset(F);
{$I+}
if IOResult = 0 then //返回0表示没有出现错误
begin
MessageDlg('File size in bytes: ' + IntToStr(FileSize(F)),
mtInformation, [mbOk], 0);
CloseFile(F);
end
else //否则返回非0表示io有错
MessageDlg('File access error', mtWarning, [mbOk], 0);
end;
6 楼
bigchen [专家分:1940] 发布于 2007-02-19 22:22:00
可是在NOIP竞赛环境中
即使你用了编译开关
最后评测的时候也是默认关闭的
7 楼
游侠UFO [专家分:1200] 发布于 2007-02-19 22:36:00
[quote]可是在NOIP竞赛环境中
即使你用了编译开关
最后评测的时候也是默认关闭的[/quote]
NOIP用uses dos;也没有用.....
可是我现在没做题,而是在编软件,所以就不用考虑NOIP的限制了...
8 楼
小田甜 [专家分:3910] 发布于 2007-02-24 15:16:00
[quote] GetEnv('')[/quote]
我也不知道,看看Turbo Pascal的帮助还是很有用的。
我来回复