AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi Objekte in Listen und deren Eigenschaften
Thema durchsuchen
Ansicht
Themen-Optionen

Objekte in Listen und deren Eigenschaften

Ein Thema von TheAn00bis · begonnen am 14. Nov 2005 · letzter Beitrag vom 14. Nov 2005
Antwort Antwort
Seite 1 von 2  1 2      
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#1

Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 17:46
Hi,

wenn ich so 5 Objekte erstelle und in eine TList packe:

Delphi-Quellcode:
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;
und hinterher den Namen jedes einzelnen abfrage, dann haben alle den Namen "test5".
Aber wie mir in dem Thread noch erklärt wurde (link), wird doch jedes mal für eine neue Karte neuer Speicher angefodert. Den Pointer zu diesem neuen Speicher pack ich dann in die Liste. Aber daraus ist doch zu schließen, dass jetzt jedes Objekt einen anderen Namen hat, oder sehe ich da irgendwas falsch? (muss ich ja, sonst würd es ja funktionieren )

Wie bekomme ich denn unendlich viele Instanzen hin, mit jeweils unterschiedlichen Werten in den Attributen?
  Mit Zitat antworten Zitat
Benutzerbild von RavenIV
RavenIV

Registriert seit: 12. Jan 2005
Ort: Waldshut-Tiengen
2.875 Beiträge
 
Delphi 2007 Enterprise
 
#2

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 17:53
versuche anstelle von test:=ObjektTyp.create; lieber mal test := new (ObjectTyp);
Klaus E.
Linux - das längste Text-Adventure aller Zeiten...
Wer nie Linux mit dem vi konfiguriert hat, der hat am Leben vorbei geklickt.
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#3

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 17:59
Zitat von RavenIV:
test := new (ObjectTyp);
Dann erscheint die Fehlermeldung "Incompatible types"; egal ob "test" vom Typ "ObjektTyp" oder vom Typ Pointer ist.
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#4

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:02
@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.
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#5

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:09
Zitat von Muetze1:
@TheAn00bis: Dann zeig mal bitte wie du die Namen ausgibst - der gepostet Code ist in Ordnung.
Das freut mich doch, dann war das ja schonmal nicht falsch .

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;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#6

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:14
Für Objekte gibt es übrigens die Container-Klasse TObjectList, die von TList abgeleitet ist.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#7

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:18
@TheAn00bis: Auch dieser Teil ist fehlerfrei, steht das wirklich ganz genau so bei dir im Quelltext? Vielleicht hast du ja irgendwo nur einen Tippfehler.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
TheAn00bis

Registriert seit: 7. Jun 2004
386 Beiträge
 
#8

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:25
Zitat von shmia:
Für Objekte gibt es übrigens die Container-Klasse TObjectList, die von TList abgeleitet ist.
Danke für den Tip, aber die bietet keine Vorteile, die ich gebrauchen könnte.

Zitat von SirThornberry:
@TheAn00bis: Auch dieser Teil ist fehlerfrei, steht das wirklich ganz genau so bei dir im Quelltext? Vielleicht hast du ja irgendwo nur einen Tippfehler.
Verdammt! Oder auch nicht

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.
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#9

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:29
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:
var karte:Tkarte;
begin
  karte:=Tkarte.create(edit1.text,edit2.text);
  liste.Add(karte);
kannst du auch gleich
  liste.Add(Tkarte.create(edit1.text,edit2.text)); schreiben.

Du kannst ja mal schauen welchen Werte "karte.name" nach
Delphi-Quellcode:
var karte:Tkarte;
begin
  karte:=Tkarte.create(edit1.text,edit2.text);
  liste.Add(karte);
hat.
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 18:31
Zitat von TheAn00bis:
Zitat von shmia:
Für Objekte gibt es übrigens die Container-Klasse TObjectList, die von TList abgeleitet ist.
Danke für den Tip, aber die bietet keine Vorteile, die ich gebrauchen könnte.
Doch, der Konstruktor von TObjectList hat den Parameter AOwnsObjects. Falls dieser True ist (in deinem Fall wohl sinnvoll), dann werden im Destruktor von TObjectList alle Items gefreed.
sozusagen: "Create And Forget"
Andreas
  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 17:42 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