Ich suche Hilfe zu folgenden Problem
ich habe in Objekt
Delphi-Quellcode:
TLCListe = class(TKeyValueListe)
end;
Dieses Objekt ist von dem folgenden Objekt abgeleitet.
Delphi-Quellcode:
TKeyValueListe = class
private
ABWElements : TkeyValuElements;
fname : string;
fstringlist : Tstringlist;
function checkstring(AValue: string): Boolean;
function searchinliste(aname : string) : TKeyValue;
function getvalue(aindex : string) : TKeyValue;
procedure setvalue(aindex : string; avalue : TKeyValue);
function getvalueatindex(aindex : integer) : TKeyValue;
function getname : string;
procedure setname(aname : string);
function gettostring(adelimiter : string) : string;
function gettodelimstring : string;
function gettostringcomplete(adelimiter : string) : string;
function gettodelimstringcomplete : string;
procedure settostringcomplete(adelimiter : string; avalue : string);
procedure settodelimstringcomplete(avalue : string);
function gettostringlist : tstrings;
procedure settostringlist(astring : Tstrings);
public
constructor Create; overload;
constructor Create(Aname : string); overload;
destructor Destroy; override;
procedure assign(Akeyvalueliste : Tkeyvalueliste);
procedure add(name : string; avalue : string); overload;
procedure add(name : string; avalue : integer); overload;
procedure add(name : string; avalue : extended); overload;
procedure Reset;
function Count : integer;
property TostringList : Tstrings read gettostringlist write settostringlist;
property Value[aindex : string] : TKeyValue read getvalue write setvalue;default;
property Valueatindex[aindex : integer] : TKeyValue read getvalueatindex;
Property Name : string read getname write setname;
{$WARNINGS off}
Property Tostring[adelimiter : string] : string read gettostring;
{$Warnings on}
Property Todelimstring : string read gettodelimstring;
Property Tostringcomplete[adelimiter : string] : string read gettostringcomplete write settostringcomplete;
Property Todelimstringcomplete : string read gettodelimstringcomplete write settodelimstringcomplete;
end;
TKeyValue = class
private
fname : string;
fvalue : Tvalue;
function getasstring : string;
procedure setasstring(avalue : string);
function getname : string;
procedure setname(aname : string);
function getasextended : Extended;
procedure setasextended(avalue : Extended);
function getasinteger : Integer;
procedure setasinteger(avalue : Integer);
public
constructor Create; overload;
constructor Create(Aname : string); overload;
property Asstring : string read getasstring write setasstring;
property AsExtended : Extended read getasextended write setasextended;
property AsInteger : Integer read getasinteger write setasinteger;
Property Name : string read getname write setname;
end;
Das Objekt ist eine Property eines anderen Objektes
Ich versuche nun, das Objekt zu serialisieren und zu deserialisieren.
Dazu habe ich die folgender Funktionen geschrieben
Delphi-Quellcode:
function convertflocationcode(Data: TObject; Field: string) : string;
var
ctx : Trtticontext;
myvalue : TLCListe;
begin
ctx := Trtticontext.create;
try
myvalue := ctx.gettype(Data.classtype ).GetField(Field).getvalue(Data).astype<TLCliste>;
result := Myvalue.Tostringcomplete[';'];
finally
ctx.free;
end;
end;
procedure Revertflocationcode(Data: TObject; Field: string; arg : string);
var
ctx : Trtticontext;
myvalue : Tlcliste;
begin
ctx := Trtticontext.create;
try
if length(arg) > 0 then
begin
myvalue := ctx.gettype(Data.classtype ).GetField(Field).getvalue(Data).astype<TLCliste>;
myvalue.Tostringcomplete[';'] := arg;
end;
finally
ctx.free;
end;
end;
Leider funktioniert das ganze nicht. Myvalue ist beim Reverter immer nil. Was mache ich da falsch? Ich benutze dbxjson.
Ich dachte, ich könnte hier eine Funktion der TKeyvalueliste verwenden, die die Keyvalues in einen String mit delimitern verwandelt.
Es handelt sich im übrigen hier um eine Liste mit Ortskennzeichen, welche in der Anlagentechnik verwendet werden.
Gruß Kompi