delphi windows-console

delphi - ¿Cómo puedo escribir en la ventana de la consola para la depuración?



windows-console (4)

Delphi tiene una opción para esto, marca "Generar aplicación de consola" en las opciones del enlazador para el proyecto. La E / S estándar se dirigirá a una ventana de consola que acompañará a su aplicación GUI . Entonces puedes usar Writeln etc. como lo harías normalmente.

Leer Output (o Input ) de los documentos:

Los programas Delphi tienen un archivo de salida estándar si están vinculados como aplicaciones de consola.

¿Puedo mostrar el resultado de un bucle en la ventana de la consola en una aplicación VCL con fines de depuración?


La forma más simple es compilar como una aplicación de consola, pero vuelva a colocar el código de la infraestructura de aplicación normal en el 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.

Una forma un poco más compleja es usar la llamada API AllocConsole de Windows:

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.

Este método tiene la (generalmente) desventaja de crear una nueva consola si está llamando desde la línea de comando. Desde la redirección de la memoria hasta el trabajo también se necesita más código. La ventaja es que puede decidir asignar la consola en tiempo de ejecución, en lugar de tiempo de compilación.



En Windows, la forma más sencilla de generar información de depuración es usar OutputDebugString() y luego usar una aplicación capaz de recibir esa salida. El visor de eventos en Delphi IDE puede recibir esa entrada, o puede usar la aplicación DebugView de SysInternals para obtener resultados en un sistema que no tiene instalado el IDE. AFAIK, GExperts también tiene una herramienta similar. Esto se debe a que una aplicación GUI no tiene por defecto una consola donde escribir salida, de lo contrario, debe crear una (ver la respuesta de Gerry).

Una de las ventajas de OutputDebugString() es que la aplicación funcionará sin problemas incluso si una llamada entra en una compilación de lanzamiento (o si se deja intencionalmente), pero tenga cuidado de no generar información confidencial, ya que pueden leerse usando una de las herramientas de arriba

También puede crear una forma ad-hoc (es decir, con un control memo) y la salida de ruta allí.

También hay instalaciones avanzadas de registro como SmartInspect , CodeSite y otros.