Das grundlegende Problem hab ich
hier schonmal beschrieben.
In deinem Fall kannst du mit einem Hardcast arbeiten sofern du nicht versuchst nen TRot in ne liste von TBlau zu stecken:
Delphi-Quellcode:
procedure CleanColor;
var
varListRed: TList<TRot>;
varListBlue: TList<TBlau>;
varListToEdit: TList<TFarbe>;
begin
if (...) then
varListToEdit := TList<TFarbe>(varListRed);
else
varListToEdit := TList<TFarbe>(varListBlue);
(...)
varListToEdit.DoSomething;
varListToEdit.TrimExcess
end;