#99 Article 500 Posted at 1992/10/12 18:43:29 by ☆まちばり☆ (MAP641) [PASCAL.Q]

Subject: {$I-} {$I+} 処理

{$I-} と {$I+} 処理がどうもうまくいきません。
 以下のprocedureで、ファイルがなかったらルーチンを飛ばす、としたい場合には
 どのように回避すればいいのでしょうか。

procedure datread;
  var id:integer;
  begin
    assign(fp,'d:\logdir\mapwrite.dat');
    reset(fp); 
      while not eof(fp) do
        begin
          readln(fp,id); readln(fp,user^[id]); readln(fp,num[id])
        end;
      close(fp)
  end;

 assignの前に{$I-}、if ioresult=0 then ~ という形にすると、そのあと
 {$I+} かけた時点でハングアップします。なぜ・・・・?
 (ハングアップするのはファイルが存在しなかった場合のみ)
                      MAP641 まちばりあかね☆