Einzelnen Beitrag anzeigen

Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#7

AW: variablen in variablen

  Alt 15. Mär 2012, 08:33
Himitsu hat schon recht. Hier sollte definitiv auf OOP zurückgegriffen werden, wenn nicht sogar auf die netten Interfaces. Das mit den Records wäre hier imho eher fehl am Platz! Hier könnte man auch herrlich mit Spring arbeiten.
Delphi-Quellcode:
IAuto = interface
  // GUID
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
  // etc.
end;

TAudi = class(TInterfacedObject, IAuto)
public
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
end;

TMercedes = class(TInterfacedObject, IAuto)
public
  function GetPrice(): Integer;
  function GetWeightInKg(): Integer;
end;

// Klassen im DI-Container registrieren
GlobalContainer.RegisterType<TAudi>().Implements<IAuto>('audi');
GlobalContainer.RegisterType<TAudi>().Implements<IAuto>('mercedes');
GlobalContainer.Build();

// So, so viel zur Vorarbeit...

var
  CarName : string;
begin
  CarName := GetCarName();
  Car := ServiceLocator.GetService<IAuto>(CarName);
  edtCarPrice.Text := Car.GetPrice();
  edtCarWeight.Text := Car.GetWeight();
end;

// So, nun ist nur noch die Frage, wie GetCarName aussieht...
fnuction TForm1.GetCarName(): string;
begin
  Result := LowerCase(cmbbxCarSelection.Text);
  
  // -- Oder du musst ein Mapping vornehmen --

  if (cmbbxCarSelection.Text = 'Audi A3') then
    Result := 'audi'
  else if (cmbbxCarSelection.Text = 'Mercedes A-Klasse') then
    Result := 'mercedes'
  // etc...

end;
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat