2011-02-02 12 views
13

Recientemente tuve que hacer algunos cambios en algunos códigos Delphi. Por lo tanto, tengo algunas preguntas básicas:¿Cómo uso OutputDebugString para imprimir un mensaje que está en una variable de cadena?

  1. ¿Cómo salgo a la consola?
  2. ¿Cómo salgo a la consola con fx, una variable de cadena?

Empecé a usar OutputDebugString, pero no pude hacer que funcione con una variable.

+0

Cuando dices "salida a la consola" ¿estás realmente desarrollando una aplicación de consola o quieres que se imprima la salida de depuración? – Tony

+0

Es una aplicación con una GUI. Solo quiero escribir en el registro de eventos para las variables de depuración a las que estoy acostumbrado en fx. Java. –

+4

Vea también: http://stackoverflow.com/questions/4421042/how-can-i-write-to-console-window-for-debugging –

Respuesta

21

Puede escribir una función de envoltura para encargarse de las variables pasadas a OutputDebugString como espera un PChar.

Algo así como:

procedure DebugMsg(const Msg: String); 
begin 
    OutputDebugString(PChar(Msg)) 
end; 

Hay una referencia útil para las técnicas de depuración here.

Y si su Delphi está un poco oxidado, está el siempre útil sitio Delphi Basics. Lo uso mucho :)

+0

Esto hizo el truco. ¡Gracias amigo! –

0

Si tiene una aplicación de consola, solo use las funciones globales write() y writeln(). Si tiene una aplicación de GUI y desea crear una ventana de consola separada, las cosas pueden ser complicadas (this article lo guiará a través del proceso, aunque está en C++).

+0

Puede marcar "generar aplicación de consola" en las opciones del enlazador. –

+0

También es posible redirigir WriteLn para que pueda, p. use un formulario con un campo de memo para mostrar todo lo que pase a Write() o WriteLn() –

3

Además de las 2 respuestas que obtuvo sobre OutputDebugString() y WriteLn(), para la depuración hay una mejor solución: CodeSite de Raize Software (vea http://www.raize.com/DevTools/CodeSite/Default.asp).

Si tiene Delphi XE, eso ya debería venir con una versión de CodeSite algo menos funcional.

Cuestiones relacionadas