Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Ausgabe auf "Pseudoconsole" umleiten (https://www.delphipraxis.net/82039-ausgabe-auf-pseudoconsole-umleiten.html)

Bernhard Geyer 7. Dez 2006 07:49


Ausgabe auf "Pseudoconsole" umleiten
 
Ich verwende in meinem Programm eine DLL welche bei vorhandensein eines Consolenfensters Debugausgaben auf diese erledigt.
Jedoch möchte ich für Fehlersuche nicht jedesmal meine Anwendung als Consolenapplikation kompilieren und dieses "Hässliche" Fenster haben, deshalb suche ich nach einer Möglichkeit intern ein verstecktes Consolenfenster zu erzeugen welche ich bei Bedarf auslese und in einem eigenen "Debugfenster" anzeige.

Hat jemand für mich Tipps/Codbeispiel/...?

marabu 7. Dez 2006 07:57

Re: Ausgabe auf "Pseudoconsole" umleiten
 
Hallo Bernhard,

hilft dir vielleicht dieser thread weiter: gui anwendung mit consolenausgabe

Freundliche Grüße

SirThornberry 7. Dez 2006 09:54

Re: Ausgabe auf "Pseudoconsole" umleiten
 
Wenn es um eine versteckte Ausgabe geht kannst du doch auch ein Memo etc. nehmen. Dann übergibst du der DLL einen Funktionspointer von einer Funktion welche Texte entgegen nimmt. Somit kannst du im Hauptprogramm selbst eintscheiden wie du die Debugausgabe anzeigst. Du kannst dir natürlich auch mal OutputDebugString anschauen, das ist genau für sowas gedacht.

Bernhard Geyer 7. Dez 2006 14:01

Re: Ausgabe auf "Pseudoconsole" umleiten
 
Zitat:

Zitat von SirThornberry
Wenn es um eine versteckte Ausgabe geht kannst du doch auch ein Memo etc. nehmen. Dann übergibst du der DLL einen Funktionspointer von einer Funktion welche Texte entgegen nimmt. Somit kannst du im Hauptprogramm selbst eintscheiden wie du die Debugausgabe anzeigst. Du kannst dir natürlich auch mal OutputDebugString anschauen, das ist genau für sowas gedacht.

Diese "DLL" ist eine Java-Klasse per JNI angebunden. Und hier alle Exception etc. auf diese Funktion umzubiegen ist fraglich ob das geht.

Ich habe jetzt versucht den Code der z.B. hier angegeben ist versucht zu verwenden.

Jedoch müßte ich Standard-Output der eigenen Instanz auf die per CreatePipe erzeugten Handels umbiegen.
Mit welcher Win32-API könnte ich das machen?

MaBuSE 8. Dez 2006 09:01

Re: Ausgabe auf "Pseudoconsole" umleiten
 
Zitat:

Zitat von Bernhard Geyer
Jedoch möchte ich für Fehlersuche nicht jedesmal meine Anwendung als Consolenapplikation kompilieren.

Brauchst Du doch gar nicht.

Wenn Du eine Console brauchst, dann erzeug dir eine.
Wenn Du sie nicht mehr brauchst, entferne sie wieder.

Dieses Consolenfenster sollte auch Deine Java Dingens erkennen ;-)

z.B.:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  AllocConsole;
  SetConsoleTitle('Debug Ausgaben');
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  FreeConsole;
end;

procedure TForm1.Button3Click(Sender: TObject);
begin
  if GetConsoleCP <> 0 then
  begin
    WriteLn('Das ist ein Log');
  end;
end;

Bernhard Geyer 8. Dez 2006 09:24

Re: Ausgabe auf "Pseudoconsole" umleiten
 
Zitat:

Zitat von MaBuSE
Zitat:

Zitat von Bernhard Geyer
Jedoch möchte ich für Fehlersuche nicht jedesmal meine Anwendung als Consolenapplikation kompilieren.

Brauchst Du doch gar nicht.

Wenn Du eine Console brauchst, dann erzeug dir eine.
Wenn Du sie nicht mehr brauchst, entferne sie wieder.

Dieses Consolenfenster sollte auch Deine Java Dingens erkennen ;-)

Diese Lösung kenn ich schon und werde ich auch im Notfall nehmen wenn es keine andere Lösung gibt.
Ich wollte aber dieses "hässliche" Fenster vermeiden und auch eine einfache Möglichkeit bieten das die dort geschriebenen Ausgaben z.B. einfach per Textdatei oder E-Mail mir zugesendet werden.


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz