Einzelnen Beitrag anzeigen

Benutzerbild von sh17
sh17

Registriert seit: 26. Okt 2005
Ort: Radebeul
1.640 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Kopie eines Item aus der TObjectList

  Alt 22. Jan 2007, 08:49
Du überschreibst bei Deiner TCarPosCollection die Destroy-Methode der TObjectList und gibts alle Items frei. Das ist nicht nötig, das macht TObjectList schon.

Hier mal ein Grundgerüst für KLassen, die von TObjectList erben und somit ein Typecasting überflüssig machen:

Ersetze Name durch Deine Klasse (TCarPos)

Delphi-Quellcode:
NameObjectList = class(TObjectList)
protected
  function GetItem(Index: Integer): Name;
  procedure SetItem(Index: Integer; AItem: Name);
public
  function Add(AItem: Name): Integer;
  function Extract(Item: Name): Name;
  function Remove(AItem: Name): Integer;
  function IndexOf(AItem: Name): Integer;
  procedure Insert(Index: Integer; AItem: Name);
  function First: Name;
  function Last: Name;
  property Items[Index: Integer]: Name read GetItem write SetItem; default;
end;


implementation

{ NameObjectList }

function NameObjectList.Add(AItem: Name): Integer;
begin Result := inherited Add(AItem); end;

function NameObjectList.Extract(Item: Name): Name;
begin Result := Name(inherited Extract(Item)); end;

function NameObjectList.First: Name;
begin if Count = 0 then Result := nil else Result := Name(inherited First); end;

function NameObjectList.GetItem(Index: Integer): Name;
begin Result := Name(inherited Items[Index]); end;

function NameObjectList.IndexOf(AItem: Name): Integer;
begin Result := inherited IndexOf(AItem); end;

procedure NameObjectList.Insert(Index: Integer; AItem: Name);
begin inherited Insert(Index, AItem); end;

function NameObjectList.Last: Name;
begin if Count = 0 then Result := nil else Result := Name(inherited Last); end;

procedure NameObjectList.SetItem(Index: Integer; AItem: Name);
begin inherited Items[Index] := AItem; end;

function NameObjectList.Remove(AItem: Name): Integer;
begin Result := inherited Remove(AItem);end;
Sven Harazim
--
  Mit Zitat antworten Zitat