mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-11-22 02:09:38 +01:00
lazutils: txmlconfig: auto create doc
git-svn-id: trunk@38495 -
This commit is contained in:
parent
12e9e9e559
commit
2560b6e5eb
@ -47,6 +47,7 @@ type
|
||||
FFilename: String;
|
||||
FReadFlags: TXMLReaderFlags;
|
||||
FWriteFlags: TXMLWriterFlags;
|
||||
procedure CreateConfigNode;
|
||||
procedure SetFilename(const AFilename: String);
|
||||
protected
|
||||
doc: TXMLDocument;
|
||||
@ -198,6 +199,8 @@ end;
|
||||
|
||||
procedure TXMLConfig.WriteToStream(s: TStream);
|
||||
begin
|
||||
if Doc=nil then
|
||||
CreateConfigNode;
|
||||
Laz2_XMLWrite.WriteXMLFile(Doc,s,WriteFlags);
|
||||
end;
|
||||
|
||||
@ -210,9 +213,11 @@ begin
|
||||
//CheckHeapWrtMemCnt('TXMLConfig.GetValue A '+APath);
|
||||
Result:=ADefault;
|
||||
|
||||
// skip root
|
||||
StartPos:=length(APath)+1;
|
||||
while (StartPos>1) and (APath[StartPos-1]<>'/') do dec(StartPos);
|
||||
if StartPos>length(APath) then exit;
|
||||
// find sub node
|
||||
Node:=InternalFindNode(APath,StartPos-1);
|
||||
if Node=nil then
|
||||
exit;
|
||||
@ -264,6 +269,8 @@ begin
|
||||
StartPos:=length(APath)+1;
|
||||
while (StartPos>1) and (APath[StartPos-1]<>'/') do dec(StartPos);
|
||||
if StartPos>length(APath) then exit;
|
||||
if Doc=nil then
|
||||
CreateConfigNode;
|
||||
Node:=InternalFindNode(APath,StartPos-1,true);
|
||||
if Node=nil then
|
||||
exit;
|
||||
@ -558,7 +565,6 @@ end;
|
||||
|
||||
procedure TXMLConfig.SetFilename(const AFilename: String);
|
||||
var
|
||||
cfg: TDOMElement;
|
||||
ms: TMemoryStream;
|
||||
begin
|
||||
{$IFDEF MEM_CHECK}CheckHeapWrtMemCnt('TXMLConfig.SetFilename A '+AFilename);{$ENDIF}
|
||||
@ -590,16 +596,22 @@ begin
|
||||
end;
|
||||
end;
|
||||
|
||||
CreateConfigNode;
|
||||
{$IFDEF MEM_CHECK}CheckHeapWrtMemCnt('TXMLConfig.SetFilename END');{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TXMLConfig.CreateConfigNode;
|
||||
var
|
||||
cfg: TDOMElement;
|
||||
begin
|
||||
if not Assigned(doc) then
|
||||
doc := TXMLDocument.Create;
|
||||
|
||||
cfg :=TDOMElement(doc.FindNode('CONFIG'));
|
||||
//debugln(['TXMLConfig.SetFilename cfg=',DbgSName(cfg),' doc=',DbgSName(doc)]);
|
||||
if not Assigned(cfg) then begin
|
||||
cfg := doc.CreateElement('CONFIG');
|
||||
doc.AppendChild(cfg);
|
||||
end;
|
||||
{$IFDEF MEM_CHECK}CheckHeapWrtMemCnt('TXMLConfig.SetFilename END');{$ENDIF}
|
||||
end;
|
||||
|
||||
{ TRttiXMLConfig }
|
||||
|
||||
Loading…
Reference in New Issue
Block a user