000C50BC I/O错误103时数据模块中的异常EInoutError

vas*_*vas 1 delphi

我在Delphi4中运行了一个应用程序,然后我收到了错误

000C50BC I/O错误103时数据模块中的异常EInoutError

我基本上......无法做出正面或反面....我无法通过Delphi GUI打开/运行.exe文件, 但能够运行它.

请帮助.

    {
****************************************************************************
* The WritelnXx routines are used to send status information to standard
* output.
****************************************************************************
}
procedure WritelnIn(const s: string; level: integer = 0); overload;
  var
    i: Integer;
  begin
    for i := 1 to level do Write('    ');
    **Writeln(s);**
  end;

procedure WritelnIn(const s: string; e: Exception; level: integer = 0); overload;
  begin
    WritelnIn(s + '[' + e.message + ']', level);
  end;

procedure WritelnAb(const s: string; level: integer = 0); overload;
  begin
    WritelnIn(s, level);
    Abort;
  end;

procedure WritelnAb(const s: string; e: Exception; level: integer = 0); overload;
  begin
    WritelnIn(s, e, level);
    Abort;
  end;
Run Code Online (Sandbox Code Playgroud)

错误显示在" Writeln(s); "...在同一文件DataMagr.dpr中

Ken*_*ite 5

I/O错误103是文件未打开.根据Delphi 7帮助文件:

"如果文件未打开,则由CloseFile,读/写,搜索,Eof,FilePos,FileSize,Flush,BlockRead或BlockWrite报告."

此外,这与您提供上述链接的其他问题有什么关系?


All*_*uer 5

确保应用程序被编译为控制台应用程序 {$APPTYPE CONSOLE} 因为调用 Write 或 Writeln 写入 stdout 并且控制台未打开,它会像这样失败。使用 {$APPTYPE CONSOLE} 会产生副作用,要么使用启动应用程序的现有控制台,要么创建一个新的控制台窗口来使用。

另一种解决方案是将输出标准文本文件 (stdout) 重定向到文件。尝试这个:

AssignFile(Output, 'logfile.log');
Rewrite(Output);
Run Code Online (Sandbox Code Playgroud)

现在,所有常规“Write”或“Writeln”调用都将转到“logfile.log”文件。