AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nach Dateien in einem Ordner Suchen

Ein Thema von kagi3624 · begonnen am 26. Jun 2020 · letzter Beitrag vom 26. Jun 2020
Antwort Antwort
kagi3624

Registriert seit: 3. Feb 2020
138 Beiträge
 
Delphi 6 Enterprise
 
#1

Nach Dateien in einem Ordner Suchen

  Alt 26. Jun 2020, 15:10
Delphi-Version: 6
Hallo, ich möchte einen Ordner nach allen Dateien durchsuchen und mit denen irgendwas machen. Dafür habe ich eine Funktion zusammengegoogelt und die macht eigentlich auch, was ich möchte.

Code:
procedure TForm1.SearchFiles(filepath: string);
var
  MySearch: TSearchRec;
  FindResult: Integer;
begin
  FindResult:=FindFirst(filepath+'\*.*', faAnyFile, MySearch);
  if (MySearch.Name<>'.')and(MySearch.Name<>'..') then begin
    Memo1.Lines.Add(MySearch.Name);
    prepareFile(filepath, MySearch.Name, true);
  end;
  while FindNext(MySearch)=0 do
  begin
    if (MySearch.Attr<>faDirectory) and (MySearch.Name<>'.') and (MySearch.Name<>'..') then begin
      Memo1.Lines.Add(MySearch.Name);
      prepareFile(filepath, MySearch.Name, true);
    end;
  end;
end;
Allerdings meckert delphi

Code:
[Hinweis] meeh.pas(85): Auf 'FindResult' zugewiesener Wert wird niemals benutzt
Die Zeile kann ich auch nicht ausblenden, dann funktioniert es nicht mehr. Kann ich den Hinweis irgendwie beheben oder einfach ignorieren? Danke!
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.176 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

AW: Nach Dateien in einem Ordner Suchen

  Alt 26. Jun 2020, 15:25
Der Compiler sagt dass die Zuweisung an die Variable "FindResult" (und damit die gesamte Variable) überflüssig ist, nicht die gesamte Zeile!
  Mit Zitat antworten Zitat
Achim Kalwa

Registriert seit: 2. Apr 2005
Ort: Lienen
110 Beiträge
 
Delphi 12 Athens
 
#3

AW: Nach Dateien in einem Ordner Suchen

  Alt 26. Jun 2020, 15:27
Code:
[Hinweis] meeh.pas(85): Auf 'FindResult' zugewiesener Wert wird niemals benutzt
Die Zeile kann ich auch nicht ausblenden, dann funktioniert es nicht mehr. Kann ich den Hinweis irgendwie beheben oder einfach ignorieren? Danke!
Der Compiler hat Recht. Der Inhalt von FindResult zeigt an, ob die Suche mittels FindFirst erfolgreich war oder nicht. Und weil Du diesen Wert nicht prüfst, meckert der Compiler.

Besser wäre folgender Code:
Code:
var
  MySearch: TSearchRec;
  FindResult: Integer;
begin
  FindResult := FindFirst(filepath+'\*.*', faAnyFile, MySearch);
  while FindResult = 0 do
  begin
    if (MySearch.Name<>'.')and(MySearch.Name<>'..') then begin
      Memo1.Lines.Add(MySearch.Name);
      prepareFile(filepath, MySearch.Name, true);
    end;

    FindResult := FindNext(MySearch);
  end;
  FindClose(MySearch);
end;
FindResult wird jetzt bei jedem Schleifendurchgang ausgewertet. Sobald der Wert von 0 abweicht, wird die Schleife beendet. Wichtig ist auch das FindClose(), damit werden intern verwendete Daten korrekt freigegben (hier: ein Handle).
Achim
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

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

AW: Nach Dateien in einem Ordner Suchen

  Alt 26. Jun 2020, 17:33
Der Compiler sagt dass die Zuweisung an die Variable "FindResult" (und damit die gesamte Variable) überflüssig ist, nicht die gesamte Zeile!
Per se ist die Antwort richtig, aus Sicht des Compilers,
aber im Grunde wird damit auch gesagt, dass der Entwickler vergessen hat diese Variable zu benutzen,
also das Ergebnis der Suche auszuwerten, ob überhaupt was gefunden wurde. (siehe mein Vorredner)
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort


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 13:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz