AGB  ·  Datenschutz  ·  Impressum  







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

FindFirst/FindNext BUG

Ein Thema von Nightshade · begonnen am 30. Nov 2004 · letzter Beitrag vom 3. Dez 2004
Antwort Antwort
Seite 1 von 2  1 2      
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#1

FindFirst/FindNext BUG

  Alt 30. Nov 2004, 21:49
Der folgende Code findet auf meinen Platten nicht alle Dateien.
Auf meiner "G"-Festplatte findet er alles einwandfrei, aber z.B. auf meiner "F"-Festplatte fidet er nichts.

Delphi-Quellcode:
procedure TForm1.ReadDir(path : string; sl : TStrings);
var
    Fsr : TSearchRec;
    FFileAttrs: Integer;
    FName : string;
begin
  path := IncludeTrailingPathDelimiter(path);
  FFileAttrs := faAnyFile;
  if FindFirst(Path + '*.*', FFileAttrs, Fsr) = 0 then
  begin
    repeat
      if (fsr.Attr and faDirectory) = fsr.Attr then
      begin
        if copy(fsr.name,1,1) <> '.then
          ReadDir(Path+fsr.name, sl);
      end
      else if (fsr.Attr and FFileAttrs) = fsr.Attr then
      begin
        if copy(fsr.Name,1,1) <> '.then begin
          FName := path+fsr.Name;
          sl.add(FName);
        end;
      end;
    until FindNext(fsr) <> 0;
    FindClose(fsr);
  end;
end;
Beim Debuggen der Funktion ist mir aufgefallen das FindFirst für fsr.Attr = 8208 zurückliefert.

Kann das mal jemand überprüfen ?

PS :

Win XP-Pro SP2
Delphi 2005 [eng] Architect Trail

[edit=sakura] D2005 aus dem Titel entfernt. Mfg, sakura[/edit]
Miniaturansicht angehängter Grafiken
d2k5bug.jpg  
Angehängte Dateien
Dateityp: rar findfirstbug.rar (6,4 KB, 8x aufgerufen)
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 21:52
Zitat von Nightshade:
Auf meiner "G"-Festplatte findet er alles einwandfrei, aber z.B. auf meiner "F"-Festplatte fidet er nichts.
Äh, dann ist es wohl kein Bug. Oder willst du ernsthaft erzählen, dass "FindFirst" deine G-Platte problemlos durchsucht, aber bei F versagt?
  Mit Zitat antworten Zitat
Benutzerbild von gsh
gsh

Registriert seit: 24. Okt 2004
1.542 Beiträge
 
Delphi XE Architect
 
#3

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 21:53
Keine Ahnung von einen Bug aber mit dem was ich mir gebastelt habe funktioniert jedes Laufwerk.
Code:
procedure THaupt.SEARCH_DIR(Dir, Filter : string; var List : TStringList);
var
  SEARCH: TSearchRec;
  RES: integer;
begin
  Application.ProcessMessages;
  RES := findfirst(Dir+'\'+Filter,faanyfile-faDirectory,SEARCH);
  try
    while RES = 0 do
      begin
        if (SEARCH.Attr and faDirectory) = 0 then
          begin
            List.Add(Dir + '\' + SEARCH.Name);
            Application.ProcessMessages;
          end;
        RES := findnext(SEARCH);
      end;
  finally
    findclose(SEARCH);
  end;
  RES := findfirst(Dir+'\'+'*.*',faanyfile,SEARCH);
  try
    while RES = 0 do
      begin
        if (SEARCH.Name <> '.') and (SEARCH.Name <> '..') and ((SEARCH.Attr and faDirectory) <> 0) then
          SEARCH_DIR(Dir+'\'+SEARCH.Name, Filter, List);
        RES := findnext(SEARCH);
      end;
  finally
    findclose(SEARCH);
  end;
end;
Damit habe ich noch nie problemme gehapt.

gsh
Alex
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 21:57
Ich bin selber verwirrt, aber ich hab schon alle Platten per ScanDisk überprüft.

Nur bei "G" funktioniert es.
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 21:58
@Nightshade: Hast du deinen Code auch mal unter Delphi 7 getestet? Ist es dort genauso?
  Mit Zitat antworten Zitat
Nightshade

Registriert seit: 7. Jan 2003
Ort: Menden
192 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 22:04
Zitat von Matze:
@Nightshade: Hast du deinen Code auch mal unter Delphi 7 getestet? Ist es dort genauso?
Hmmm, auf die Idee hätte ich auch selber kommen können

Nein unter D7 geht es auch nicht....

Aber woher kommt dieses Atrr = 8208 ?
Christian
Killing for peace is like fucking for virginity

Nightshade
  Mit Zitat antworten Zitat
Benutzerbild von md_mse
md_mse

Registriert seit: 13. Aug 2003
Ort: Berlin
95 Beiträge
 
#7

Re: [D2005] FindFirst/FindNext BUG

  Alt 30. Nov 2004, 22:14
Zitat von Nightshade:
Der folgende Code findet auf meinen Platten nicht alle Dateien.
Auf meiner "G"-Festplatte findet er alles einwandfrei, aber z.B. auf meiner "F"-Festplatte fidet er nichts.

Delphi-Quellcode:
procedure TForm1.ReadDir(path : string; sl : TStrings);
...
  if FindFirst(Path + '*.*', FFileAttrs, Fsr) = 0 then
...
end;
Beim Debuggen der Funktion ist mir aufgefallen das FindFirst für fsr.Attr = 8208 zurückliefert.

Kann das mal jemand überprüfen ?

PS :

Win XP-Pro SP2
Delphi 2005 [eng] Architect Trail
Du musst vorher auf das Laufwerk wechseln, du kannst das nicht per "FindFirst" bewerkstelligen...
mit
Code:
ChDir('G:\')
kommst du sicherlich auch auf Laufwerk G:
  Mit Zitat antworten Zitat
Benutzerbild von jim_raynor
jim_raynor

Registriert seit: 17. Okt 2004
Ort: Berlin
1.251 Beiträge
 
Delphi 5 Standard
 
#8

Re: [D2005] FindFirst/FindNext BUG

  Alt 1. Dez 2004, 05:59
Das Problem ist folgendes:

if (fsr.Attr and faDirectory) = fsr.Attr then Richtig muss es heissen:

 if (fsr.Attr and faDirectory) = faDirectory then Seit wann muss man ein ChDir machen, um Dateien auf einem anderen Laufwerk zu suchen?

Und deine Variante mit zwei Schleifen ist auch nicht gerade performant. Das kannst du doch alles in einer machen.
Christian Reich
Schaut euch mein X-COM Remake X-Force: Fight For Destiny ( http://www.xforce-online.de ) an.
  Mit Zitat antworten Zitat
1. Dez 2004, 07:55
Dieses Thema wurde von "sakura" von "Delphi 2005 - Bugreports" nach "Windows API" verschoben.
Kein Bug in Delphi, sondern beim Programmierer
Benutzerbild von md_mse
md_mse

Registriert seit: 13. Aug 2003
Ort: Berlin
95 Beiträge
 
#10

Re: [D2005] FindFirst/FindNext BUG

  Alt 1. Dez 2004, 18:57
@jim_raynor: Ich habe eigentlich in Erinnerung das das genau so wie bei FindFirstFile() ist...
Ja da bin ich mir sogar fast Sicher ...
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:13 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