Hi,
ich verwende in einer Komponente zur Verwaltung von Items die TCollection. Damit nur meine eigenen TCollectionItems hinzugefügt werden können und nicht andere, habe ich einige Routinen überschrieben.
Delphi-Quellcode:
type
TNavigationListCollection = class(TCollection)
protected
function GetItem(Index: Integer):TNavigationListCollectionItem;
procedure SetItem(Index: Integer; const Value: TNavigationListCollectionItem);
public
function Add:TNavigationListCollectionItem;
function Insert(Index: Integer):TNavigationListCollectionItem;
property Items[Index: Integer]: TnavigationListCollectionItem read GetItem write SetItem; default;
end;
...
...
procedure TNavigationListCollection.SetItem(Index: Integer; const Value: TNavigationListCollectionItem);
begin
Items[Index].Assign(Value);
end;
function TNavigationListCollection.GetItem(Index: Integer):TNavigationListCollectionItem;
begin
Result.Assign(Items[Index]);
// Result := Items[Index];
end;
function TNavigationListCollection.Add:TNavigationListCollectionItem;
begin
Result := (inherited Add as TNavigationListCollectionItem);
end;
function TNavigationListCollection.Insert(Index: Integer):TNavigationListCollectionItem;
begin
Result := (inherited Insert(Index) as TNavigationListCollectionItem);
end;
Doch wenn getItem aufgerufen wird, bekomme ich einen Stack-Überlauf. Wieso? Ich kann keinen Fehler finden...