Thema: Delphi Alle Filenamen

Einzelnen Beitrag anzeigen

wendelin

Registriert seit: 29. Dez 2010
Ort: Nürnberg
126 Beiträge
 
Delphi 7 Enterprise
 
#13

AW: Alle Filenamen

  Alt 14. Mai 2024, 16:14
Hallo Delphi-freunde

Nochmals vielen dank für Eure zahlreichen Antworten.
Nicht Alles funktionierte.
Mein Dank an TurboMagic und PapaSchlumpf.
Ihr Vorschlag funktionierte am besten.

Delphi-Quellcode:
procedure TForm1.GetFileListEx(const Directory: string;Myfiles :TStrings;const FileMask: string);
var SearchRec: TSearchRec;
    lauf : Integer;
begin
  // Application.ProcessMessages; <-- habe ich drauf verzichtet
  Pfad_und_Header; // von mir eingesetzt
  lauf := 0;
  if FindFirst(IncludeTrailingPathDelimiter(Directory)+ FileMask, faAnyFile and not faDirectory
  and not faVolumeID and not faHidden, SearchRec) = 0 then
  try
    repeat
   // MyFiles.Add(IncludeTrailingPathDelimiter(directory)+SearchRec.Name);
   // habe ich herausgenommen da Fehlermeldung !!
    INC(lauf);
    StringGrid1.Cells[0,lauf] := (IncludeTrailingPathDelimiter(directory)+SearchRec.Name);
    until FindNext(SearchRec) <> 0;
  finally SysUtils.FindClose(SearchRec);
  end;
  glb_Lauf := lauf;
end;

procedure TForm1.SpeedButton4Click(Sender: TObject);
Var Directory : String;
    MyFiles : TStrings;
    FileMask : String;
begin
  Directory := 'F:\d_Mat2';
  FileMask := '*.*';
  GetFileListEx(Directory,MyFiles,FileMask);
end;
Alles läuft prima.

Jetzt habe ich aber noch 2 Fragen.
1. wo ist der Fehler in meinem noch kürzeren Code.?

Delphi-Quellcode:
procedure TForm1.SpeedButton3Click(Sender: TObject);
Var Path : String;
    F : TSearchRec;
    FileAttr : integer;
    Mask : String;
    zaehler : Integer;
begin
  FileAttr := faAnyFile;
  zaehler := 0;
  Path := 'F:\d_Mat2';
  Mask := '*.*';
  If FindFirst(Path + Mask,FileAttr,F) = 0 then try
    repeat
      INC(Zaehler);
      StringGrid1.Cells[0,zaehler] := F.Name; // die Schleife wird nur einmal
                                               // durchlaufen . Ergebnis : Nur der Pfad --> F:\d_Mat2
    until FindNext(F) <> 0;
  finally
    FindClose(F);
  end;
end;
2. Frage :
Wenn ich das StringGrid durchlaufe, muss ich mit der API- Function "ShellExecute" arbeiten um jeden einzelnen File abzuarbeiten,
oder kann ich das auch anders lösen ?

Delphi-Quellcode:
procedure TForm1.BitBtn1Click(Sender: TObject);
Var i : Integer;
    MyStock : String;
    MyPath : String;
begin
  For i := 1 to glb_Lauf do
  begin
    MyPath := StringGrid1.Cells[0,i];
  // ShellExecute(0,MyPath,'OPEN',0,0,Nil);
  end;
end;
Wolfgang
  Mit Zitat antworten Zitat