Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Eine Art var_dump() in Delphi..?! (https://www.delphipraxis.net/100160-eine-art-var_dump-delphi.html)

ThE_-_BliZZarD 23. Sep 2007 20:49


Eine Art var_dump() in Delphi..?!
 
Hallihallo liebe Gemeinde,

ich suche eine Art var_dump() Funktio, wie es sie in PHP gibt, für Delphi.

Ich habe oft irgendwo in meinem Script variablen, Arrays, Strukturen oder Records, deren Werte ich gerne zur Laufzeit ausgeben lassen würde. In PHP gibt es für sowas die wunderbare Funktion var_dump(). Im PHP-Sourcecode lässt sich leider nichts finden, was (in meinen Augen)wirklich zu der Funktion gehört und portierbar wäre, ich finde den PHP-Source irgendwie furchtbar unlogisch..

Falls jemand sich irgendwann mal so eine Funktion geschrieben hat, oder weiß, wie man den PHP-Source porten könnte, fände ich es echt endgeil, wenn diese Person den Source (oder Hinweise/Tipps) hier posten könnte :D

Danke!

arbu man 23. Sep 2007 20:55

Re: Eine Art var_dump() in Delphi..?!
 
PHP und Delphi sind komplett unterschiedlich, in Delphi hast du einen Debugger, der dir alles anzeigen kann.
Ich glaub in der DP gibt es ein Tutorial zum Debuggen wie ausführlich es ist weiß ich allerdings nicht. (ich gehöre zu der Sorte die nicht Debuggt, da meine Programme keine Fehler haben :mrgreen: )

mfg, Björn

SirThornberry 23. Sep 2007 20:56

Re: Eine Art var_dump() in Delphi..?!
 
ich glaub da wirst du schlechte Chancen haben. Denn PHP ist eine Interpretersprache und Delphi nicht. Unter Delphi kannst du dynamsich Speicher anfordern ohne eine Variable darauf zu halten und kannst da auch etwas rein schreiben.

Phoenix 23. Sep 2007 20:58

Re: Eine Art var_dump() in Delphi..?!
 
Du müsstest eine Funktion schreiben, die diese Ausgabe für jeden möglichen Variablentyp machen würde. Also eine für Ganzzahlen, eine für Fließkommawerte, eine für Strings, eine für TObject, eine für TComponent, halt eine für jeden Datentyp, den Du ausgeben müsstest.

Teilweise kann Dir da ggf. die RTTI weiterhelfen, aber Delphi ist nunmal keine interpretierte Sprache wie PHP, wo der Interpreter alle Informationen über die verwendeten Typen hat, und die RTTI ist auch nicht so mächtig wie das Reflection in .NET, also wird Dir da ne menge Handarbeit nicht erspart bleiben.

ThE_-_BliZZarD 23. Sep 2007 21:00

Re: Eine Art var_dump() in Delphi..?!
 
wiiiiii.. danke für die antworten.. das wird ja was ~_~..

Naja, da habe ich nicht nachgedacht. Sry. Ich hatte einfach diese.. Hoffnung, das jemand schon mal das gleiche Bedürfnis gehabt hat und deswegen auch mal sowas geproggt hat. Für soviel Aufwand mach ichs dann doch lieber immer von Hand..^^

BenjaminH 23. Sep 2007 21:05

Re: Eine Art var_dump() in Delphi..?!
 
Das ist jetzt eine kurze ungeprüfte Überlegung.
dpCollection kann jeden Datentyp speichern. Wird ein Objekt gespeichert, so sind alle dazugehörigen Eigenschaften usw. gespeichert. Jetzt könnte man einfach das was gespeichert wurde ausgeben.

Stimmt doch, oder? Müsste ich mal probieren, wenn ich Zeit habe.

Phoenix 23. Sep 2007 21:10

Re: Eine Art var_dump() in Delphi..?!
 
Zitat:

Zitat von BenjaminH
Das ist jetzt eine kurze ungeprüfte Überlegung.

leider zu ungeprüft. ;-)
Das funktioniert nur mit von TCollectionItem abgeleiteten klassen. Und das generelle Serialisieren von Objekten geht auch nur mit von TPersistent abgeleiteten Objekten. Leider nicht mit Structs.

Wie gesagt: Mit der RTTI kann man schon einiges über die Typen erfahren (u.a. published Properties), aber das hilft eben auch nicht bei Structs. In den Fällen würde ich mir - wenn man für einen bestimmten Datentyp wirklich eine Ausgabe braucht - diese eben einmal selber schreiben. Dann kann man die immer wieder verwenden, wenn man diesen Typ ausgeben will - egal wo und wie dr verschachtelt ist.


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:58 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