Themabewertung:
  • 0 Bewertung(en) - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Recursive Suche mit scandir
#7
scan_Dir verwendet eine Global liste, deshalb kann man es nicht rekursiv aufrufen. Sonst bräuchte die Funktion einen "Handle". Sorry wenn die Docu das nicht erwähnt.
Hier ein Beispiel Code wie du das machen kannst.
[ab3]optimize 5
XINCLUDE "dos.include.ab3"

Statement scan{path.s}
lock.l = Lock_(&path.s,#ACCESS_READ)
If lock=0 Then Statement Return
*fib.FileInfoBlock = AllocDosObject_(#DOS_FIB,#TAG_DONE)
If *fib=0 Then Statement Return
If Examine_ (lock,*fib)
While ExNext_(lock,*fib)
filename.s = dos_AddPart{path.s,Peek.s(&*fib\fib_FileName)}
If *fib\fib_DirEntryType<0
NPrint "do something with ",filename.s
Else
scan{filename.s}
End If
Wend
End If
UnLock_ lock
FreeDosObject_ #DOS_FIB,*fib
End Statement

scan{"Sys:"}
End[/ab3]


Code ohne Formatierungsfehler:
Code:
optimize 5
XINCLUDE "dos.include.ab3"

Statement scan{path.s}
  lock.l = Lock_(&path.s,#ACCESS_READ)
  If lock=0 Then Statement Return
  *fib.FileInfoBlock = AllocDosObject_(#DOS_FIB,#TAG_DONE)
  If *fib=0 Then Statement Return
  If Examine_ (lock,*fib)
    While ExNext_(lock,*fib)
      filename.s = dos_AddPart{path.s,Peek.s(&*fib\fib_FileName)}
      If *fib\fib_DirEntryType<0
        NPrint "do something with ",filename.s
      Else
        scan{filename.s}
      End If
    Wend
  End If
  UnLock_ lock
  FreeDosObject_ #DOS_FIB,*fib
End Statement

scan{"Sys:"}
End
Zitieren


Nachrichten in diesem Thema

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste