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;