Kolekcje i problem z dodawaniem danych

0

Mam taka klase:

 TKolekcja = class(TObject)
  protected
    lista : TList;
  public
    constructor Create();
    destructor  Destroy(); override;
    function    dajRozmiar() : Integer;
    function    dajListe() : TList;
  end;

...i teraz np implementaccja funkcji dajListe wyglada nastepujaco:

function TKolekcja.dajRozmiar(): Integer;
begin
  result:=self.lista.Count;
end;

Chcialbym dopisac teraz procedure co bym mogl wkladac do listy dowolny obiekt jakiejs kolekcji (mam ich kilka: np kolekcja pracownikow,kolekcja zlecen). Wiec dodalem cos takiego:

 procedure TKolekcja.dodajElement(obj : TObject);
  begin
    self.lista.Add(obj);
  end;

...ale nie wiem dlaczego sypie mi sie...

// na przyszłosć pisz tematy, które coś mówią, i używaj tagów delphi - Ł

0
  1. swietny temat
  2. list stworzyles?
  3. moze tak napiszesz cos wiecej a nie "sypie sie" [glowa]
0

Idac dalej, jezeli mam juz typ TKolekcja stworzylem sobie kolejny typ, mianowicie:

  TListaZlecen = class(TKolekcja)
  public
    procedure dodajZlecenie( idZlecenia : Integer; ulica: string);
    function dajZlecenie(n : Integer) : TZlecenie;
  end;

implementacja wyglada tak:

{ TListaZlecen }
function TListaZlecen.dajZlecenie(n: Integer): TZlecenie;
begin
  result := TZlecenie(self.lista[n]);
end;

procedure TListaZlecen.dodajZlecenie(idZlecenia :Integer; ulica : string);
var
  zlecenie : TZlecenie;
begin
  zlecenie := TZlecenie.Create(idZlecenia,ulica);
  self.lista.Add(zlecenie);
end;

... i moj problem polega na tym, ze gdzies teraz w aplikacji tworze sobie jakas jedna liste zlecen np lista1 : TListaZlecen, wrzucam do niej jakies zlecenia z bazy oraz tworze druga liste zlecen, dajmy na to lista2 : TListaZlecen. Chcialbym teraz te listy polaczyc.....zrobic jedna...

Myslalem ze po prostu zrobie cos takiego:

for i:=0 to lista2.dajRozmiar() do
  begin
    lista2.dodajZlecenie(lista1.dajZlecenie(i).dajId(),lista1.dajZlecenie(i).dajUlice())
  end;

Ale przy takiej probie wyrzuca mi AccessViolation w funkcji TListaZlecen.dodajZlecenie na linii self.lista.Add(zlecenie);

0

na koncu oczywiscie jest: ...dajRozmiar()-<b>1</b>

0

a czy w constructor jest coś w stylu

lista:=TList.Create;

?? :[

0
inherited Create;
//reszta funkcji

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