tags:

views:

2821

answers:

6

Hi how I get an application to write debug text to the Event Log window in the Delphi Ide (BDS2006)

EDIT: how does one change the color of the text ?

+10  A: 

OutputDebugString('Hello,World');

I think you may need to add Windows to your 'uses' list. Not 100% sure on that...

Roddy
A: 

The text colour can't be changed as far as I know: It's a feature of the Delphi IDE that it adds additional messages into that window for thread start/stop, DLL load/unload, with their own specific colour.

Roddy
+4  A: 

yes, You can use OutputDebugString

If you want get more powerful features for controlling and managing debug output, such as highlighting filter you should use dbgview(http://technet.microsoft.com/en-us/sysinternals/bb896647.aspx). Note: dbgview can't capture the debug log When you run your application in Delphi IDE.

A: 

Using dbgview it is possible to have colors, filters etc.

Harriv
+1  A: 
procedure Write2EventLog(Source,Msg: string);
var h: THandle;
    ss: array [0..0] of pchar;
begin
    ss[0] := pchar(Msg);
    h := RegisterEventSource(nil,  // uses local computer
             pchar(Source));          // source name
    if h <> 0 then
      ReportEvent(h,           // event log handle
            EVENTLOG_ERROR_TYPE,  // event type
            0,                    // category zero
            0,        // event identifier
            nil,                 // no user security identifier
            1,                    // one substitution string
            0,                    // no data
            @ss,     // pointer to string array
            nil);                // pointer to data
    DeregisterEventSource(h);
end;
Jk
The Delpi IDE "event log" window is unrelated to windows event logging. Confusing, I know!
Roddy
+1  A: 

Apart from what has been said (i.e. OutputDebugString and using DebugView instead of the built-in log viewer), you can change the color of messages in the log view via the Options. The easiest way to get there is by right-clicking in the log pane and selecting "Properties" from the context menu. On the tab that will appear you can set the color to use for "Output Debug Strings" from the "Colors" section. Obviously this will change the color of all messages emitted via OutputDebugString - it will not allow individual coloring. For that you'd better use DebugView's filters.

Oliver Giesen