0

我正在尝试编写一个创建和更新库存的过程,但是每次我尝试运行程序时,我都会遇到运行时错误并且程序会自行关闭,并且它似乎没有创建任何文本文件,我是不确定问题可能是什么或如何解决,因此非常感谢您的帮助。

这是程序

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.
4

2 回答 2

0

您不能eof以这种方式使用该功能,它仅适用于打开的文件。来自帮助:Eof(F) 测试当前文件位置是否为文件结尾。F 是已打开以供读取的文件变量。

如果您使用的是 Delphi,您可以使用 测试文件是否存在 function FileExists(const FileName: string):Boolean;,否则您应该尝试append,如果失败,请执行rewrite

于 2013-09-18T07:41:38.907 回答
0

这可能源自经典的 TP 方法来检查文件是否存在(afaik 在Delphi和 FPC 中仍然有效)

   assign(f,name); // or assignfile in Delphi 
   {$I-}
    reset(f);
   {$I+}
   if ioresult=0 then
      begin
       /// open succesful

但总的来说,除非您从事考古学,否则 fileexists() 会更好。

于 2013-09-18T11:59:10.747 回答