wer kann hier mal helfen?
ich habe folgenden Code:
Code: Alles auswählen
xml_ver_Rec = record
enabled : String; //for Base Versions
patches : TStringList;
end;
TMap_xml = specialize TFPGMap<String, xml_ver_Rec>;
.
.
.
var
xmlMap : TMap_xml; //Key/Value Map - Base Version, xml_ver_Rec;
xmlR : xml_ver_Rec;
procedure TForm1.FormCreate();
Begin
.
.
xmlMap := TMap_xml.Create;
xmlR.patches := TStringList.Create;
.
.
End;
procedure TForm1.read_xml(doc: xmlDocPtr; nChild: xmlNodePtr);
Begin
.
.
patchL kommt aus einem Dictionary
xmlR.enabled := enabProp;
while Assigned(child) do
begin
Pver := child^.PROPERTIES^.CHILDREN^.content;
Debug_outp(IntToStr({$I %LINENUM%}), 'DEBUG', 'check Patch Version from XML '+Pver);
for i:=0 to patchL.patches.Count -1 do
begin
//compare Patch Version from xml with Patch Version from Registry (patchL List)
if Pver = patchL.patches[i] then
begin
Penabled := child^.PROPERTIES^.NEXT^.CHILDREN^.content;
xmlR.patches.AddPair(Pver,Penabled);
child := child^.NEXT^.NEXT;
end
else
begin
Debug_outp(IntToStr({$I %LINENUM%}), 'WARN', 'Patch Version from Registry '+patchL.patches[i]+' not in xml '+Pver);
Penabled := 'true';
xmlR.patches.AddPair(Pver,Penabled);
end;
end;
xmlMap.Add(baseProp,xmlR);
Debug_outp(IntToStr({$I %LINENUM%}), 'DEBUG', 'xmlR Patch '+xmlR.patches[0]);
xmlR.patches.Free;
xmlR.patches := TStringList.Create;
xmlR.patches.Duplicates := dupIgnore;
xmlR.patches.Sorted := true;
if NOT Assigned(child) then Break;
child := child^.NEXT^.NEXT;
end;
.
.
End;