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;