回 帖 发 新 帖 刷新版面

主题:关于PASCAL文件操作的一个问题

在Baidu上搜了半天,铺天盖地的尽是只适用于NOIP的文件操作.

我要问的是,如果打开一个文件,但这个文件不存在,在C语言里面用fopen(文件名,文件打开方式)会返回NULL值.不知道PASCAL里面如何实现类似功能,我在改进一个程序的时候需要用到判断文件路径是否正确(即该文件是否存在).

回复列表 (共8个回复)

沙发

好象在PASCAL中如果你用到的文件不存在,它回给你新建一个

板凳

可以使用文件,但是必须使用DOS库:
代码如下:
Uses Dos;{这一句写在Program ***;以后,label **;以前}
  function Exist(Path:string):boolean;
    var
      S: PathStr;
  begin
    S := FSearch(Path, GetEnv(''));
    Exist :=  S <> '';
  end;

3 楼

使用文件

4 楼

[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 楼

无意中发现一个方法,利用编译开关加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 楼

可是在NOIP竞赛环境中
即使你用了编译开关
最后评测的时候也是默认关闭的

7 楼

[quote]可是在NOIP竞赛环境中
即使你用了编译开关
最后评测的时候也是默认关闭的[/quote]

NOIP用uses dos;也没有用.....
可是我现在没做题,而是在编软件,所以就不用考虑NOIP的限制了...

8 楼

[quote] GetEnv('')[/quote]
我也不知道,看看Turbo Pascal的帮助还是很有用的。

我来回复

您尚未登录,请登录后再回复。点此登录或注册