![]() |
TList mit Sammlung von Klassen
Hallo Leute,
habe folgende Klassen und TList:
Delphi-Quellcode:
Wie kann ich nun korrekt auf meine Klasse TTerminal in der TList zurückgreifen? Bin leider noch absoluter Anfänger und habe keine Ahnung...;)
TTerminal = class
ID :Integer; Typ :String; Bezeichn :String; Beschreib :String; End; TSoftwarePaket = class ... puplic Terminals: TList; ... end; TSoftwarePaket.Init begin ... Terminals := TList.Create; end; ... procedure XY; reg := SoftwarePaket.Create; Terminals.Add(TTerminal); // wie greife ich jetzt korrekt auf meine Terminals[0].ID := test; // Klasse TTerminal zurück? Viele Dank, -fapsons.. |
Re: TList mit Sammlung von Klassen
Hallo :hi:
das geht mit einem so gennaten TypeCast:
Delphi-Quellcode:
mfg
TKlasse(List[i]).Eigenschaft := Wert;
// oder besser mit Sicherung: (List[i] as TKlasse).Eigenschaft := Wert; Christian |
Re: TList mit Sammlung von Klassen
Habe glaube ich noch nicht so richtig verstanden, was du damit meinst.
Habe es jetzt so gemacht:
Delphi-Quellcode:
Was mache ich falsch?
reg := TSoftwarePaket.Create;
reg.Terminals.add(reg.Terminals[l] as TTerminal).ID := 'String'; |
Re: TList mit Sammlung von Klassen
Delphi-Quellcode:
Auf jedem Fall ist es gut sich über TObjectList zu informieren.
var myTerminal: TTerminal;
begin myTerminal := TTerminal.Create(); myList.Add(myTerminal);// hinzufühgen WriteLn( TTerminal(myList.Items[0]).ID ); // zugreifen end; |
Re: TList mit Sammlung von Klassen
Habe es jetzt so gemacht:
Delphi-Quellcode:
Sobald jedoch n größer als 0 wird, kommt die Fehlermeldung, dass der Wert 1 den maximalen Listenindex überschreitet. Woran liegt das? Ist das nicht dynamisch?TTerminal(reg.LTerminals.Items[n]).ID := 123; |
Re: TList mit Sammlung von Klassen
Danke, habs selber hinbekommen...;)
|
Re: TList mit Sammlung von Klassen
Jetzt ist leider ein neues Problem aufgetreten:
Wenn ich die Eigenschaften von TTerminal aus der TList wie folgt beschreibe, sind alle TTerminals im TList identisch. Sprich alle Eigenschaften des TTerminal der TList[1] gleichen der von TTerminal der TList[2]...usw. Ich hoffe ihr könnt mir folgen..;) [delphi] with D_DataModule.DataSet do //Terminaltypen abrufen begin SelectSQL.Clear; SelectSQL.Text := 'select * from terminal order by 1 asc'; Open; end; n := 0; while not D_DataModule.DataSet.Eof do begin reg.LTerminals.Add(Terminal); TTerminal(reg.LTerminals.Items[n]).ID := D_DataModule.DataSet.FieldByName('TMID').Value; TTerminal(reg.LTerminals.Items[n]).Typ := D_DataModule.DataSet.FieldByName('TYP').AsString; TTerminal(reg.LTerminals.Items[n]).Bezeichn := D_DataModule.DataSet.FieldByName('BEZEICHNUNG').As String; TTerminal(reg.LTerminals.Items[n]).Beschreib := D_DataModule.DataSet.FieldByName('BESCHREIBUNG').A sString; D_DataModule.DataSet.Next; n := n + 1; end; D_DataModule.DataSet.Close; showmessage(TTerminal(reg.LTerminals.Items[0]).ID); // gibt showmessage(TTerminal(reg.LTerminals.Items[1]).ID); // jeweils die selben Werte aus, obwohl es in // der DB 2 unterschiedliche sind [delphi] |
Re: TList mit Sammlung von Klassen
Nochmal besser lesbar...;)
Jetzt ist leider ein neues Problem aufgetreten: Wenn ich die Eigenschaften von TTerminal aus der TList wie folgt beschreibe, sind alle TTerminals im TList identisch. Sprich alle Eigenschaften des TTerminal der TList[1] gleichen der von TTerminal der TList[2]...usw. Ich hoffe ihr könnt mir folgen..
Delphi-Quellcode:
with D_DataModule.DataSet do //Terminaltypen abrufen begin SelectSQL.Clear; SelectSQL.Text := 'select * from terminal order by 1 asc'; Open; end; n := 0; while not D_DataModule.DataSet.Eof do begin reg.LTerminals.Add(Terminal); TTerminal(reg.LTerminals.Items[n]).ID := D_DataModule.DataSet.FieldByName('TMID').Value; TTerminal(reg.LTerminals.Items[n]).Typ := D_DataModule.DataSet.FieldByName('TYP').AsString; TTerminal(reg.LTerminals.Items[n]).Bezeichn := D_DataModule.DataSet.FieldByName('BEZEICHNUNG').AsString; TTerminal(reg.LTerminals.Items[n]).Beschreib := D_DataModule.DataSet.FieldByName('BESCHREIBUNG').AsString; D_DataModule.DataSet.Next; n := n + 1; end; D_DataModule.DataSet.Close; showmessage(TTerminal(reg.LTerminals.Items[0]).ID); // gibt showmessage(TTerminal(reg.LTerminals.Items[1]).ID); // jeweils die selben Werte aus, obwohl es in // der DB 2 unterschiedliche sind |
Re: TList mit Sammlung von Klassen
Zitat:
Delphi-Quellcode:
n := 0;
while not D_DataModule.DataSet.Eof do begin Terminal := TTerminal.Create(); with Terminal do begin ID := D_DataModule.DataSet.FieldByName('TMID').Value; Typ := D_DataModule.DataSet.FieldByName('TYP').AsString; Bezeichn := D_DataModule.DataSet.FieldByName('BEZEICHNUNG').AsString; Beschreib := D_DataModule.DataSet.FieldByName('BESCHREIBUNG').AsString; end; reg.LTerminals.Add(Terminal); D_DataModule.DataSet.Next; n := n + 1; end; |
Re: TList mit Sammlung von Klassen
Super!!! Funktioniert bestens!!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:12 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-2025 by Thomas Breitkreuz