Thema: Delphi Code Optimierung gesucht

Einzelnen Beitrag anzeigen

Martin W

Registriert seit: 29. Mai 2004
Ort: Augsburg
220 Beiträge
 
Delphi XE3 Enterprise
 
#1

Code Optimierung gesucht

  Alt 3. Jan 2015, 20:19
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
  Mit Zitat antworten Zitat