AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Gefilterte Dateien / StringGrid/ XML

Ein Thema von Freyr77 · begonnen am 23. Jun 2016 · letzter Beitrag vom 15. Jul 2016
Antwort Antwort
Seite 1 von 2  1 2   
Freyr77
(Gast)

n/a Beiträge
 
#1

Gefilterte Dateien / StringGrid/ XML

  Alt 23. Jun 2016, 09:10
Delphi-Version: 5
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)?
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#2

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 23. Jun 2016, 10:11
... dass ich grob gesagt aus XML-Dokumenten die Versionsnummern anzeigen lassen soll.
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.
Versionsnummern von was? .XML .dproj oder vllt. doch etwas ganz anderes?

Wie mache ich das, dass man einen Ordner auswählt und nur die enthaltenen dprojs angezeigt werden (im StringGrid)?
Doch keine Versions-Nummer?

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
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
DrTosh

Registriert seit: 3. Dez 2015
7 Beiträge
 
#3

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 23. Jun 2016, 10:14
Ich habe mir dafuer eine Funktion geschrieben:

Code:
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;
Und hier der Aufruf:
Code:
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;
MfG DrTosh
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#4

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 23. Jun 2016, 10:37
... dass ich grob gesagt aus XML-Dokumenten die Versionsnummern anzeigen lassen soll.
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.
Versionsnummern von was? .XML .dproj oder vllt. doch etwas ganz anderes?


Wie mache ich das, dass man einen Ordner auswählt und nur die enthaltenen dprojs angezeigt werden (im StringGrid)?
Doch keine Versions-Nummer?

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
Versionsnummer aus der dproj.Gut, schau ich mir mal an! Danke.
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#5

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 23. Jun 2016, 10:43
Ich habe mir dafuer eine Funktion geschrieben:

Code:
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;
Und hier der Aufruf:
Code:
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;
MfG DrTosh
Wunderbar, Danke!
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#6

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 13. Jul 2016, 09:49
Nächtes Problem in der Sache:

Ich habe folgendes geschrieben um das XML-Dokument aufzurufen:

Delphi-Quellcode:
Procedure Irgendwas.FormCreate(Sender: TObject);
begin
  CurrentXML := NewXMLDocument;
  CurrentXML := CurrentXML.LoadFromFile('irgendwas.xml');
  CurrentXML.Active := true;
end;
Der Fehler tritt bei LoadFromFile auf, da sagt der Compiler - Inkompatible Typen: IXMLDocument und procedure, untyped pointer or untyped paramter -
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.
  Mit Zitat antworten Zitat
samso

Registriert seit: 29. Mär 2009
434 Beiträge
 
#7

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 13. Jul 2016, 10:01
Muss es nicht so sein?
Delphi-Quellcode:
Procedure Irgendwas.FormCreate(Sender: TObject);
begin
  CurrentXML := NewXMLDocument;
  CurrentXML.LoadFromFile('irgendwas.xml');
  CurrentXML.Active := true;
end;
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#8

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 13. Jul 2016, 10:20
Oh weh, oh weh.... Danke dir, hast recht!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
39.449 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 13. Jul 2016, 15:45
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.
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
Delphi-Tage 2005-2014
  Mit Zitat antworten Zitat
Freyr77
(Gast)

n/a Beiträge
 
#10

AW: Gefilterte Dateien / StringGrid/ XML

  Alt 14. Jul 2016, 14:32
Bei SelectNodes habe ich das Problem, dass ja immer ein String zum Abrufen gefordert wird.

Delphi-Quellcode:
begin
    DOMNodeList := DomNodeSelect.selectNodes('blabla/blabla2/blabla3/text()');
So zum Beispiel...

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?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:36 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf