![]() |
in dateinamen nach einem wort suchen
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 |
Re: in dateinamen nach einem wort suchen
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; |
Re: in dateinamen nach einem wort suchen
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: ![]() grüße horst |
Re: in dateinamen nach einem wort suchen
Hallo horst,
Zitat:
Zitat:
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; |
Re: in dateinamen nach einem wort suchen
genau das ist es...perfekt, bigthx :balloon:
|
Re: in dateinamen nach einem wort suchen
hallo horst,
ACHTUNG: Ich habe gerade erfahren, dass POS in D5 Casesensitive ist, daher solltest Du bei Bedarf
Delphi-Quellcode:
schreiben (alles wird in Kleinbuchstaben gewandelt und dann verglichen).
IF POS(AnsiLowerCase(aFilter), AnsiLowerCase(SearchR.Name)) <> 0 THEN
|
Re: in dateinamen nach einem wort suchen
genau das wäre meine nächste frage gewesen ...
:hi: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:30 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