デバッグの目的で、ループの結果をVCLアプリケーションのコンソールウィンドウに表示できますか?
4 に答える
最も簡単な方法は、コンソール アプリケーションとしてコンパイルすることですが、通常のアプリケーション フレームワーク コードを 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.
コマンドラインから呼び出している場合、この方法には (通常) 新しいコンソールを作成するという欠点があります。メモリからリダイレクトを機能させるには、さらにコードが必要です。利点は、コンパイル時ではなく、実行時にコンソールを割り当てることを決定できることです。
Windows でデバッグ情報を出力する最も簡単な方法は、OutputDebugString()
その出力を受信できるアプリケーションを使用してから使用することです。Delphi IDE 自体のイベント ビューアはその入力を受け取ることができます。また、SysInternals の DebugView アプリケーションを使用して、 IDEがインストールされていないシステムで出力を取得することもできます。私の知る限り、GExpertsにも同様のツールがあります。これは、GUI アプリケーションにはデフォルトで出力を書き込むコンソールがないためです。それ以外の場合は作成する必要があります (Gerry の回答を参照)。
の利点の1 つはOutputDebugString()
、呼び出しがリリース ビルドに紛れても (または意図的にそこに残されていても)、アプリケーションが問題なく動作することですが、機密情報を出力しないように注意してください。上記のツール。
アドホック フォーム (つまり、メモ コントロールを使用) を作成し、そこに出力をルーティングすることもできます。
SmartInspect、CodeSiteなどの高度なログ機能もあります。
Delphi には、このためのオプションがあります。プロジェクトのリンカ オプションで「コンソール アプリケーションの生成」をチェックしてください。標準 I/O は、 GUIアプリケーションに付随するコンソール ウィンドウに送られます。その後Writeln
、通常どおり etc. を使用できます。
ドキュメントからOutput (またはInput )を読み取ります。
コンソール アプリケーションとしてリンクされている場合、Delphi プログラムには標準出力ファイルがあります。
コンソールアプリケーションを作成した場合は、コンソールアプリケーションでOutputDebugString関数を試すことができます(私は試しませんでした)。
または、DOS(コマンド/コンソール)ウィンドウからの出力のキャプチャのように、コンソールアプリケーションの出力をキャプチャすることもできます。
また、コンソールアプリケーションランナークラスを確認することもできます。私はこれらのクラスを使用します。彼らは素晴らしいと思います。