AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Zeiger in TList

Ein Thema von js747a · begonnen am 13. Jul 2016 · letzter Beitrag vom 14. Jul 2016
Antwort Antwort
js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#1

Zeiger in TList

  Alt 13. Jul 2016, 22:41
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:
type pElement : ^Element //zeiger auf eine Record
     Element : Record
        Zahl1 : Integer;
        Zahl2 : Integer;
     End;

Var ElementListe : TList
    ElementArray : array[1..20] of Element;
Wenn ich jetzt eine Liste erstelle

ElementListe := TList.Create in einer Procedure die Zeiger erstelle und an ElementListe anhänge mit Procedure einfugen
Delphi-Quellcode:
    
Procedure einfugen;
Var MyElement : PElement;
    i : Integer;
Begin
  For i := 1 to 20 do
  Begin
    New(MyElement);
    MyElement^ := ElementArray[i];
    ElementListe.add(MyElement );
  End;
End;
Wenn ich auf die Daten in element zugreifen möchte muss ich doch wieder Zb.Procedure Zugreifen
Delphi-Quellcode:
  
Procedure Zugreifen;
Var MyElement : PElement;
Begin
    New(MyElement);
    MyElement:= ElementListe[0]; // - erstes Element
    x := MyElement.Zahl1 ;
muss ich hier jedesmal den Zeiger wieder mit freigeben.


dispose(MyElement); Variablen sind doch nur gülig in der Procedur. Zeiger auch ?
oder bleiben die Zeiger erhalten wenn ich sie nicht freigebe und der Speicher ist irgendwann voll ?[/COLOR]


End;

Geändert von TBx (14. Jul 2016 um 08:20 Uhr) Grund: Titel korrigiert und Delphi-Tags eingefügt
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Zeoiger in TList

  Alt 13. Jul 2016, 23:44
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 meintyp(liste[0]^).Feld1 .

Gruß
k-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Zeoiger in TList

  Alt 14. Jul 2016, 06:20
Hallo,
schau dir mal TObjectList an
und steige um auf Klassen.

Heiko
Heiko
  Mit Zitat antworten Zitat
relocate

Registriert seit: 26. Mai 2009
60 Beiträge
 
#4

AW: Zeoiger in TList

  Alt 14. Jul 2016, 08:19
Hi,

wenn Du Englisch kannst, dann findest Du hier einen guten Artikel über Pointer: http://rvelthuis.de/articles/articles-pointers.html oder hier: http://www.delphibasics.co.uk/Article.asp?Name=Pointers. Zeiger haben ihre Tücken, aber wenn man sie verstanden hat, ist es eigentlich nicht schwer. Da ich sehr komplexe Datenstrukturen habe, die mit den einfachen Standardwerkzeugen kaum abzubilden sind, nutze ich sie auch noch regelmäßig. Es kommt immer darauf an, was man vor hat.

Gruß
  Mit Zitat antworten Zitat
js747a

Registriert seit: 11. Aug 2008
Ort: Nord hessen
43 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: Zeiger in TList

  Alt 14. Jul 2016, 12:21
Hallo, erstmal vielen dank für euere Antworten. Ich muss mir das alles noch mal genau ansehen.

Grus. Johnny

http://www.johnny-modellbau.de/
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
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