在标准 Pascal ( ISO7185 ) 中,没有任何程序Assign
可以让程序员将某种文件名分配给文件变量。它只出现在 Turbo Pascal 和其他衍生产品中。
那么......如果我遵守标准,我应该如何打开特定文件的句柄?
我发现最接近的是这个Irie Pascal 示例:
program vowels(f, output);
var
f : file of char;
tot, vow : integer;
c : char;
begin
reset(f);
tot := 0;
vow := 0;
while not eof(f) do
begin
read(f, c);
case c of
'a', 'e', 'i', 'o', 'u',
'A', 'E', 'I', 'O', 'U'
: vow := vow + 1;
otherwise
end;
tot := tot + 1;
end;
writeln('Total characters read = ', tot);
writeln('Vowels read = ', vow)
end.
这表明我可以将文件名作为启动参数。这使用 Irie Pascal 有效。但是,如果我尝试将它与P5一起使用,它应该最接近我发现的现代计算机的标准兼容 Pascal 编译器,我得到 (在替换 'otherwise' 之后) **** Error: external file unknown 'f '
。那么,标准方法是什么?或者这实际上是标准方式并且 P5 做错了什么?
编辑:标准也给出了一个样本
program copy (f, g);
var f,g : file of real;
begin
reset(f) ; rewrite(g);
while not eof(f) do
begin
g^ := f^ ; get(f) ; put(g)
end
end.
但我无法让它与任何编译器一起工作。
编辑2:
这样做:
program copy (f, g);
var f,g : file of char;
begin
reset(f) ; rewrite(g);
while not eof(f) do
begin
g^ := f^ ; get(f) ; put(g)
end
end.
在入江工作得很好并且符合标准。使用它,文件名可以作为启动参数给出。
然而,正如Marco van de Voort所解释的,
ISO 7185 根本没有程序指定文件名的任何标准方式,因此任何此类方式都已超出 7185(Bind 是 ISO 10206,Assign 是 UCSD/BP,Reset 的第二个参数是 GPC 的扩展和 I想想其他一些编译器)。
(来源)