Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Dateinamen auslesen (https://www.delphipraxis.net/67325-dateinamen-auslesen.html)

Drunken_SheeP 13. Apr 2006 02:19


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

zecke 13. Apr 2006 02:38

Re: Dateinamen auslesen
 
:hi:

Wie greifst Du denn auf die Dateien zu (ListBox etc.)?

ichbins 13. Apr 2006 02:54

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;

Klaus01 13. Apr 2006 08:56

Re: Dateinamen auslesen
 
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
    begin
      repeat
        list.add(f.name);
      until findnext(f) <> 0;
    end;
  findclose(f);
end;
oder so, dann kann man sich das exit sparen
und macht es meiner Meinung nach etwas lesbarer ;o)

Grüße
Klaus

Mavarik 13. Apr 2006 09:22

Re: Dateinamen auslesen
 
Delphi-Quellcode:
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;
oder so geht es noch einfacher!

Frank :coder:

b1zZ 13. Apr 2006 09:33

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:
VerzInhalt:= ReadDir(RemotePath,'*.*',true,true,true);
Wobei VerzInhalt eine TStringlist sein muss.

Diese Funktion benutze ich immer, damit lässt sich einiges anstellen.

Gruß b1zZ

C.Schoch 13. Apr 2006 20:23

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