Procedure funktioniert nicht Examine Directroy gibt immer 0

Für allgemeine Fragen zur Programmierung mit PureBasic.
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Procedure funktioniert nicht Examine Directroy gibt immer 0

Beitrag 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
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Re: Procedure funktioniert nicht Examine Directroy gibt imme

Beitrag 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
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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
Zuletzt geändert von 125 am 27.12.2004 15:48, insgesamt 1-mal geändert.
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag von 125 »

Edit: oh ne stimt hatte noch nen zweiten Debug drinne THX mal gucken wie ichs umschrieben kann.

mfg
125
Benutzeravatar
Kiffi
Beiträge: 10719
Registriert: 08.09.2004 08:21
Wohnort: Amphibios 9

Beitrag 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
Benutzeravatar
125
Beiträge: 1322
Registriert: 19.09.2004 16:52
Wohnort: Neu Wulmstorf (Hamburg)
Kontaktdaten:

Beitrag 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:
Antworten