Eben weil
IXMLNode.NodeValue ein
OleVariant ist, nehme ich das Lesen (!) und Schreiben lieber selber in die Hand. Denn dort kann ja eben alles stehen.
Also warum nicht so wie bei
TCustomIniFile
Delphi-Quellcode:
TNodeValueHandler = class
private
FFormat : TFormatSettings;
public
procedure WriteString( Node : IXMLNode; const Value : string );
procedure WriteFloat( Node : IXMLNode; const Value : Extended );
...
function ReadString( Node : IXMLNode; const Default : string ) : string;
function ReadFloat( Node : IXMLNode; const Default : Extended ) : Extended;
...
end;
procedure TNodeValueHandler.WriteString( Node : IXMLNode; const Value : string );
begin
Node.NodeValue := Value;
end;
procedure TNodeValueHandler.WriteFloat( Node : IXMLNode; const Value : Extended );
begin
WriteString( Node, FloatToStr( Value, FFormat ) );
end;
function TNodeValueHandler.ReadString( Node : IXMLNode; const Default : string ) : string;
begin
Result := VarToStrDef( Node.NodeValue, Default );
end;
function TNodeValueHandler.ReadFloat( Node : IXMLNode; const Default : Extended ) : Extended;
begin
Result := StrToFloatDef( ReadString( Node, '' ), Default );
end;
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ea 0a 4c 14 0d b6 3a a4 c1 c5 b9
dc 90 9d f0 e9 de 13 da 60)