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]);