Delphi 如果存在 WriteLN,则 {Form1} 失败
Delphi {Form1} fails if WriteLN is present
我有一个 Delphi 代码,程序中有一个单元旁边有 {Form1}
。该单元使用另一个单元,其中我有 try/except 程序并将消息写入屏幕。下面是详细解释的代码片段。
重要说明 1:我试图详细说明我的问题并重新发布。我希望这是清楚的。
重要说明 2:如果我删除异常中的 WriteLn(下面的第三个代码片段),即使从 GUI 调用代码也能正常工作
主程序
program PROGNAME;
uses
Forms,
View in 'FView.pas' {Form1},
SubUnit in 'FSubUnit.pas';
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Left := Screen.WorkAreaLeft;
Form1.Top := Screen.WorkAreaTop;
Application.Run;
end
在Fview.pas我有
procedure TForm1.FileListBox1Click(Sender: TObject);
ReadData(filename);
end
在读取数据的 SUBUNIT 中我有
try
Read(F, result);
except // IO error
on E: EInOutError do
begin
writeln('No info is given default taken')
end;
end;
通常我的代码可以正常工作,如果出现带有上述警告的 IO 错误则跳过。如果我这样做并从 GUI 调用,我会收到一条屏幕消息 IOError 并且它不会在
上移动
这是一个常见问题吗?我需要取消那部分代码吗?
此行为是可执行的。
Writeln
将输出写入控制台。 GUI 应用程序(默认情况下)没有控制台。
因此,如果您在典型的 GUI 应用程序中执行 Writeln('No info...')
,您告诉系统将 'No info...'
写入控制台,但没有控制台!因此 I/O 错误(我假设是 105)。
手动将控制台添加到您的 GUI 应用程序 (AllocConsole
),或者——可能更好——改用 GUI 错误消息:ShowMessage('No info...')
或 MessageBox(Handle, 'No info...', 'My App', MB_ICONERROR)
。
我有一个 Delphi 代码,程序中有一个单元旁边有 {Form1}
。该单元使用另一个单元,其中我有 try/except 程序并将消息写入屏幕。下面是详细解释的代码片段。
重要说明 1:我试图详细说明我的问题并重新发布。我希望这是清楚的。
重要说明 2:如果我删除异常中的 WriteLn(下面的第三个代码片段),即使从 GUI 调用代码也能正常工作
主程序
program PROGNAME;
uses
Forms,
View in 'FView.pas' {Form1},
SubUnit in 'FSubUnit.pas';
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Form1.Left := Screen.WorkAreaLeft;
Form1.Top := Screen.WorkAreaTop;
Application.Run;
end
在Fview.pas我有
procedure TForm1.FileListBox1Click(Sender: TObject);
ReadData(filename);
end
在读取数据的 SUBUNIT 中我有
try
Read(F, result);
except // IO error
on E: EInOutError do
begin
writeln('No info is given default taken')
end;
end;
通常我的代码可以正常工作,如果出现带有上述警告的 IO 错误则跳过。如果我这样做并从 GUI 调用,我会收到一条屏幕消息 IOError 并且它不会在
上移动这是一个常见问题吗?我需要取消那部分代码吗?
此行为是可执行的。
Writeln
将输出写入控制台。 GUI 应用程序(默认情况下)没有控制台。
因此,如果您在典型的 GUI 应用程序中执行 Writeln('No info...')
,您告诉系统将 'No info...'
写入控制台,但没有控制台!因此 I/O 错误(我假设是 105)。
手动将控制台添加到您的 GUI 应用程序 (AllocConsole
),或者——可能更好——改用 GUI 错误消息:ShowMessage('No info...')
或 MessageBox(Handle, 'No info...', 'My App', MB_ICONERROR)
。