我正在尝试编写一个创建和更新Inventory的过程,但每次我尝试运行该程序时,都会遇到运行时错误并且程序自行关闭,并且似乎没有创建任何文本文件,我不确定问题可能是什么或如何解决,所以帮助会非常苛刻。
这是程序
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;
程序我正在测试它:
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.
答案 0 :(得分:0)
您不能以这种方式使用eof
功能,它仅适用于打开文件。从帮助中: Eof(F)测试当前文件位置是否为文件结尾。 F是一个已打开以供阅读的文件变量。
如果您使用的是Delphi,则可以使用function FileExists(const FileName: string):Boolean;
测试文件的存在,否则您应该尝试append
,如果失败则执行rewrite
答案 1 :(得分:0)
这可能来自检查文件存在的经典TP方式(afaik仍可在Delphi和FPC中使用)
assign(f,name); // or assignfile in Delphi
{$I-}
reset(f);
{$I+}
if ioresult=0 then
begin
/// open succesful
但一般情况下,除非你进入考古学,否则fileexists()会更好。