![]() |
Objekte in Listen und deren Eigenschaften
Hi,
wenn ich so 5 Objekte erstelle und in eine TList packe:
Delphi-Quellcode:
und hinterher den Namen jedes einzelnen abfrage, dann haben alle den Namen "test5".
private liste:Tlist;
//... procedure xyz; var test:ObjetktTyp; i: integer; begin for i:=1 to 5 do begin test:=ObjektTyp.create; test.name:='test'+inttostr(i); liste.add(test); end; end; Aber wie mir in dem Thread noch erklärt wurde ( ![]() Wie bekomme ich denn unendlich viele Instanzen hin, mit jeweils unterschiedlichen Werten in den Attributen? |
Re: Objekte in Listen und deren Eigenschaften
versuche anstelle von
Delphi-Quellcode:
lieber mal
test:=ObjektTyp.create;
Delphi-Quellcode:
test := new (ObjectTyp);
|
Re: Objekte in Listen und deren Eigenschaften
Zitat:
|
Re: Objekte in Listen und deren Eigenschaften
@RavenIV: Wer sagt denn, dass ObjektTyp keine Klasse ist? Sonst müsste er ja schon beim Create meckern...
@TheAn00bis: Dann zeig mal bitte wie du die Namen ausgibst - der gepostet Code ist in Ordnung. |
Re: Objekte in Listen und deren Eigenschaften
Zitat:
So gebe ich die Namen aus:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer; test:ObjetktTyp; begin for i:=0 to liste.count-1 do begin test:=liste[i]; showmessage(test.namen); end; end; oder so:
Delphi-Quellcode:
for i:=0 to liste.count-1 do begin
showmessage(TObjektTyp(Liste[i]).name); end; |
Re: Objekte in Listen und deren Eigenschaften
Für Objekte gibt es übrigens die Container-Klasse TObjectList, die von TList abgeleitet ist.
|
Re: Objekte in Listen und deren Eigenschaften
@TheAn00bis: Auch dieser Teil ist fehlerfrei, steht das wirklich ganz genau so bei dir im Quelltext? Vielleicht hast du ja irgendwo nur einen Tippfehler.
|
Re: Objekte in Listen und deren Eigenschaften
Zitat:
Zitat:
Nein, ist nicht der genaue Quelltext, da ich das allgemein halten wollte. (damit das Problem schneller klar wird) Hier der Quelltext um den es geht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var karte:Tkarte; begin karte:=Tkarte.create(edit1.text,edit2.text); liste.Add(karte); end; procedure TForm1.Button2Click(Sender: TObject); var i: integer; karte:Tkarte; begin for i:=0 to liste.count-1 do begin karte:=liste[i]; showmessage(karte.gibfrage); end; end; procedure TForm1.FormCreate(Sender: TObject); begin liste:=Tlist.create(); end; end. Hierbei habe ich natürlich edit1 und 2.text vor jedem Klicken geändert. Wenn ich dann auf button2 klicke, erscheint in jedem Fenster dennoch das gleiche. edit: Achja, der erste "create"-Parameter setzt die Variable, die durch "GibFrage" ausgegeben wird. |
Re: Objekte in Listen und deren Eigenschaften
auch das sieht richtig aus *g*
Hast du eventuell im Constructor von TKarte den Namen fest eingetragen (eventuell zum testen und dann nicht zurück geändert). noch nen kleiner Tipp: anstelle von
Delphi-Quellcode:
kannst du auch gleich
var karte:Tkarte;
begin karte:=Tkarte.create(edit1.text,edit2.text); liste.Add(karte);
Delphi-Quellcode:
schreiben.
liste.Add(Tkarte.create(edit1.text,edit2.text));
Du kannst ja mal schauen welchen Werte "karte.name" nach
Delphi-Quellcode:
hat.
var karte:Tkarte;
begin karte:=Tkarte.create(edit1.text,edit2.text); liste.Add(karte); |
Re: Objekte in Listen und deren Eigenschaften
Zitat:
sozusagen: "Create And Forget" |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 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