Autor Beitrag
HotCoffee
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: Mi 03.11.10 22:30 
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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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).

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
HotCoffee Threadstarter
Hält's aus hier
Beiträge: 14

Suse Linux 11, Win Xp SP 3, Win 2000, Win 98,

BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1054
Erhaltene Danke: 78

Win 7, Ubuntu 9.10
Delphi 2007 Pro, C++, Qt
BeitragVerfasst: 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...

_________________
Wissenschaft schafft Wissenschaft, denn Wissenschaft ist Wissenschaft, die mit Wissen und Schaffen Wissen schafft. (myself)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19346
Erhaltene Danke: 1754

W11 x64 (Chrome, Edge)
Delphi 12 Pro, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: 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.