Du castest ja das Auto nur als Cabrio. Sein tut's immer noch ein TAuto ...So wird ein Schuh draus:
Delphi-Quellcode:
procedure TForm1.Button3Click(Sender: TObject);
var
AutoListe: TObjectList;
Cabrio : TCabrio;
Coupe : TCoupe;
Auto : TAuto;
ListenAuto : TObject;
i : integer;
begin
AutoListe := TObjectList.Create;
Auto := TAuto.Create;
Auto.FHersteller := 'BMW';
Coupe:= TCoupe(Auto);
Coupe.FSitze := 4;
AutoListe.Add(Coupe);
Auto := TAuto.Create;
Auto.FHersteller := 'VW';
Cabrio:= TCabrio.Create;
Cabrio.FSitze := 2;
AutoListe.Add(Cabrio);
for i := 0 to AutoListe.Count - 1 do
begin
ListenAuto := AutoListe.Items[i];
if (ListenAuto is TCabrio) then
begin
ShowMessage('Es ist ein Cabrio');
end
else if (ListenAuto is TCoupe) then
begin
ShowMessage('Es ist ein Coupe');
end
else
begin
ShowMessage(Auto.ClassName);
end;
end;
end;
Edit: ups, zu spät.