Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Bei Create wird kein neuer Speicher zugewiesen (https://www.delphipraxis.net/67692-bei-create-wird-kein-neuer-speicher-zugewiesen.html)

3_of_8 18. Apr 2006 17:46


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?

mkinzler 18. Apr 2006 17:51

Re: Bei Create wird kein neuer Speicher zugewiesen
 
Meinst du referenz mit Pointer? Zeig mal deinen Code

3_of_8 18. Apr 2006 17:58

Re: Bei Create wird kein neuer Speicher zugewiesen
 
Der Code wird glaub ich nicht so viel helfen:

(Die Klasse heißt TQuestion)

Delphi-Quellcode:
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;
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.

Dax 18. Apr 2006 18:05

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.

3_of_8 18. Apr 2006 18:17

Re: Bei Create wird kein neuer Speicher zugewiesen
 
Jo. Danke. Ich probiers aus. Ich arbeite selten mit Pointern. (Jedenfalls nicht direkt)

Khabarakh 18. Apr 2006 18:29

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.

3_of_8 18. Apr 2006 18:53

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 08:23 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