Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Record in Linearer Liste
HotCoffee - Mi 03.11.10 22:30
Titel: Record in Linearer Liste
Hallo,
da ich nicht TList verwenden wollte, habe ich mir eine eigene Lineare Liste geschrieben, in die ich Daten einfuegen kann, die von Pointer abgeleitet sind. Geplant war eigentlich nun verschiedene records einzufügen, leider funktioniert das nicht. Welchen Typ statt Pointer muss ich hier nehmen?
platzwart - Mi 03.11.10 23:01
Naja, du musst eben den Typ deines Records nehmen :gruebel: Ansonsten, wenn du doch einen Pointer nehmen willst, dann eben einen Pointer auf das Record. Wobei ich dir die TList sehr ans Herz legen möchte, da sie wunderbar funktioniert und durchdacht ist. Oder eben du nimmst eine angepasste Liste, z.B. für Objekte (dann bräuchtest du auch keine Records mehr -> das wäre dann echt objektorientiert und somit sauber).
HotCoffee - Do 04.11.10 00:10
Hm, aber was mache ich denn, wenn die Liste für unterschiedliche Records funktionieren soll? Und was noch besser wäre, gibt es eine Möglichkeit Variablen die in allen Records enthalten sind abzugleichen?
platzwart - Do 04.11.10 00:14
1) Anstatt Records erstellst du Klassen. Eine Oberklasse und davon entsprechend Klassen ableiten. Dann nimmst du in die Liste immer nur einen Pointer auf das Objekt auf. Beim Zugriff auf den Pointer tust du dann entsprechend typecasten...
2) Vergleichen? Dann vergleichst du eben if(a.name = b.name) then...
jaenicke - Do 04.11.10 06:19
Wobei da TObjectList sinnvoller ist, da es direkt Objekte enthält und die, wenn man das möchte, auch automatisch freigibt.
Außerdem kann man davon eine eigene typisierte Liste ableiten, die direkt Objekte eines bestimmten Typs enthält (bis Delphi 2007) oder direkt eine typisierte Variante davon benutzen (Delphi 2009+).
Dann fällt das Casten in die Oberklasse weg.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!