![]() |
Bei Create wird kein neuer Speicher zugewiesen
Morgen.
Ich speichere Pointer auf ein Objekt in einem Variant ab. Mein Problem: Ich rufe in einer For-Schleife 10 mal TMyClass.Create auf. Allerdings wird dabei jedesmal der gleiche Speicher zugewiesen, also der Pointer hat immer den gleichen Wert. Was kann ich dagegen tun? |
Re: Bei Create wird kein neuer Speicher zugewiesen
Meinst du referenz mit Pointer? Zeig mal deinen Code
|
Re: Bei Create wird kein neuer Speicher zugewiesen
Der Code wird glaub ich nicht so viel helfen:
(Die Klasse heißt TQuestion)
Delphi-Quellcode:
Ich kann später das ganze dereferenzieren. Ich erhalte allerdings immer die zuletzt erzeugte Instanz. BTW: Die List ist eine von mir entwickelte doppelt verknüpfte, zyklische Liste.
var I: Integer;
Question: TQuestion; begin List:=TCyclicList.Create; for I:=1 to 10 do begin Question:=TQuestion.Create; Question.Message:='Blubb'+inttostr(I); Question.Answer1:=inttostr(I); Question.Answer2:=inttostr(I*2); Question.Answer3:=inttostr(I*3); Question.Answer4:=inttostr(I*4); Question.RightAnswer:=Random(4)+1; showmessage(IntToStr(Integer(@Question))); //Gibt immer den gleichen Wert aus List.Add(Integer(@Question)); end; |
Re: Bei Create wird kein neuer Speicher zugewiesen
Argl! @Question bezeichnet hier was auf dem Stack, bei dir wohl [esp-4].. Nimm das @ weg und alles läuft.
|
Re: Bei Create wird kein neuer Speicher zugewiesen
Jo. Danke. Ich probiers aus. Ich arbeite selten mit Pointern. (Jedenfalls nicht direkt)
|
Re: Bei Create wird kein neuer Speicher zugewiesen
Das gehört aber leider zu den absoluten OOP-Grundlagen. Selbst unter .Net, wo du einen Pointer höchstens noch im Zoo siehst.
|
Re: Bei Create wird kein neuer Speicher zugewiesen
Ja, ich weiß. Jetzt wo ihrs gesagt habt... Geht zwar schon ein bisschen in ASM rein (glaub ich)...
Egal. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 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