Seite 1 von 1

Procedure funktioniert nicht Examine Directroy gibt immer 0

Verfasst: 27.12.2004 15:24
von 125
Hi,
Aus irgendeinem Grund meint er immer das er das Directory nicht examinieren kann. :(
seht ihr den Fehler? ich sitz da jetzt ne halbe std. drüber und finde nix O_o

Code: Alles auswählen

Procedure ScanRecursivMultimedia(Dir$)
  If ExamineDirectory(0,Dir$,"*.*") <> 0
    Repeat
      Isthereafile=NextDirectoryEntry()
      If Isthereafile=1
        Select GetExtensionPart(Dir$+DirectoryEntryName())
          Case "mp3"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "ogg"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "mod"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "s3m"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "xm"
            AddToPlaylist(Dir$+DirectoryEntryName()) 
          Case "it"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "mid"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "midi"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "wav"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "mp2"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "asf"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "aiff"
            AddToPlaylist(Dir$+DirectoryEntryName())
          Case "wma"
            AddToPlaylist(Dir$+DirectoryEntryName())
        EndSelect
      ElseIf Isthereafile=2
        ScanRecursivMultimedia(Dir$+DirectoryEntryName())
      EndIf 
      Until Isthereafile=0
    Else
    MessageRequester("Directory scan Error","Can't examine directory")
  EndIf
EndProcedure
Schonmal THX in voraus! :)

mfg
125

Re: Procedure funktioniert nicht Examine Directroy gibt imme

Verfasst: 27.12.2004 15:39
von Kiffi
> Aus irgendeinem Grund meint er immer das er das Directory nicht
> examinieren kann. :(

wenn Du Dir mal Dir$ bzw. Dir$+DirectoryEntryName() ausgeben lässt, dann
wirst Du sehen, warum er die Fehlermeldung ausgibt.

Grüße ... Kiffi

Verfasst: 27.12.2004 15:46
von 125
hab mir gerade dir$ ausgeben lassen
bei
Debug Pathrequester ......
bekomm ich ein Verzecihnis gedebuggt.
bei Debug dir$ bekomm ich auf einmal 5 Pathes O_o
wie kommt das?
nun bin ich total verwirrt^^

diese Procedur benutz ich zum aufrufen von der anderen:

Code: Alles auswählen

Procedure  AddDir()
  Dir$ = PathRequester("Choose dir ...", "C:\")
  If Dir$ <> ""
    ScanRecursivMultimedia(Dir$)
  EndIf
EndProcedure
mfg
125

Verfasst: 27.12.2004 15:48
von Kiffi
> wie kommt das?

Du rufst Deine Procedure ja rekursiv auf.

Code: Alles auswählen

Procedure ScanRecursivMultimedia(Dir$)
   [b]Debug Dir$[/b]
  If ExamineDirectory(0,Dir$,"*.*") <> 0 
Grüße ... Kiffi

Verfasst: 27.12.2004 15:57
von 125
Edit: oh ne stimt hatte noch nen zweiten Debug drinne THX mal gucken wie ichs umschrieben kann.

mfg
125

Verfasst: 27.12.2004 16:22
von Kiffi
> mal gucken wie ichs umschrieben kann.

vielleicht so?

Code: Alles auswählen

Procedure GetList(root$, Start) 
  If ExamineDirectory(Start, root$, "") 
    Repeat 
      Type = NextDirectoryEntry() 
      If Type = 2 
        If DirectoryEntryName() <> "." And DirectoryEntryName() <> ".." 
          If root$ = "" 
            GetList(DirectoryEntryName() + "\" , Start+1) 
          Else 
            GetList(root$ + DirectoryEntryName() + "\" , Start+1) 
          EndIf 
          UseDirectory(Start) 
        EndIf 
      Else 
        If Type = 1
          Select LCase(GetExtensionPart(Dir$+DirectoryEntryName()))
            Case "mp3"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "ogg"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "mod"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "s3m"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "xm"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "it"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "mid"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "midi"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "wav"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "mp2"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "asf"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "aiff"
              AddToPlaylist(root$ + DirectoryEntryName())
            Case "wma"
              AddToPlaylist(root$ + DirectoryEntryName())
          EndSelect 
        EndIf 
      EndIf 
    Until Type = 0 
  EndIf 
EndProcedure 

GetList("C:\", 0 )

Der Code ist aus der PureArea geklaut und ein wenig abgewandelt worden.

Grüße ... Kiffi

Verfasst: 27.12.2004 17:02
von 125
uff hätte ich mal früher hier reingeschaut habs jetzt anders gemacht-
ich les das direcory aus packe alle u-directors in ein array und das wird dann am ende abgearbeitet. trotzdem thx :) hast mir super geholfen :allright: