![]() |
Zeiger in TList
Hallo, Versuche hier Mein Programm mit Pointer und TList zu erstellen. dabei verstehe ich das nicht so 100 %. Habe schon einige Tutorials duchgelesen aber mir bleiben immer noch fragen.
Zb. Wenn ich
Delphi-Quellcode:
Wenn ich jetzt eine Liste erstelle
type pElement : ^Element //zeiger auf eine Record
Element : Record Zahl1 : Integer; Zahl2 : Integer; End; Var ElementListe : TList ElementArray : array[1..20] of Element;
Delphi-Quellcode:
in einer Procedure die Zeiger erstelle und an ElementListe anhänge mit Procedure einfugen
ElementListe := TList.Create
Delphi-Quellcode:
Wenn ich auf die Daten in element zugreifen möchte muss ich doch wieder Zb.Procedure ZugreifenProcedure einfugen; Var MyElement : PElement; i : Integer; Begin For i := 1 to 20 do Begin New(MyElement); MyElement^ := ElementArray[i]; ElementListe.add(MyElement ); End; End;
Delphi-Quellcode:
muss ich hier jedesmal den Zeiger wieder mit freigeben. Procedure Zugreifen; Var MyElement : PElement; Begin New(MyElement); MyElement:= ElementListe[0]; // - erstes Element x := MyElement.Zahl1 ;
Delphi-Quellcode:
Variablen sind doch nur gülig in der Procedur. Zeiger auch ?
dispose(MyElement);
oder bleiben die Zeiger erhalten wenn ich sie nicht freigebe und der Speicher ist irgendwann voll ?[/COLOR] End; |
AW: Zeoiger in TList
Zunächst einmal, ein Zeiger ist eine Variable die eine Speicheradresse enthält. Mit New() reservierst Du diesen Speicher und mit Dispose gibst du ihn wieder frei. Nach einem Dispose solltest Du den Inhalt deines Pointers auf Nil setzen, damit klar ist, daß der Zeiger nirgendwo hin zeigt.
Tlist verwaltet Zeiger. Liste[0] liefert einen Zeiger und keinen Speicherinhalt. Den erreichst Du z.B. durch
Delphi-Quellcode:
.
meintyp(liste[0]^).Feld1
Gruß k-H |
AW: Zeoiger in TList
Hallo,
schau dir mal TObjectList an und steige um auf Klassen. Heiko |
AW: Zeoiger in TList
Hi,
wenn Du Englisch kannst, dann findest Du hier einen guten Artikel über Pointer: ![]() ![]() Gruß |
AW: Zeiger in TList
Hallo, erstmal vielen dank für euere Antworten. Ich muss mir das alles noch mal genau ansehen.
Grus. Johnny ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:40 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