Danke für dein Hilfe bepe.
Auf Grundlage deiner Informationen bin ich jetzt soweit vorangeschritten:
Delphi-Quellcode:
type
RConfig2 = record
private
fKey: String;
fValue: Variant;
function GetAsString: String;
function GetAsInteger: Integer;
public
property Key: String read fKey write fKey;
property Value: Variant write fValue;
property AsString: String read GetAsString;
property AsInteger: Integer read GetAsInteger;
end;
Die Implementierung der GET/SET
Delphi-Quellcode:
function RConfig2.GetAsString;
begin
result :=
STRING(fValue);
end;
function RConfig2.GetAsInteger;
var
val: Integer;
begin
if TryStrToInt(fValue, val)
then
begin
result := val
end
else
raise Exception.Create('
Konvertierungsfehler - Kein INTEGER');
end;
Daraus ergab sich eine neue Liste
Delphi-Quellcode:
type
TConfigList2 = array of RConfig2;
Was im Objekt an sich zu folgenden Änderungen führt:
Delphi-Quellcode:
type
TConfig = class(TObject)
private
...
fList: TConfigList;
fList2: TConfigList2;
...
function GetVariantValue(aID: String): RConfig2;
procedure SetVariantValue(aID: string; aValue: Variant);
...
public
constructor create;
...
property Item[aKey: String]: RConfig2 read GetVariantValue write SetVariantValue;
...
end;
GetVariantValue
sieht nun bei mir so aus (ja, noch keine Hashtable)
Delphi-Quellcode:
function TConfig.GetVariantValue(aID: string): RConfig2;
var
i: Integer;
begin
ReadConfig;
for i := low(fList2) to high(fList2) do
begin
if uppercase(fList2[i].Key) = uppercase(aID) then
begin
Result := fList2[i];
break;
end;
end;
end;
Ich dachte mir, ich nehme
Variant
als Typ für die Value, denn somit bin ich da flexibel...eher ungut?
Woran ich jetzt allerdings scheitere ist die Implementierung von
SetVariantValue
.
Der Compiler sagt
.
Delphi-Quellcode:
procedure Tconfig.SetVariantValue(aID: string; aValue: Variant);
begin
end;
Den Versuch, einfach ein
zu übergeben ist ebenfalls gescheitert.
Wo seh ich den Wald vor lauter Bäumen nicht? Ist die Implementierung in den Grundzügen so korrekt?