AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Ausgabe puffern und später ausgeben

Ein Thema von amigage · begonnen am 9. Jan 2010 · letzter Beitrag vom 9. Jan 2010
Antwort Antwort
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#1

Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:25
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:
ob_start();
ob_get_contents();
ob_end_flush();
ob_end_clean();
Gibt es so etwas auch in der Art für Delphi?
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.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:28
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
Markus Kinzler
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:30
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?
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:33
Da wirst du dann keinen Change haben.
Wie gibt die externe Komponente die Fehler den aus?
Markus Kinzler
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:48
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.
raise EMyException.Create('Ein Fehler ist aufgetreten...')
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:49
Dann könntest du die Exceptionmeldungen doch manuell in das Memo verfrachten
Markus Kinzler
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 13:54
Könntest Du das näher erläutern?
Provoziert man dann damit nicht, dass man aus der externen Komponente fliegt?
  Mit Zitat antworten Zitat
Benutzerbild von sx2008
sx2008

Registriert seit: 16. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 14:09
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 DebugView anzeigen.
Diese Technik ist praktisch nebenwirkungsfrei.
fork me on Github
  Mit Zitat antworten Zitat
amigage

Registriert seit: 11. Nov 2005
Ort: Leipzig
272 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Ausgabe puffern und später ausgeben

  Alt 9. Jan 2010, 14:27
@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:
try
  ...
except
  ...
  raise EMyException.Create(myOutput);
end
und lese sie dann in meiner Unit mit E.Message aus.

@sx2008
Danke für den Tipp. Den werde ich mir auch einmal näher anschauen.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:42 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