![]() |
Dateinamen auslesen
hi,
also zuallererst muss ich sagen das ich ein delphi anfänger bin (habe seit 2 jahren info).. ok also mein problem ist folgendes: ich habe ein verzeichnis, in dem befinden sich mehrere (nicht-delphi-format) dateien der form blabla-Mo-04-04-2006.tsx, also immer ein kurzer string, und dann das datum dahinter. meine frage ist jetzt, wie kann ich quasi die dateinamen in delphi einlesen, sodass ich die dateinamen als string quasi zur verfügung habe und sie anschließend vergleichen kann o.ä. da ich eingentlich ja nur das datum vergleichen will, könnte ich es ja mit diesem getfileage machen, aber ich möchte die dateinamen (am besten mit kompletten pfad) ausgeben können. danke schonmal |
Re: Dateinamen auslesen
:hi:
Wie greifst Du denn auf die Dateien zu (ListBox etc.)? |
Re: Dateinamen auslesen
Wenn du alle Files im Verzeichniss listen willst, solltest du mit tsearchrec arbeiten:
Delphi-Quellcode:
var
f:tsearchrec; filename:string; list:tstringlist; begin list:=tstringlist.create; path:=filepath; filename:='C:\Verzeichniss\*.*' //hier auch *.tsx o.ä. möglich if findfirst(filename,0,f)<>0 then exit; list.add(f.name); while findnext(f)=0 do list.add(f.name); findclose(f); end; |
Re: Dateinamen auslesen
Delphi-Quellcode:
oder so, dann kann man sich das exit sparen
var
f:tsearchrec; filename:string; list:tstringlist; begin list:=tstringlist.create; path:=filepath; filename:='C:\Verzeichniss\*.*' //hier auch *.tsx o.ä. möglich if findfirst(filename,0,f) = 0 then begin repeat list.add(f.name); until findnext(f) <> 0; end; findclose(f); end; und macht es meiner Meinung nach etwas lesbarer ;o) Grüße Klaus |
Re: Dateinamen auslesen
Delphi-Quellcode:
oder so geht es noch einfacher!
var
f:tsearchrec; filename:string; list:tstringlist; error : Integer; begin list:=tstringlist.create; path:=filepath; filename:='C:\Verzeichniss\*.tsx'; error := findfirst(filename,faanyfile,f); try while error = 0 do begin list.add(f.name); error := findnext(f); end; finally findclose(f); end; end; Frank :coder: |
Re: Dateinamen auslesen
Delphi-Quellcode:
function ReadDir(Path, Mask: string; ShowDir, ShowFiles, ShowPath: boolean): TStringlist;
var SRec: TSearchRec; DateiListe: TStringList; begin DateiListe := TStringList.Create; if Path[length(Path)] <> '\' then Path:=Path+'\'; if ShowDir AND Showfiles then FindFirst(Path + Mask, faAnyFile, SRec) else if ShowFiles then FindFirst(Path + Mask, not faDirectory, SRec) else if ShowDir then FindFirst(Path + Mask, faDirectory, SRec); if (SRec.Name <> '.') AND (SRec.Name <> '..') AND (SRec.Name <> '') then begin if ShowPath then DateiListe.Add(Path + SRec.Name) else DateiListe.Add(SRec.Name); end; while FindNext(SRec) = 0 do begin if (SRec.Name <> '.') AND (SRec.Name <> '..') AND (SRec.Name <> '') then begin if ShowPath then DateiListe.Add(Path + SRec.Name) else DateiListe.Add(SRec.Name); end; end; FindClose(SRec); Result := DateiListe; end; Aufrufen der funktion
Delphi-Quellcode:
Wobei VerzInhalt eine TStringlist sein muss.
VerzInhalt:= ReadDir(RemotePath,'*.*',true,true,true);
Diese Funktion benutze ich immer, damit lässt sich einiges anstellen. Gruß b1zZ |
Re: Dateinamen auslesen
Hi
Ich machs damit kann auch Unterordner, ist aber nicht von mir :mrgreen:
Delphi-Quellcode:
///////////////////////////GetFiles////////////////////////////////////
// Autor: Daniel B ////////////////////////////////////////////////////////////////////////// procedure TForm1.GetFiles(const Directory: string; Files: TStrings; const FileMask: string = '*.*'; const SubFolders: Boolean = True); function SlashSep(const Path, S: string): string; begin if AnsiLastChar(Path)^ <> '\' then Result := Path + '\' + S else Result := Path + S; end; var SearchRec: TSearchRec; begin if FindFirst(SlashSep(Directory, FileMask), faAnyFile - faDirectory - faVolumeID, SearchRec) = 0 then begin try repeat Files.Add(SlashSep(Directory, SearchRec.Name) + ' -- ' + DateTimeToStr(FileDateToDateTime(FileAge(SlashSep( Directory, SearchRec.Name))))); until FindNext(SearchRec) <> 0; finally SysUtils.FindClose(SearchRec); end; end; if SubFolders then begin if FindFirst(SlashSep(Directory,'*.*'), faAnyFile, SearchRec) = 0 then begin try repeat if (SearchRec.Attr and faDirectory) <> 0 then begin if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..')) then GetFiles(SlashSep(Directory, SearchRec.Name), Files, FileMask, SubFolders); end; until FindNext(SearchRec) <> 0; finally SysUtils.FindClose(SearchRec); end; end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:14 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 by Thomas Breitkreuz