AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

in dateinamen nach einem wort suchen

Ein Thema von horst · begonnen am 25. Okt 2003 · letzter Beitrag vom 25. Okt 2003
Antwort Antwort
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#1

in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 20:12
hallo
ich habe in einem verzeichnis x textfiles mit bestimmten dateinamen.
wie kann ich in diesen dateinamen nach einem wort suchen und das ergebnis in einer valuelisteditor-kompo ausgeben.
in der valuelisteditor-kompo steht dann quasi der dateiname ohne *.txt

grüße horst
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#2

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 20:29
Hallo horst,
meinst Du so?

Delphi-Quellcode:
PROCEDURE TForm1.Button6Click(Sender: TObject);
   PROCEDURE DirList(CONST Path: STRING; FileList: TStrings);
   VAR
      SearchR : TSearchRec;
   BEGIN
      // Bestimmte Dateien suchen -> *.TXT
      IF FindFirst(Path + '*.TXT', faAnyFile, SearchR) = 0 THEN
         REPEAT
            IF (SearchR.Attr <> faDirectory) THEN
               BEGIN
                  // nach einem Wort im Dateinamen suchen
                  // pos ist CaseInsensitive!
                  IF POS('x', SearchR.Name) <> 0 THEN
                        FileList.Add(ChangeFileExt(SearchR.Name, '')); // [EDIT] ohne Extension [/EDIT]
               END;
         UNTIL FindNext(SearchR) <> 0;
      FindClose(SearchR);
   END;

BEGIN
   DirList('C:\', ListBox1.Items);
END;
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#3

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 20:40
das funktioniert echt super...bigthx.
habe nochmal darüber nachgedacht und festgestellt das es doch noch etwas anders sein muss.
die dateien sind nicht nur in einem ordner sondern in mehreren ordnern...
wie kann ich im valuelisteditor in der linken spalte den ordnernamen und in der rechten spalte den gefundenen dateinamen darstellen und nicht in einer listbox?
so ungefähr:
http://www.fusshoeller.com/screens/value.gif

grüße horst
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 21:28
Hallo horst,


Zitat von horst:
...nicht nur in einem ordner sondern in mehreren ordnern...
Wenn Du die Funktion mehrmals aufrufst, dann gibts auch Ergebnisse für mehrere Ordner.
Zitat von horst:
...valuelisteditor...

Meinst Du ein StringGrid?

Ich habs mal schnell umgebaut (Benötig zusätzlich ein StringGrid):
Delphi-Quellcode:
PROCEDURE TForm1.Button6Click(Sender: TObject);
VAR
   aStringList : TStringList;

   FUNCTION GetDirName(CONST aDir: STRING): STRING;
   VAR
      i : Integer;
   BEGIN
      result := '';
      IF aDir = 'THEN Exit;
      FOR i := Length(aDir) - 2 DOWNTO 0 DO
         BEGIN
            IF aDir[i] = '\THEN
               BEGIN
                  Result := Copy(aDir, i + 1, Length(aDir) - i - 1);
                  Exit;
               END;
         END;
      // Root "c:\"
      Result := Copy(aDir, 1, 1);
   END;

   PROCEDURE DirList(CONST Path: STRING; CONST aExtension: STRING; CONST aFilter: STRING; FileList: TStrings);
   VAR
      SearchR : TSearchRec;
   BEGIN
      // Bestimmte Dateien suchen -> *.TXT
      IF FindFirst(Path + aExtension, faAnyFile, SearchR) = 0 THEN
         REPEAT
            IF (SearchR.Attr <> faDirectory) THEN
               BEGIN
                  // nach einem Wort im Dateinamen suchen
                  // pos ist CaseInsensitive!
                  IF POS(aFilter, SearchR.Name) <> 0 THEN
                     BEGIN
                        FileList.Add(Path + SearchR.Name);
                     END;
               END;
         UNTIL FindNext(SearchR) <> 0;
      FindClose(SearchR);
   END;
VAR
   i : Integer;

BEGIN
   aStringList := TStringList.Create;
   TRY
      // 1. Parameter :Verzeichnis, 2. Par: Extension, 3. Par: Filter, 4. Par. eine Stringliste
      DirList('C:\', '*.TXT', 'e', aStringList);
      DirList('C:\DTS\TESTS\Watcher\', '*.TXT', 'e', aStringList);
      FOR i := 0 TO aStringList.Count - 1 DO
         BEGIN
            // 1. Spalte: Name des Directories
            StringGrid1.Cells[0, i + 1] := GetDirName(ExtractFilePath(aStringList.Strings[i]));
            // 2. Spalte: Filenamen ohne Extension
            StringGrid1.Cells[1, i + 1] := ChangeFileExt(ExtractFileName(aStringList.Strings[i]), '');
         END;
   FINALLY
      aStringList.Free;
   END;
END;
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#5

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 21:40
genau das ist es...perfekt, bigthx
  Mit Zitat antworten Zitat
Benutzerbild von APP
APP

Registriert seit: 24. Feb 2003
Ort: Graz (A)
705 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 21:52
hallo horst,

ACHTUNG:
Ich habe gerade erfahren, dass POS in D5 Casesensitive ist,
daher solltest Du bei Bedarf
IF POS(AnsiLowerCase(aFilter), AnsiLowerCase(SearchR.Name)) <> 0 THEN schreiben (alles wird in Kleinbuchstaben gewandelt und dann verglichen).
Armin P. Pressler

BEGIN
...real programmers are using C/C++ - smart developers Delphi;
END;
  Mit Zitat antworten Zitat
horst

Registriert seit: 1. Jul 2003
347 Beiträge
 
Delphi 2007 Professional
 
#7

Re: in dateinamen nach einem wort suchen

  Alt 25. Okt 2003, 22:04
genau das wäre meine nächste frage gewesen ...
  Mit Zitat antworten Zitat
Antwort Antwort


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 04:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz