Einzelnen Beitrag anzeigen

TheAn00bis

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

Re: Objekte in Listen und deren Eigenschaften

  Alt 14. Nov 2005, 17:40
Zitat von SirThornberry:
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).

[...]

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.
1) Hab ich nicht.
2) Dann erscheint das, was ich auch eingegeben habe, also richtig...

Zitat von shmia:
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"
Okay, geändert!

Zitat von Hansa:
Und es gibt ab TStrings noch die Eigenschaft Objects. Nenne ein Element doch Pik-As und verpaße dem zugehörigen Object einfach ein passendes Image.
Das sind keine Spielkarten... Und wofür brauche ich die Eigenschaft Objects?

Hier nochmal die komplette (geänderte) Unit:

Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, UKarte, StdCtrls, Contnrs;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Edit1: TEdit;
    Edit2: TEdit;
    Button3: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  end;

var
  Form1: TForm1;
  Liste: TObjectList;
implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var zahl:integer;
begin
zahl:=liste.Add(Tkarte.create(edit1.text,edit2.text));
showmessage(TKarte(liste[zahl]).gibFrage);
end;

procedure TForm1.Button2Click(Sender: TObject);
var i: integer;
    karte:Tkarte;
begin
for i:=0 to liste.count-1 do begin
karte:=TKarte(liste[i]);
showmessage(karte.gibfrage);
end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
liste:=TObjectList.create();
end;


end.
  Mit Zitat antworten Zitat