Hi,
ich habe folgende Klassen (alles stark vereinfacht und auf das grundlegende Problem reduziert):
Delphi-Quellcode:
type TAuto = class(TComponent)
public
FNameOfCar: string;
FColor: integer;
FNumberOfWheels: integer;
FLicencePlate: string;
end;
type TAutoHerstellerA = class(TAuto)
public
FWindowColor: integer;
FNumberOfDoors: integer;
end;
type TAutoHerstellerB = class(TAuto)
public
FHupe: boolean;
end;
type TAutoHerstellerC = class(TAuto)
public
FNiceCar: boolean;
end;
type TAutoHerstellerD = class(TAuto)
public
FRamboPackage: boolean;
FAutonomCar: boolean;
end;
Verwaltet werden die Auto-Hersteller A-D in folgenden Klassen:
Delphi-Quellcode:
FAutoHerstellerA: TList<TAutoHerstellerA>;
FAutoHerstellerB: TList<TAutoHerstellerB>;
FAutoHerstellerC: TList<TAutoHerstellerC>;
FAutoHerstellerD: TList<TAutoHerstellerD>;
Nun der interessante Code, ich möchte ein bestimmtes Auto umfärben, jedes Auto existiert nur einmal:
Delphi-Quellcode:
procedure ColorCar(aCar: string, aNewColor: integer);
var
i: integer;
begin
for i:=0 to FAutoHerstellerA.Count -1 do
begin
if FAutoHerstellerA[i].FNameOfCar = aCar then
FAutoHerstellerA[i].FColor := aNewColor;
Break;
end;
for i:=0 to FAutoHerstellerB.Count -1 do
begin
if FAutoHerstellerB[i].FNameOfCar = aCar then
FAutoHerstellerB[i].FColor := aNewColor;
Break;
end;
for i:=0 to FAutoHerstellerC.Count -1 do
begin
if FAutoHerstellerC[i].FNameOfCar = aCar then
FAutoHerstellerC[i].FColor := aNewColor;
Break;
end;
for i:=0 to FAutoHerstellerD.Count -1 do
begin
if FAutoHerstellerD[i].FNameOfCar = aCar then
FAutoHerstellerD[i].FColor := aNewColor;
Break;
end;
end;
Man sieht schon, je nach Anzahl der Autohersteller habe ich viele Wiederholungen. Gibt es daher die Möglichkeit, die Listen zu einer Art Gruppe zusammenzufassen und die Gruppe zu durchsuchen?
Viele Grüße,
Martin