![]() |
PPropInfo dynamsich anlegen
Ich brauche in meinem Programm eine dynamsich erzeugte PPropInfo, damit ich RTTI "simulieren" kann.
Ich habe folgenden Versuch gemacht, diese im Speicher anzulegen:
Delphi-Quellcode:
Liege ich damit richtig, irgendwie stehe ich auf dem Schlauch!var FPropInfo: PPropInfo; // PropInfo initialisieren GetMem(FPropInfo, SizeOf(TPropInfo)); GetMem(FPropInfo^.PropType, SizeOf(Integer)); GetMem(FPropInfo^.PropType^, SizeOf(TTypeKind)); Merci, Hans. |
Re: PPropInfo dynamsich anlegen
Ein einfaches
Delphi-Quellcode:
sollte reichen.
New(FPropInfo);
MfG, Dirk |
Re: PPropInfo dynamsich anlegen
Dadurch werden die anderen Zeiger aber nicht angelegt.
@Ersteller: Das sieht grundsätzlich ganz gut aus, für FPropInfo^.PropType^ brauchst du aber mehr Speicher - hinter dem TTypeKind steht noch eine Längenangabe, der Name des Typs und einige andere Informationen, die abhängig vom TypeKind sind. |
Re: PPropInfo dynamsich anlegen
Das mit New(FPropInfo) war auch mein erster Gedanke.
Da aber PropType ein Pointer auf einen Pointer auf einen Record ist, ist die Sachen nicht so einfach. Ich habe jetzt einfach die Record-Typen, also TPropInfo, usw. in der Klasse angelegt und den Zeiger darauf zeigen lassen.
Delphi-Quellcode:
Nicht sehr elegant, aber es hat funktioniert und das auch noch ohne Speicherloch!
var
FPropInfoRecord: TPropInfo; FTypeKindPointer: PTypeInfo; FTypeKindRecord: TTypeInfo; FPropInfo := @FPropInfoRecord; FPropInfo^.PropType := @FTypeKindPointer; FTypeKindPointer := @FTypeKindRecord; Danke allen, Hans. |
Re: PPropInfo dynamsich anlegen
Schnapp dir D2010 - da brauchst du den Humbug nicht mehr machen. Die neue RTTI ist Klasse.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11: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 by Thomas Breitkreuz