デバッグの目的で、ループの結果をコンソールウィンドウの [〜#〜] vcl [〜#〜] アプリケーションに表示できますか?
Windowsでは、デバッグ情報を出力する最も簡単な方法は、OutputDebugString()
を使用してから、その出力を受信できるアプリケーションを使用することです。 DelphiのイベントビューアIDE自体がその入力を受信できるか、または DebugView アプリケーションを SysInternals から使用して出力を取得できます。 IDEがインストールされていないシステムで。AFAIK、GExpertsにも同様のツールがあります。これは、GUIアプリケーションにデフォルトで出力を書き込むためのコンソールがないためです。それ以外の場合は作成する必要があります。 1つ(ジェリーの答えを参照)。
OutputDebugString()
の利点の1つは、呼び出しがリリースビルドに組み込まれた場合(または意図的にそこに残された場合)でもアプリケーションは問題なく動作することですが、機密情報を出力しないように注意してください。上記のツールのいずれかを使用してお読みください。
また、アドホックフォームを(つまり、メモコントロールを使用して)作成し、そこに出力をルーティングすることもできます。
SmartInspect 、 CodeSite などの高度なロギング機能もあります。
最も簡単な方法は、コンソールアプリケーションとしてコンパイルすることですが、通常のアプリケーションフレームワークコードをdprに戻します。
program Project2;
{$APPTYPE CONSOLE}
uses
Forms,
SysUtils,
Unit1 in 'Unit1.pas' {Form1};
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
writeln('Hello, World!');
Application.Run;
end.
もう少し複雑な方法は、Windows API AllocConsole呼び出しを使用することです。
program Project2;
uses
Forms,
SysUtils,
Windows,
Unit1 in 'Unit1.pas' {Form1};
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
AllocConsole;
writeln('Hello, World!');
Application.Run;
end.
この方法には、コマンドラインから呼び出す場合に、通常は新しいコンソールを作成するという欠点があります。メモリからリダイレクトを機能させるには、さらにいくつかのコードも必要です。 advantageは、コンパイル時ではなく実行時にコンソールを割り当てることを決定できることです。
Delphiにはこのオプションがあります。プロジェクトのリンカーオプションで "コンソールアプリケーションの生成" を確認してください。標準I/Oは、[〜#〜] gui [〜#〜]アプリケーションに付属するコンソールウィンドウに送信されます。次に、通常どおり Writeln
などを使用できます。
ドキュメントから Output (または Input )を読み取ります。
Delphiプログラムは、コンソールアプリケーションとしてリンクされている場合、標準出力ファイルを持ちます。
コンソールアプリケーションを作成した場合は、コンソールアプリケーションでOutputDebugString関数を試すことができます(私は試していません)。
または、DOS(コマンド/コンソール)ウィンドウから出力をキャプチャするのように、コンソールアプリケーションの出力をキャプチャできます。
また、コンソールアプリケーションランナークラスも確認できます。これらのクラスを使用します。彼らは素晴らしいと思います。