Friday, 19 December 2008

Capturar la salida del Debug con OutputDebugString

OutputDebugString() es una API del SO, que permite a tu aplicación hablar con el Debugger. Desde Delphi, cuando generamos un error en el IDE, este empieza ha hacer llamadas al Debugger, enviando un String con la información del error que se esta generando. Son los típicos errores o warnings que aparecen en la ventana de Messages.

En este caso, por ejemplo:



En la línea del uses, he añadido un uses que no existe. El delphi lo detecta como muestro en la ventana de la izquierda, y esto hace que el IDE empieze a lanzar errores. Estos errores se lanzan a través del Kernel o a través de Win32, y pueden ser capturados.

Como es de esperar, como que esta función es del windows, microsoft tiene una pequeña herramienta que es capaz de capturar estos mensajes con una aplicación que se llama DebugView. Esta aplicación la podeis encontrar aquí.

Con el delphi, podemos generar llamadas de este tipo. Aquí os dejo un ejemplo muy sencillo:





procedure TForm1.Button1Click(Sender: TObject);
function FormataFecha(aDateTime: TDateTime): string;
begin
Result := FormatDateTime('dd.mm.yy hh:nn:ss zzz', aDateTime);
end;
var
StartDT : TDatetime;
begin
StartDT := Now;
OutputDebugString(PChar(Format('[%s][%s] %s',
['Funcion', FormataFecha(StartDT),'texto prueba evento Button1Click'])));
end;



Desde el Event Log del Delphi, podemos ver la salida del mensaje que hemos generado:



Con el DebugView, podemos ver la verbose que genera el IDE del Delphi, i capturarlo con la herramienta:



0 comments:

Post a Comment