21.11.2014, 01:34
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:
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