AGB  ·  Datenschutz  ·  Impressum  







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

TList mit Sammlung von Klassen

Ein Thema von fapsons · begonnen am 13. Mär 2007 · letzter Beitrag vom 13. Mär 2007
Antwort Antwort
Seite 1 von 2  1 2      
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#1

TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 08:03
Hallo Leute,

habe folgende Klassen und TList:

Delphi-Quellcode:
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?
Wie kann ich nun korrekt auf meine Klasse TTerminal in der TList zurückgreifen? Bin leider noch absoluter Anfänger und habe keine Ahnung...


Viele Dank,
-fapsons..
  Mit Zitat antworten Zitat
r2c2

Registriert seit: 9. Mai 2005
Ort: Nordbaden
925 Beiträge
 
#2

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 08:46
Hallo
das geht mit einem so gennaten TypeCast:
Delphi-Quellcode:
  TKlasse(List[i]).Eigenschaft := Wert;
  // oder besser mit Sicherung:
  (List[i] as TKlasse).Eigenschaft := Wert;
mfg

Christian
Kaum macht man's richtig, schon klappts!
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#3

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 08:55
Habe glaube ich noch nicht so richtig verstanden, was du damit meinst.
Habe es jetzt so gemacht:


Delphi-Quellcode:
reg := TSoftwarePaket.Create;

reg.Terminals.add(reg.Terminals[l] as TTerminal).ID := 'String';
Was mache ich falsch?
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#4

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 09:04
Delphi-Quellcode:
var myTerminal: TTerminal;
begin
  myTerminal := TTerminal.Create();
  myList.Add(myTerminal);// hinzufühgen

  WriteLn( TTerminal(myList.Items[0]).ID ); // zugreifen
end;
Auf jedem Fall ist es gut sich über TObjectList zu informieren.
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#5

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:00
Habe es jetzt so gemacht:

Delphi-Quellcode:

TTerminal(reg.LTerminals.Items[n]).ID := 123;
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?
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#6

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:02
Danke, habs selber hinbekommen...
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#7

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:16
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]
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#8

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:18
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
  Mit Zitat antworten Zitat
Benutzerbild von sniper_w
sniper_w

Registriert seit: 11. Dez 2004
Ort: Wien, Österriech
893 Beiträge
 
Delphi 6 Enterprise
 
#9

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:33
Zitat:
Sprich alle Eigenschaften des TTerminal der TList[1] gleichen der von TTerminal der TList[2]...usw.
Wiel du immer an der selben Stelle die Werte speicherst. Ich würde es so machen:
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;
Katura Haris
Es (ein gutes Wort) ist wie ein guter Baum, dessen Wurzel fest ist und dessen Zweige in den Himmel reichen.
  Mit Zitat antworten Zitat
fapsons

Registriert seit: 29. Jan 2007
Ort: Berlin
65 Beiträge
 
#10

Re: TList mit Sammlung von Klassen

  Alt 13. Mär 2007, 10:43
Super!!! Funktioniert bestens!!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 10:45 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