![]() |
Ausgabe puffern und später ausgeben
Hallo,
ich stehe irgendwie auf dem Schlauch, vielleicht kann mir jemand einen Tipp geben. Das Problem Ich muss bei einer externen Komponente einen Fehler suchen und will dazu einige Werte ausgeben lassen, am besten in ein Memo-Feld. Mit showmessage() würde man sich totklicken :) Problem ist, dass die externe Komponente das Memo-Feld ja nicht ansprechen kann. Deshalb suche ich so etwas wie einen Ausgabepuffer, den ich dann in meiner Unit ansprechen und ausgeben kann. bei PHP gibt es z.B.
Code:
Gibt es so etwas auch in der Art für Delphi?
ob_start();
ob_get_contents(); ob_end_flush(); ob_end_clean(); Wenn nicht, wie könnte ich es dann umsetzen? PS: Das Programm muss dann auf einem anderen Rechner laufen, wo eine Delphi IDE nicht zur Verfügung steht. Besten Dank für jedweden Tipp. |
Re: Ausgabe puffern und später ausgeben
Du könntest der Komponente eine TStrings-Instanz als Parameter übergeben, an welche diese die Melsungen dann anhängt.
So könntest du <Memo>.Lines übergeben |
Re: Ausgabe puffern und später ausgeben
Danke für die superschnelle Reaktion.
TString wäre super, aber wie übergebe ich die, wenn ich den Code der Komponente nicht unbedingt ändern will/kann/muss? |
Re: Ausgabe puffern und später ausgeben
Da wirst du dann keinen Change haben.
Wie gibt die externe Komponente die Fehler den aus? |
Re: Ausgabe puffern und später ausgeben
Die Komponente speichert Daten in einer Datei. Könnte ich auch machen und dann in meiner Unit einlesen.
Aber ich dachte es geht einfacher. Ansonsten produziert die Komponente Exceptions.
Delphi-Quellcode:
raise EMyException.Create('Ein Fehler ist aufgetreten...')
|
Re: Ausgabe puffern und später ausgeben
Dann könntest du die Exceptionmeldungen doch manuell in das Memo verfrachten
|
Re: Ausgabe puffern und später ausgeben
Könntest Du das näher erläutern?
Provoziert man dann damit nicht, dass man aus der externen Komponente fliegt? |
Re: Ausgabe puffern und später ausgeben
Du kannst die Meldungen auch mit OutputDebugString() ausgeben.
Wenn das Programm aus der IDE gestartet wird siehst du die Meldungen im Meldungs-Fenster. Ausserhalb der IDE kannst du die Meldungen mit ![]() Diese Technik ist praktisch nebenwirkungsfrei. |
Re: Ausgabe puffern und später ausgeben
@mkinzler
Da die Komponente eh Excpetions abfängt, um bei Excpetions rauszuspringen, habe ich eine Variable hinzugefügt, die meine Werte sammelt. Wird eine Exception ausgelöst, übergebe ich meine Werte mit
Delphi-Quellcode:
und lese sie dann in meiner Unit mit E.Message aus.
try
... except ... raise EMyException.Create(myOutput); end @sx2008 Danke für den Tipp. Den werde ich mir auch einmal näher anschauen. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz