![]() |
Re: Adresse eines dynamischen typisierten Arrays als Paramet
So, ich hab jetzt alle Arrays auf TList-Klassen umgestellt und verwalte die ganzen Pointer ab sofort in den TList-Klassen.
Durch den selben Trick den ich auch schon bei den Arrays angewendet habe, ich deklariere bei der Übergabe eines Parameters an eine Funktion einen Zeiger auf eine Basisklasse übergebe dann aber einen Zeiger auf eine von der Basisklasse abgeleitete Klasse, brauche ich mich gar nicht mehr mit der Casterei herumschlagen. Ist zwar nicht sonderlich objektorientiert, aber immerhin habe ich mir dadurch einigen Aufwand erspart. Jetzt stellt sich mir nur das folgende Problem: Da ich bei dem erzeugen einer neuen Klasse diese nicht lokal anlegen darf sondern nur global kann ich bei der Erzeugung nicht ohne Pointer arbeiten. Ich deklariere nun also einen Pointer auf eine Klasse welcher sich lokal in einer Funktion befindet. Wie muss ich es nun anstellen das der Pointer auf einen für die Klasse reservierten Speicherbereich zeigt und die Klasse auch initialisiert wurde (d.h. der Konstruktor müsste auch aufgerufen werden) ? Vielen Dank im Vorraus ! Liebe Grüße, Thomas |
Re: Adresse eines dynamischen typisierten Arrays als Paramet
Also im Grunde so etwas: (?)
Delphi-Quellcode:
(in etwa - kann leicht anders sein...)
procedure GenerateInstance(Liste: TList);
var p: ^TDeineKlasse; begin p^ := TDeineKlasse.Create; Liste.Add(Pointer(p)); end; Du brauchst an sich dafür keinen lokalen Pointer, sondern kannst die Instanzerzeugung im Add machen:
Delphi-Quellcode:
Sinn kann es aber dann machen, wenn du vor dem Hinzufügen zur Liste noch mit der Instanz hantierst.
procedure GenerateInstance(Liste: TList);
begin Liste.Add(TDeineKlasse.Create); end; |
Re: Adresse eines dynamischen typisierten Arrays als Paramet
Hmm....klappt nicht:
Delphi-Quellcode:
Vielen Dank im Vorraus !
var Model:^TD3DXmodel;
Model^:=TD3DXModel.Create(D3DEngine.D3d9Device); Model^.Tuwas; //Zugriffsverletzung ! Liebe Grüße, Thomas |
Re: Adresse eines dynamischen typisierten Arrays als Paramet
Klar geht das nicht, du musst dir noch Speicher für deine Objektreferenz anfordern (mit New).
|
Re: Adresse eines dynamischen typisierten Arrays als Paramet
Achso, danke, genau DAS wollte ich wissen.
Thx nochmal ! Liebe Grüße, Thomas |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 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