Autor Beitrag
patrick
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Do 24.02.05 22:01 
ich stehe mal wieder auf dem schlauch:
ich habe mir eine funktion zusammengebastelt, die überprüft ob in einem verzeichnis keine dateien mehr vorhanden sind, und das dieses verzeichnis später problemlos gelöscht werden kann:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
function DirIsEmpty(Path:String):boolean;
var
  SR: TSearchRec;
const
  Filter:string = '*';
begin
  result:=true;
  Path:=IncludeTrailingPathDelimiter(Path);
  
  if FindFirst(Path+Filter,faAnyFile - faDirectory,SR)=0 then
  repeat
    if (SR.Attr <> faDirectory) then
    begin
      result:=false;
    end;

    if (SR.Attr = faDirectory) and (SR.Name <> '.') and (SR.Name <> '..') then
    begin
      result := DirIsEmpty(Path + SR.Name + '\');
    end;
  until
  (FindNext(SR) <>0) or (result=false);
  
  FindClose(SR);
end;


aber irgendwas funktioniert bei der funktion nicht so wie ich es mir gedacht hab:
wenn sich mehrere unterverzeichnisse in dem ordner befinden, und in einem der verzeichnisse eine datei befindet liefert die funktion dennoch den wert "true" (verzeichnisse leer) aus.

ich glaube das problem ist, das die markierte abfrage einfach die dateien im unterordner bzw die ordner nicht erkennt und deshalb den code nicht ausführt.

ich komm aber grad nicht dahinter warum die funktion sich so verhält. wäre für einen gedankenanstoss dankbar.

_________________
Patrick
im zweifelsfall immer das richtige tun!!!


Zuletzt bearbeitet von patrick am Do 24.02.05 22:12, insgesamt 1-mal bearbeitet
retnyg
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2754

SNES, GB, GBA, CPC, A500, 486/66, P4/3.0HT: NintendOS, AmigaOS, DoS
Delphi 5, Delphi 7
BeitragVerfasst: Do 24.02.05 22:04 
müsste das nicht heissen faAnyFile AND faDirectory ?
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Do 24.02.05 22:11 
retnyg hat folgendes geschrieben:
müsste das nicht heissen faAnyFile AND faDirectory ?


Fast ;)

ausblenden Delphi-Quelltext
1:
if (sr.Attr and faDirectory) = faDirectory then...					


AXMD
patrick Threadstarter
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 1481

WIN2k, WIN XP
D6 Personal, D2005 PE
BeitragVerfasst: Do 24.02.05 22:17 
wust ich's doch, wuste ich's doch!!!!!! :bawling: :bawling: :autsch:
immer diese kleinigkeiten. ich hab mir schon die ganze zeit gedacht das es irgend sowas unauffälliges sein muss. ARGGGG :motz:

DANKE!!!!!!!

_________________
Patrick
im zweifelsfall immer das richtige tun!!!