![]() |
In ShellListview nur bestimmte XML Dateien anzeigen
Ich versuche gerade nur bestimmte XML-Dateien in einem ShellListview anzuzeigen:
Delphi-Quellcode:
Und
procedure TfrmTemplate.ShellListView1AddFolder(Sender: TObject; AFolder: TShellFolder; var CanAdd: Boolean);
begin CanAdd := (AFolder.IsFolder or MatchesMask(AFolder.DisplayName, '*.xml')) or TTemplateIO.IsFBITemplate(AFolder.DisplayName); end;
Delphi-Quellcode:
Es sollen also nur Ordner und XML-Dateien angezeigt werden deren Rootnode "dwfbtemplate" ist. Aber leider zeigt er mir alle XML-Dateien in dem Verzeichnis an. Wo ist da mein Denkfehler?
class function TTemplateIO.IsFBITemplate(const Filename: WideString): Boolean;
var XMLDoc : DomDocument; Node : IXMLDOMNode; begin Result := False; CoInitialize(nil); XMLDoc := CoFreeThreadedDOMDocument.Create; if Assigned(XMLDoc) then begin XMLDoc.load(Filename); Node := XMLDoc.selectSingleNode('/dwfbtemplate/'); Result := Assigned(Node); end; CoUninitialize; end; |
Re: In ShellListview nur bestimmte XML Dateien anzeigen
beim or.
|
Re: In ShellListview nur bestimmte XML Dateien anzeigen
Nicht wirklich. Wenn ich aus dem letzte or ein and mache, zeigt er mir gar nichts an.
Gucken wir uns mal die Funktion an:
Delphi-Quellcode:
Lasse ich den abschliessenden Schrägstrich weg, bekomme ich die Fehlermeldung:
class function TTemplateIO.IsFBITemplate(const Filename: WideString): Boolean;
var XMLDoc : DomDocument; Node : IXMLDOMNode; begin Result := False; CoInitialize(nil); XMLDoc := CoFreeThreadedDOMDocument.Create; if Assigned(XMLDoc) then begin XMLDoc.load(Filename); Node := XMLDoc.selectSingleNode('/dwfbtemplate/'); Result := Assigned(Node); end; CoUninitialize; end; Zitat:
|
Re: In ShellListview nur bestimmte XML Dateien anzeigen
Zitat:
|
Re: In ShellListview nur bestimmte XML Dateien anzeigen
Hm... meines erachtens nach ist die Abfrage ein wenig falsch, ich würds so machen:
Delphi-Quellcode:
zur Prüfung evtl:
//Pseudo:
Result := IstVerzeichnis or (IstXmlEndung and HatKorrektenRoot);
Delphi-Quellcode:
ist nur schnell geschustert, aber vielleicht hilft es ja ;)
Result := XMLDoc.root.tagName = 'dwfbtemplate';
|
Re: In ShellListview nur bestimmte XML Dateien anzeigen
Oh, das mit dem Tagnamen kannte ich noch nicht. Werde ich morgen gleich mal ausprobieren an der Arbeit. Danke für die Hilfe.
|
Re: In ShellListview nur bestimmte XML Dateien anzeigen
Mein XMLDoc kennt root.tagName nicht. :?
Ich habe ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz