Hallo,
das funktioniert leider auch nicht *verzweifel*
Also, ich lese die Datei folgendermaßen ein:
Delphi-Quellcode:
procedure TfrmMain.toolbarButtons_btnOpenFileClick(Sender: TObject);
var
Node: IXMLDOMElement;
begin
if OpenDialog1.Execute then
begin
xmlDoc := CoDomDocument40.Create;
xmlDoc.async := False;
sXMLFileName := OpenDialog1.FileName;
xmlDoc.Load(sXMLFileName);
ClearTreeView(tvTree);
Node := xmlDoc.selectSingleNode('/inputx/document') as IXMLDOMElement; <- hier habe ich schon zig Varianten getestet
ShowFolders(Node, nil); <- hier übergebe ich Node an ShowFolders
oStatusBar1.Panels[0].Caption := sXMLFileName;
end;
end;
Dann rufe ich die Prozedur ShowFolders auf und übergebe die Node:
Delphi-Quellcode:
procedure TfrmMain.ShowFolders(Node: IXMLDOMElement; nParent: PVirtualNode);
var
i: Integer;
nlFolders: IXMLDOMNodeList;
nName, nChild: IXMLDOMElement;
TreeData: TTreeData;
begin
ChangeCursor;
tvTree.BeginUpdate;
try
tvTree.NodeDataSize := SizeOf(TTreeData);
nlFolders := Node.selectNodes('Folder');
for i := 0 to Pred(nlFolders.length) do
begin
nChild := nlFolders.item[i] as IXMLDomElement;
nName := nChild.selectSingleNode('name') as IXMLDOMElement;
TreeData.Caption := nName.text;
TreeData.Node := nChild;
ShowFolders(nChild, AddVSTStructure(nParent, TreeData, nChild));
end;
finally
tvTree.EndUpdate;
ChangeCursor;
end;
end;
Das Problem ist aber, dass in der ersten Prozedur die Variable
Node schon Nil bleibt.
Node := xmlDoc.selectSingleNode('/inputx/document') as IXMLDOMElement; findet also nichts
Hier noch die Funktion, mit der ich dann den TreeView fülle:
Delphi-Quellcode:
function TfrmMain.AddVSTStructure(ANode: PVirtualNode; ARecord: TTreeData; nNode: IXMLDOMElement): PVirtualNode;
var
Data: PTreeData;
begin
Result := tvTree.AddChild(ANode);
Data := tvTree.GetNodeData(Result);
tvTree.ValidateNode(Result, False);
Data^.Caption := ARecord.Caption;
Data^.Node := nNode;
Data^.ImageIndex := 1;
end;
Ich öle schon den ganzen Tag daran herum, aber es will und will nicht funktionieren
Wäre lieb, wenn sich nochmal jemand erbarmen würde