Einzelnen Beitrag anzeigen

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