void AddPath(AnsiString Path, _di_IXMLNode node)
{
AnsiString FilePath=Path+"//*.*";
TSearchRec sr;
sr.Name=FilePath;
int done;
done = FindFirst(FilePath,faAnyFile,sr);
AnsiString FileName;
while (!done) {
FileName=Path+"//"+sr.Name;
FileSetAttr(FileName,0);
if(sr.Attr & faDirectory&&sr.Name[1]!='.') {
_di_IXMLNode ix = node->AddChild("dir");
ix->Attributes["id"] = "id";
ix->Attributes["name"] = sr.Name;
ix->Attributes["path"] = Path;
AddPath(FileName, ix);
}
else {
_di_IXMLNode ix = node->AddChild("file");
ix->Attributes["id"] = "id";
ix->Attributes["name"] = sr.Name;
ix->Attributes["path"] = Path;
ix->Attributes["type"] = "type";
}
done = FindNext(sr);
}
FindClose(sr);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
_di_IXMLDocument X = NewXMLDocument();
AnsiString rootpath = "D://Temp";
X->Active = true;
_di_IXMLNode ix = X->AddChild("dir");
ix->Attributes["id"] = "";
ix->Attributes["name"] = ExtractFileName(rootpath);
ix->Attributes["path"] = ExtractFilePath(rootpath);
AddPath(rootpath, ix);
X->SaveToFile("d://temp//files.xml");
}
//---------------------------------------------------------------------------