AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Alle Filenamen

Ein Thema von wendelin · begonnen am 7. Mai 2024 · letzter Beitrag vom 14. Mai 2024
Antwort Antwort
Seite 1 von 2  1 2   
wendelin

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

AW: Alle Filenamen

  Alt 8. Mai 2024, 08:21
Hallo,
Danke an alle für Eure Antworten.

Ich denke, Ihr habt mir sehr geholfen.


Wolfgang (Wendelin)
Wolfgang
  Mit Zitat antworten Zitat
wendelin

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

AW: Alle Filenamen

  Alt 9. Mai 2024, 10:57
Hallo,
leider klappt es bei mir noch nicht richtig.

Wenn ich folgenden Code schreibe, siehe Example und compiliere
erhalte ich folgende Fehlermeldung : Undeclared Indentifier 'IOUtils'

Kann es sein, dass bei Delphi7 der 'System' 'IOUtils' Fehlt ?

Wolfgang (Wendelin)
Angehängte Dateien
Dateityp: txt Example.txt (308 Bytes, 4x aufgerufen)
Wolfgang
  Mit Zitat antworten Zitat
Aliquis

Registriert seit: 26. Jun 2011
Ort: Grafschaft Bentheim
32 Beiträge
 
Delphi 12 Athens
 
#3

AW: Alle Filenamen

  Alt 9. Mai 2024, 11:14
Ja, so weit ich weiß gibt es System.IoUtils erst ab Delphi 2010.
Georg
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.600 Beiträge
 
Delphi 7 Professional
 
#4

AW: Alle Filenamen

  Alt 9. Mai 2024, 11:22
Delphi 7 kennt das meiste des Vorgeschlagenen nicht, daher können die Ideen mit Delphi 7 nicht umgesetzt werden.

Das von himitsu vorgeschlagene Mulitselect in OpenDialog funktioniert in Delphi 7.

Befrage die Suchmaschine Deiner Wahl mal nach rekursive Dateisuche Delphi 7. Dort solltest Du Antworten zu Deiner Fragestellung finden, die auch mit Delphi 7 funktionieren.
  Mit Zitat antworten Zitat
Papaschlumpf73

Registriert seit: 3. Mär 2014
Ort: Berlin
464 Beiträge
 
Delphi 12 Athens
 
#5

AW: Alle Filenamen

  Alt 9. Mai 2024, 11:41
Das hier müsste auch unter Delphi 7 funktionieren:

Delphi-Quellcode:
procedure GetFileListEx(const Directory: string; const Files: TStrings; const FileMask: string; const SubFolders: Boolean);
var SearchRec: TSearchRec;
begin
Application.ProcessMessages;
if FindFirst(IncludeTrailingPathDelimiter(Directory)+FileMask, faAnyFile and not faDirectory and not faVolumeID and not faHidden, SearchRec) = 0 then
 try repeat Files.Add(IncludeTrailingPathDelimiter(directory)+SearchRec.Name);
     until FindNext(SearchRec) <> 0;
 finally SysUtils.FindClose(SearchRec); end;
if SubFolders then
 if FindFirst(IncludeTrailingPathDelimiter(Directory)+'*.*', faAnyFile, SearchRec) = 0 then
  try repeat
      if (SearchRec.Attr and faDirectory) <> 0 then
       if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..'))
       then GetFileListEx(IncludeTrailingPathDelimiter(Directory)+SearchRec.Name, Files, FileMask, SubFolders);
      until FindNext(SearchRec) <> 0;
  finally SysUtils.FindClose(SearchRec); end;
end;
  Mit Zitat antworten Zitat
TBx
(Administrator)

Registriert seit: 13. Jul 2005
Ort: Stadthagen
1.915 Beiträge
 
Delphi 12 Athens
 
#6

AW: Alle Filenamen

  Alt 9. Mai 2024, 12:42
Vielleicht hilft dir das hier weiter.
Thomas Breitkreuz
Gruß Thomas
- Admin DelphiPRAXIS
- Admin Delphi-Treff
- Embarcadero MVP
  Mit Zitat antworten Zitat
TurboMagic

Registriert seit: 28. Feb 2016
Ort: Nordost Baden-Württemberg
3.096 Beiträge
 
Delphi 12 Athens
 
#7

AW: Alle Filenamen

  Alt 9. Mai 2024, 12:48
Das hier müsste auch unter Delphi 7 funktionieren:

Delphi-Quellcode:
procedure GetFileListEx(const Directory: string; const Files: TStrings; const FileMask: string; const SubFolders: Boolean);
var SearchRec: TSearchRec;
begin
Application.ProcessMessages;
if FindFirst(IncludeTrailingPathDelimiter(Directory)+FileMask, faAnyFile and not faDirectory and not faVolumeID and not faHidden, SearchRec) = 0 then
 try repeat Files.Add(IncludeTrailingPathDelimiter(directory)+SearchRec.Name);
     until FindNext(SearchRec) <> 0;
 finally SysUtils.FindClose(SearchRec); end;
if SubFolders then
 if FindFirst(IncludeTrailingPathDelimiter(Directory)+'*.*', faAnyFile, SearchRec) = 0 then
  try repeat
      if (SearchRec.Attr and faDirectory) <> 0 then
       if ((SearchRec.Name <> '.') and (SearchRec.Name <> '..'))
       then GetFileListEx(IncludeTrailingPathDelimiter(Directory)+SearchRec.Name, Files, FileMask, SubFolders);
      until FindNext(SearchRec) <> 0;
  finally SysUtils.FindClose(SearchRec); end;
end;
Könnte funktionieren, auch wenn ich das etwas anders formatieren würde, aber das ist mehrheitlich Geschmackssache.
Was ich aber lieber weglassen würde ist das Application.ProgressMessages. Damit kann man auch Chaos anrichten,
z. B. wenn die Routine aus einem Eventhandler heraus aufgerufen wird und der nicht reetrant ist...
Grüße
TurboMagic
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.588 Beiträge
 
Delphi 12 Athens
 
#8

AW: Alle Filenamen

  Alt 9. Mai 2024, 13:43
Zitat:
Suchmaschine Deiner Wahl
oder hier im Haus
FindFirstFindFirst
Dateien suchenDateien suchen

Hier im Forum suchenFindFirst
Hier im Forum suchenDateien suchen
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
wendelin

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

AW: Alle Filenamen

  Alt 9. Mai 2024, 15:38
Hallo,
nochmals Danke an Alle.

Ich werde die verschiedenen Vorschläge ausprobieren.

Wolfgang (Wendelin)
Wolfgang
  Mit Zitat antworten Zitat
wendelin

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

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
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:23 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