Domanda

Posso visualizzare il risultato di un ciclo nella finestra della console in un VCL applicazione per il debug scopi?

È stato utile?

Soluzione

In Windows, il modo più semplice per le informazioni output di debug è quello di utilizzare OutputDebugString() e quindi utilizzare un programma in grado di ricevere tale uscita. Il Visualizzatore eventi in Delphi IDE stesso è in grado di ricevere tale ingresso, oppure è possibile utilizzare il DebugView applicazione dal SysInternals per ottenere l'output su un sistema che non ha l'IDE installato. Per quanto ne so, GExperts dispone di uno strumento simile anche. Questo perché un'applicazione GUI non ha per default una console dove poter scrivere l'output, altrimenti si devono creare uno (vedi risposta di Gerry).

Uno dei vantaggi di OutputDebugString() è che l'applicazione funziona senza problemi anche se una chiamata scivola in una build di rilascio (o sia se lasciato lì intenzionalmente), ma fate attenzione quindi alle informazioni sensibili non in uscita, perché possono essere letti utilizzando uno degli strumenti di cui sopra.

Si potrebbe anche creare un modulo ad hoc (che è, con un controllo memo) e uscita itinerario in questione.

Ci sono anche avanzate funzionalità di registrazione come SmartInspect , CodeSite e altri.

Altri suggerimenti

Il modo più semplice è quello di compilare come un'applicazione di console, ma mettere il normale codice di framework per applicazioni nel 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.

Un modo un po 'più complesso è quello di utilizzare la chiamata API di Windows 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.

Questo metodo ha il (solito) svantaggio di creare una nuova console se si chiama da linea di comando. Dalla memoria diventi reindirizzamento al lavoro richiede un po 'di codice pure. Il vantaggio è che si può decidere di destinare la console in fase di esecuzione, piuttosto che il tempo di compilazione.

Delphi ha un'opzione per questo, di controllo "Genera applicazione console" nelle opzioni del linker per il progetto. I / O standard viene indirizzato verso una finestra di console che accompagnerà il tuo GUI applicazione. Quindi è possibile utilizzare Writeln ecc . come si farebbe normalmente.

uscita (o ingresso ) dalla documentazione:

  

programmi Delphi hanno un output standard   file se sono collegati come console   applicazioni.

Se hai scritto l'applicazione di console, si può provare la funzione OutputDebugString nell'applicazione di console (non ho provato).

In alternativa, è possibile catturare l'output dell'applicazione console come in Capture l'uscita da un DOS (comando / console) finestra .

Inoltre, è possibile controllare Classes Applicazione console Runner . Io uso queste classi. Penso che siano grandi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top