Wieso Typsicherheit erst zur Laufzeit und nicht schon zur Compilierzeit?
Delphi-Quellcode:
type
TFile = class(TObject)
// ...
end;
TFileList = class(TObject)
private
FItems: TObjectList;
function GetItem(const Index: Integer): TFile;
public
constructor Create(const OwnsObjects: Boolean = True);
destructor Destroy; override;
function Add(const F: TFile): Integer;
property Items[const Index: Integer]: TFile read GetItem; default;
end;
constructor TFileList.Create(const OwnsObjects: Boolean = True);
begin
inherited Create;
FItems := TObjectList.Create(OwnsObjects);
end;
destructor TFileList.Destroy;
begin
FItems.Free;
inherited Destroy;
end;
function TFileList.Add(const F: TFile): Integer;
begin
FItems.Add(F);
end;
function TFileList.GetItem(const Index: Integer): TFile;
begin
Result := TFile(FItems[Index]);
end;
Dadurch dass TFileList.Add() nur Objekte vom Typ TFile akzeptiert, kann man sich den geprüften Cast in TFileList.GetItem() sparen.
jkr