TList i obiekty

0

Jak zapisać <ort>objekt </ort>do listy TList :> i jak go póżniej z tamtąd odczytać :|

tzn mamy mniej więcej coś takiego:

TObjekt1=class //bez przesady z tym poprawianiem
 // to nie jest słowo tylko nazwa własna klasy - chyba, że nie rozumisz słowa kluczowego "class"
  p:integer;
  public
  constructor Create(po:integer);
  function get:integer;
 end;

 TObjZLista=class
  fob:TList;
  public
   constructor Create;override;
   destructor Destroy;override;
   procedure zapisz(po:integer);
   function czytaj(i:integer):integer;
  end;

constructor TObjekt1.Create(po:integer);//bez przesady z tym poprawianiem
 // to nie jest słowo tylko nazwa własna klasy, której to metoda
 // a jak nie wiesz o co chodzi to może najpierw zajzyj do paru mądrych artykułów np na tej stronie
begin
 p:=po;
end;

function TObjekt1.get:integer;{bez przesady z tym poprawianiem - to nie jest słowo tylko nazwa własna klasy, której to metoda :]
 ...i jeszcze chciałbym zauważyć, że zaproponowana przez Ciebie nazwa 'T[ort!]1' była w przeciwieństwie do mojej BŁĘDNA!!
 Nie wiem czy wiesz, ale IDENTYFIKATORY w PASCALu nie mogą zawierać znaków '[', '!' ani ']' a te niewątpliwie w Twojej WYSTĘPUJA :P }
begin
 get:=p;
end;

constructor TObjZLista.Create;override;
begin
 fob:=TList.Create;
end;

destructor TObjZLista.Destroy;override;
begin
 //ale jeszcze najpierw przydaloby sie pozwalniac obiekty z listy - tylko jak ??
 fob.Free;
end;

procedure TObjZLista.zapisz(po:integer);
begin
 //tu chcemy stworzyc nowy TObjekt1 i zapisac go na liscie fob :]
end;

function TObjZLista.czytaj(i:integer):integer;
begin
 //a tu chcemy odczytac wynik metody get i'tego TObjekt1'u z listy fob - też nie wiem jak :]
end;

I chcemy zrobić mniej więcej to co napisałem w komętarzach...
Ktoś wie jak??

0
Sebo napisał(a)

destructor Destroy;override;
begin
//ale jeszcze najpierw przydaloby sie pozwalniac obiekty z listy - tylko jak ??
fob.Free;
end;

destructor Destroy;override;
var i:integer;
begin
 for i:=0 to fob.Count-1 do TObiekt1(fob.Items[i]).Free;
 fob.Free;
end;

procedure zapisz(po:integer);
begin
//tu chcemy stworzyc nowy TObjekt1 i zapisac go na liscie fob :]
end;

procedure zapisz(po:integer);
begin
fob.Add(TObiekt1.Create);
// nie wiem po co ten parametr po
end;

function czytaj(i:integer):integer;
begin
//a tu chcemy odczytac wynik metody get i'tego TObjekt1'u z listy fob - też nie wiem jak :]
end;
</delphi>

function czytaj(i:integer):integer;
begin
result:=TObiekt1(fob.items[i]).get;
end;
0
Bula napisał(a)

// nie wiem po co ten parametr po

procedure TObjZLista.zapisz(po:integer);
begin
fob.Add(TObiekt1.Create(po));
//ten parametr był po to bo TObjekt1 nie ma Constructor'a bez parametruw ;) i trzeba cos przekazac...
end;

...ale zczaiłem o co chodzi :)

Dzięki :d

...a ja, przyzwyczajony do wskaźników w C++, nie mogłem zczaić czemu nie działa jak tam przekazuje adres [wstyd]

1 użytkowników online, w tym zalogowanych: 0, gości: 1