Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.357 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Property -> Getter und Setter mit Parametern

  Alt 28. Jan 2015, 09:27
Ich würde dann aber die Stringindizes nicht nach außen geben, um Tippfehler zu minimieren und das z.B. so lösen (wenn die Stringindizes intern notwendig sind):
Delphi-Quellcode:
{$SCOPEDENUMS ON}

type
  TCustomSpeicherobjekt = class(TObject)
  private
    function GetEinStringWert(aIndex: string): string;
    procedure SetEinStringWert(aIndex: string; const Value: string);
  public
    property EinStringWert[aIndex: string]: string read GetEinStringWert write SetEinStringWert;
  end;

  TMeinSpeicherobjekt = class(TCustomSpeicherobjekt)
  public type
    TValueInfo = (ValueA, ValueB);
  private
    const
      cValueNames: array[TValueInfo] of string = ('WertA', 'WertB');
    function GetValue(ValueKind: TValueInfo): string;
    procedure SetValue(ValueKind: TValueInfo; const Value: string);
  public
    property Value[ValueKind: TValueInfo]: string read GetValue write SetValue;
  end;

implementation

{ TMeinSpeicherobjekt }

function TCustomSpeicherobjekt.GetEinStringWert(aIndex: string): string;
begin
  // Hier steht Code zum Lesen
end;

procedure TCustomSpeicherobjekt.SetEinStringWert(aIndex: string; const Value: string);
begin
  // Hier steht Code zum Schreiben
end;

{ TMeinSpeicherobjekt }

function TMeinSpeicherobjekt.GetValue(ValueKind: TValueInfo): string;
begin
  Result := EinStringWert[cValueNames[ValueKind]];
end;

procedure TMeinSpeicherobjekt.SetValue(ValueKind: TValueInfo; const Value: string);
begin
  EinStringWert[cValueNames[ValueKind]] := Value;
end;
Dann lässt sich das einfach so nutzen:
Delphi-Quellcode:
MyObject.Value[TValueKind.ValueA] := 'Test';
ShowMessage(MyObject.Value[TValueKind.ValueA]);
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat