Text 使用pascal在文本文件中写入时出错
我正在尝试编写一个创建和更新库存的过程,但是每次我尝试运行程序时,都会出现运行时错误,程序会自动关闭,而且它似乎没有创建任何文本文件,我不确定问题可能是什么,也不确定如何解决,因此非常感谢您的帮助 这是程序Text 使用pascal在文本文件中写入时出错,text,runtime-error,pascal,Text,Runtime Error,Pascal,我正在尝试编写一个创建和更新库存的过程,但是每次我尝试运行程序时,都会出现运行时错误,程序会自动关闭,而且它似乎没有创建任何文本文件,我不确定问题可能是什么,也不确定如何解决,因此非常感谢您的帮助 这是程序 procedure inventary(arch:string); var f:text; op:char; key,name,desc:string; begin assign (f,arch); if eof(f) then rewr
procedure inventary(arch:string);
var f:text;
op:char;
key,name,desc:string;
begin
assign (f,arch);
if eof(f) then
rewrite(f)
else
append(f);
writeln('Article key');
readln(key);
writeln('Article name');
readln(name);
writeln('article description');
readln(desc);
write(f,key,',',name,',',desc,',');
op:='s';
while (op <> 'n') or (op <> 'N') do
begin
writeln('add another product? y/n');
readln(op);
if (op = 'y') or (op = 'Y') then
begin
writeln('Article key');
readln(key);
writeln('Article name');
readln(name);
writeln('article description');
readln(desc);
write(f,key,',',name,',',desc,',');
end
else
writeln('bye');
readln();
end;
close(f);
readln();
end;
您不能以这种方式使用
eof
功能,它仅适用于打开的文件。从帮助中:Eof(F)测试当前文件位置是否为文件末尾。F是一个文件变量,已打开以进行读取
如果您使用的是Delphi,您可以使用
函数FileExists(const FileName:string):Boolean测试文件的存在性
,否则您应该尝试追加
,如果失败,则执行重写
,这可能是从传统的TP方式派生的,用于检查文件是否存在(afaik仍在和FPC中工作)
但一般来说,除非你对考古学感兴趣,否则fileexists()更好。+1表示fileexists。应该使用它,而不是旧的TP方式。IIRC即使是后来的TP也有一个文件存在于电视的某个地方。
uses proyectounit;
var
arch:string;
c:char;
begin
writeln('Name of the inventary');
readln(arch);
Writeln('Do you wish to add a product');
readln(c);
if c='s' then
inventary(arch+'.txt');
Writeln('Do you wish to change something?');
readln(c);
if c='s' then
cambios(arch+'.txt','001');
writeln('end');
readln;
end.
assign(f,name); // or assignfile in Delphi
{$I-}
reset(f);
{$I+}
if ioresult=0 then
begin
/// open succesful