![]() |
Delphi-Version: 5
Gefilterte Dateien / StringGrid/ XML
Moin, ich schon wieder.
Diesmal geht es darum, dass ich grob gesagt aus XML-Dokumenten die Versionsnummern anzeigen lassen soll. In einem StringGrid. Hier soll das Programm ausschließlich .dproj-Endungen berücksichtigen. Man muss einen Ordner mit Unterordnern öffnen, die alle jeweils eine .dproj Datei enthalten. Diese müssen im Grid aufgelistet werden und nebenan Automatisch die richtigen Versionsnummern ausgeben. Die konkrete Frage dazu wäre: Wie mache ich das, dass man einen Ordner auswählt und nur die enthaltenen dprojs angezeigt werden (im StringGrid)? |
AW: Gefilterte Dateien / StringGrid/ XML
Zitat:
Zitat:
Zitat:
Mit Findfirst/FindNext solltest Du ans Ziel kommen. Hier geistern jede Menge Beispiele herum, da sollte auch etwas für Dich dabei sein. Gruß K-H |
AW: Gefilterte Dateien / StringGrid/ XML
Ich habe mir dafuer eine Funktion geschrieben:
Code:
Und hier der Aufruf:
function fGetFiles(lDir: String; lMask: String; var lFileList: TStringList): Boolean;
var lSR: TSearchRec; begin Result := false; if not DirectoryExists(lDir) then Raise Exception.Create(lDir + ' not exists!') else begin if not Assigned(lFileList) then Raise Exception.Create('You have to Assign your Stringlist for "fGetFiles"'); try if FindFirst(IncludeTrailingPathDelimiter(lDir) + lMask, faAnyFile, lSR) = 0 then begin repeat if (lSR.Attr <> faDirectory) then begin Result := true; lFileList.Add(lSR.Name); end; until FindNext(lSR) <> 0; SysUtils.FindClose(lSR); end; finally end; end; end;
Code:
MfG DrTosh
procedure TIrgendwas.DoIt;
var lStringList: TStringList; lRun: Integer; begin lStringList := TStringList.Create; try fGetFiles('C:\...', '*.dproj', lStringlist); for lRun := 0 to lStringList.Count - 1 do begin // Hier kommt dann deine Eintragung in die Stringlist rein, das kriegst du mit sicherheit selber hin ;) showMessage(lStringList[lRun]); // anstelle von diesem hier end; finally lStringList.Free; end; end; |
AW: Gefilterte Dateien / StringGrid/ XML
Zitat:
|
AW: Gefilterte Dateien / StringGrid/ XML
Zitat:
|
AW: Gefilterte Dateien / StringGrid/ XML
Nächtes Problem in der Sache:
Ich habe folgendes geschrieben um das XML-Dokument aufzurufen:
Delphi-Quellcode:
Der Fehler tritt bei LoadFromFile auf, da sagt der Compiler - Inkompatible Typen: IXMLDocument und procedure, untyped pointer or untyped paramter -
Procedure Irgendwas.FormCreate(Sender: TObject);
begin CurrentXML := NewXMLDocument; CurrentXML := CurrentXML.LoadFromFile('irgendwas.xml'); CurrentXML.Active := true; end; Was möchte er von mir, der Parameter ist laut Funktion "AFileName - System String". Zweite Frage wäre: Die auszulesende XML-Datei befindet sich in einer .dproj. Geht das trotzdem über die dproj zum auslesen, wenn ich den Pfad dazu öffnen lasse? Danke. |
AW: Gefilterte Dateien / StringGrid/ XML
Muss es nicht so sein?
Delphi-Quellcode:
Procedure Irgendwas.FormCreate(Sender: TObject);
begin CurrentXML := NewXMLDocument; CurrentXML.LoadFromFile('irgendwas.xml'); CurrentXML.Active := true; end; |
AW: Gefilterte Dateien / StringGrid/ XML
Oh weh, oh weh.... Danke dir, hast recht! :thumb:
|
AW: Gefilterte Dateien / StringGrid/ XML
Und es gibt mehrere Implementationen des Interfaces "IXMLDocument", die zwar alle "gleich" sind, aber für den Compiler eben nicht "identisch".
Da kann man mit der Reihenfolge der Units im Uses spielen, oder durch Angabe des Namespaces bei der Typenverwendung, wenn es dort mal knallt, weil man mehrere Units eingebunden hat und der Typ so mehrfach vorhanden ist. |
AW: Gefilterte Dateien / StringGrid/ XML
Bei SelectNodes habe ich das Problem, dass ja immer ein String zum Abrufen gefordert wird.
Delphi-Quellcode:
So zum Beispiel...
begin
DOMNodeList := DomNodeSelect.selectNodes('blabla/blabla2/blabla3/text()'); blabla wäre in meinem Fall: <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> blabla2: <PropertyGroup> blabla3: <PropertyGroup Condition="'$(Base)'!=''"> <---- Hier liegt das Problem blabla4: <VerInfo_Keys> Hier sind Zeichen enthalten mit denen der Compiler nicht klar kommt. Ich kann/darf die Struktur aber leider auch nicht verändern. Jemand einen Lösungsvorschlag? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:46 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