Hallo Jungs,
ich steck fest, ich hab es nun geschafft eine
XML Datei auszulesen und den gewünschten Tag in eine Listbox zu schreiben, auch hab ich es geschaft das ganze rekursiv zu gestalten das ein Ordner und alle Unterordner durchsucht weren.
Das Klappt eigentlich ganz gut, mein Problem ist das ich jetzt noch eine Prüfung einbauen muss die nur gewisse
xml dateien für das durchsuchen zulässt da nicht jede
xml das gewünschte tag enthält und somit nicht brauchbar ist.
Ich benötige eine Prüfmethode die den Ordner indem sich die gefundene Datei befindet mit dem Dateinamen vergleicht und wenn dieser ohne Extension übereinstimmt dann soll sie ausgelesen werden.
Ein Ordner heisst zb: \34_44459\ und die Datei im Ordner die ausgelesen werden soll heist dann 34_44459.xml, die restlichen
xml Datein die da drin sind sind uninteressant.
Es gibt keine Funktion die mir den letzten Ordner aus einem Pfad ausgiebt, wie könnte ich das nun machen, oder gibts vielleicht sogar ne möglichkeit dies in die FindFirst funktion einzubauen damit das direkt schon beim suchen der Datei geprüft wird?
Hier mal mein Quellcode:
Delphi-Quellcode:
var
Form1: TForm1;
count: integer;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
directory:
string;
mask:
string;
begin
Count := 0;
Listbox1.Items.Clear;
directory := Edit1.Text;
mask := '
*.xml';
Screen.Cursor := crHourGlass;
try
GetAllFiles(directory + mask);
// ShowMessage(directory+mask);
finally
Screen.Cursor := crDefault;
end;
Label2.Caption := (IntToStr(Count) + '
Files found');
end;
procedure TForm1.Button2Click(Sender: TObject);
var
root:
string;
begin
if SelectDirectory('
Select a directory', '
', root)
then edit1.Text:= IncludeTrailingPathDelimiter(root)
else Edit1.Text:='
c:\';
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
ListBox1.Clear;
end;
procedure TForm1.GetAllFiles(mask:
string);
var
search: TSearchRec;
directory:
string;
aktualDir:
string;
begin
directory := ExtractFilePath(mask);
// find all files
if FindFirst(mask, $23, search) = 0
then
begin
repeat
// ShowMessage(aktualDir);
// ExtractFileName(datei)
//XML Datei laden
XMLDocument1.LoadFromFile(directory + search.
Name);
XMLDocument1.Active;
// add the files to the listbox
Form1.ListBox1.Items.Add(XMLDocument1.DocumentElement.childNodes[0].childNodes[0].Text + '
-- ' + directory + search.
Name);
Inc(Count);
until FindNext(search) <> 0;
end;
//Unterverzeichnisse durchsuchen
if FindFirst(directory + '
*.*', faDirectory, search) = 0
then
begin
repeat
if ((search.Attr
and faDirectory) = faDirectory)
and (search.
Name[1] <> '
.')
then
GetAllFiles(directory + search.
Name + '
\' + ExtractFileName(mask));
until FindNext(search) <> 0;
FindClose(search);
end;
end;
Vielleicht könnte mir da einer einen Tip geben wie ich vorgehen muss oder wie ich an den letzten Ordner einem Pfad komme.
Vielen Dank
-sm