![]() |
record zur Laufzeit analysieren
Hallo Leute,
ich habe ein Programm mit vielen wechselnden Datenstrukturen, die sich als record implementieren lassen. Jetzt würde ich gerne eine LIB schreiben, die diese Daten analysiert und im Header die Info einträgt, um sie später wieder richtig einzulesen, auch wenn sich der Inhalt des record erweitert hat. Wie bekomme ich zur Laufzeit Informationen zum Inhalt eines record? Danke im Voraus |
Moin jj-guitar,
erst einmal herzlich willkommen. Nun zu Deiner Frage. Ich habe das so verstanden, dass Du verschieden Recordtypen deklariert, und mit diesen Dateien erzeugt hast. Nun möchtest Du, nachträglich, den Records Header verpassen, damit Du weisst welchen Inhalt der jeweilige Record hat. Hab' ich das soweit richtig verstanden? |
Danke für die schnelle Antwort.
Ich hatte vor an die Typ-Informationen der records im Speicher zu kommen. Aber deine Antwort lässt mich vermuten, dass es solche Infos gar nicht gibt. Der Debugger hat sie ja. Aber wahrscheinlich nur in Debug-Dateien. Vielleicht kann man ja die eigene EXE-Datei scannen und die Infos da rausbekommen? |
Moin jj,
das Problem dabei dürfte folgendes sein: Wenn in der EXE, aus dem die Typinformationen stammen sollen (spielt keine Rolle, um welchen Typ es sich handelt), diese nicht angesprochen werden, so werden sie auch nicht mitgespeichert. Werden also in dem Programm keine TypInformationen zu einem bestimmten Typ angesprochen, werden die TypInformationen auch nicht mit gespeichert, was ja auch im Sinne einer möglichst kleinen EXE ist. Warum unnötige Daten speichern? Wenn Du mal einen Blick in die TypInfo.pas wirfst (so Du denn mindestens eine Pro Version hast), wirst Du feststellen, dass der Typ tkRecord in der Liste von TTypeKind vorkommt, es also zumindest mal angedacht war TypInformationen zu Records mit zu speichern. Möglicher Weise werden also TypDaten zu Records mit in die EXE übernommen, wenn man denn diese in irgendeiner Form anspricht. Ein Stichwort dazu wäre RTTI (RunTimeTypeInformation). Leider ist die TypInfo und deren Funktionen nicht sonderlich dokumentiert, so dass man auf eigene "Forschungen" angewiesen ist. Entweder durch Studium der TypInfo.pas, oder durch ergoogeln ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:30 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