Jai un petit probleme avec FileSystem jcroi :lol:

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Jai un petit probleme avec FileSystem jcroi :lol:

Message par jblaise.cs »

Bijour tout le monde, je refait un pitit tour par ce que j'ai encore besoin d'aide :oops:

Code : Tout sélectionner

Procedure ListAMXFile(Directory$)
  If ExamineDirectory(0, Directory$, "*.*")
    Repeat
     Dir:
     FileType = NextDirectoryEntry()
       If FileType
         FileName$ = DirectoryEntryName()
         If FileType = 2
           FileName$ = ";Explore : "+GetGadgetText(0)+FileName$
           ;ListAMXFile(GetGadgetText(0)+FileName$)
         EndIf
           AddGadgetItem(2, -1, FileName$)
       EndIf
    Until FileType = 0
  Else
    MessageRequester("Error","Erreur impossible d examiner le repertoire ou acun fichier *.amx dans le repertoire : "+GetGadgetText(0),0)
    End
  EndIf
EndProcedure

If OpenWindow(0, 100, 200, 290, 200, #PB_Window_SystemMenu, "Listeur")
 If CreateGadgetList(WindowID())
    StringGadget  (0,  10, 10, 202, 24, "")
    SetGadgetText (0, "C:\Sierra\Half-Life\cstrike\addons\amx\plugins\")
    ButtonGadget  (1, 220, 10, 60 , 24, "List")
    EditorGadget(2, 10, 40, 270, 150)
  EndIf
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_EventGadget
      If EventGadgetID() = 1
       If Right(GetGadgetText(0), 1) <> "\"
         SetGadgetText(0, GetGadgetText(0)+"\")
       EndIf
        ClearGadgetItemList(2)
        ListAMXFile(GetGadgetText(0))
      EndIf
    EndIf
  Until EventID = #PB_EventCloseWindow
 EndIf
Vous reconaitrait l exemple FileSystem :lol: que j'ai "essayer" de modifier :lol:
Comme vous voyez il y a une ligne qui est commenter dans la procedure
Je pensais que avec cette ligne le programme listerait les fichier des dossiers que examine directory trouve mais,... nan :lol:
Est ce que vous pouriez me dire ou est mon erreur par ce que je trouve pas :oops:?
Merci
JB
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

tu fait

Code : Tout sélectionner

  
    FileType = NextDirectoryEntry()
  
2     If FileType         < =========== LA !


         FileName$ = DirectoryEntryName()
         If FileType = 2
           FileName$ = ";Explore : "+GetGadgetText(0)+FileName$
           ;ListAMXFile(GetGadgetText(0)+FileName$)
         EndIf
           AddGadgetItem(2, -1, FileName$)
       EndIf 
a l'endroit ou j'ai ecrit "LA" tu ecrit "if filetype"
et tu le compare a rien !!! est-ce normal ??


en principe les fichiers sont listé si NextDirectoryEntry() renvoi la valeur 1
peut etre faudrai t'il ecrire

Code : Tout sélectionner

If FileType  =1 
non ?? :?

pis t'a imbriqué " If FileType = 2 " dans "if filetype"
donc il faut que "if filetype" soit valable pour que " If FileType = 2 " soit testé !!



j'ai legerement modifier ton program pour obtenir ceci
j'ai désimbrique les 2 "if filetype"


(je ne filtre pas les *.amx , j'affiche tout les fichier )

Code : Tout sélectionner

 Procedure ListAMXFile(Directory$)
    If ExamineDirectory(0, Directory$, "*.*")
        Repeat
            Dir:
            FileType = NextDirectoryEntry()
            If FileType=1
                FileName$ = DirectoryEntryName() 
                AddGadgetItem(2, -1, FileName$)
            EndIf
            If FileType = 2
                FileName$ = ";Explore : "+GetGadgetText(0)+FileName$
                ;ListAMXFile(GetGadgetText(0)+FileName$)
            EndIf
        Until FileType = 0
    Else
        MessageRequester("Error","Erreur impossible d examiner le repertoire ou aucun fichier *.amx dans le repertoire : "+GetGadgetText(0),0)
        End
    EndIf
EndProcedure

If OpenWindow(0, 100, 200, 290, 200, #PB_Window_SystemMenu, "Listeur")
    If CreateGadgetList(WindowID())
        StringGadget  (0,  10, 10, 202, 24, "")
        SetGadgetText (0, "C:\")
        ButtonGadget  (1, 220, 10, 60 , 24, "List")
        EditorGadget(2, 10, 40, 270, 150)
    EndIf
    Repeat
        EventID = WaitWindowEvent()
        If EventID = #PB_EventGadget
            If EventGadgetID() = 1
                If Right(GetGadgetText(0), 1) <> "\"
                    SetGadgetText(0, GetGadgetText(0)+"\")
                EndIf
                ClearGadgetItemList(2)
                ListAMXFile(GetGadgetText(0))
            EndIf
        EndIf
    Until EventID = #PB_EventCloseWindow
EndIf
:D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

@Dobro
a l'endroit ou j'ai ecrit "LA" tu ecrit "if filetype"
et tu le compare a rien !!! est-ce normal ??
Oui.

Tu peux faire ça avec n'importe quelle variable.
Si elle est différente de 0, que la valeur soit positive ou négative, le test est vrai, sinon il est faux.
Le test ne renvoie pas la valeur de la variable, mais simplement son état.
Vide, la variable vaut 0
Non vide, la variable contient une valeur.

Code : Tout sélectionner

A= -1

If A
  Debug A
Else
  Debug "A est vide"
EndIf
pis t'a imbriqué " If FileType = 2 " dans "if filetype"
donc il faut que "if filetype" soit valable pour que " If FileType = 2 " soit testé !!
C'est exactement ça!

Si le premier test renvoi Vrai, donc si "If FileType" est différent de 0, alors on teste la valeur renvoyée par "FileType".
Si c'est 1, c'est un fichier, et si c'est 2, un répertoire.

Chris :)
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

@jblaise.cs
Je pensais que avec cette ligne le programme listerait les fichier des dossiers que examine directory trouve mais,... nan
Pour lister les fichiers qui sont contenus dans les dossiers trouvés, il faut utiliser la récursivité.

Il y a quelques exemples sur le forum. Teste le dernier code posté par Flype ici : http://purebasic.hmt-forum.com/viewtopic.php?t=679

Chris :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

Merci pour les infos Chris (tres interressant tout ça !!) :D

mais je continurai a tester les valeurs "if variable=1" :D

je trouve que c'est plus clair que "if variable" !!
et pis si je prend des mauvaises habitudes avec le pure
j'aurai peut etre des problems avec des futurs language !! :D
Avatar de l’utilisateur
Chris
Messages : 3731
Inscription : sam. 24/janv./2004 14:54
Contact :

Message par Chris »

mais je continurai a tester les valeurs "if variable=1"
Et si ta variable fait 2, ou -1 ???

L'interêt de cette syntaxe, c'est que tu peux executer un code en te basant sur l'état de la variable (vide ou non), et non sur son contenu.

Tu me diras que tu peux faire If variable <> 0, mais bon... Moi j'aime bien cette syntaxe.

Cela dit, les gouts et les couleurs...!

Chris :)
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

oui ...... on s'etait compris , je voulais ecrire " If variable <> 0"


:)
jblaise.cs
Messages : 30
Inscription : lun. 26/avr./2004 11:30
Localisation : V'dauban
Contact :

Message par jblaise.cs »

Merci :D
si j aurais chercher... dsole

si sa peu aider quelqu un :

Code : Tout sélectionner

Procedure ListAMXFiles(directory$, directoryid, dir)
  ExamineDirectory(directoryid, directory$, "*.*")
  dirid = NextDirectoryEntry()
  If dir = 0
    While dirid
      If dirid = 1
        file$ = DirectoryEntryName()
        If Right(file$, 4) <> ".amx"
          file$ = ";" + file$
        EndIf
        AddGadgetItem(2, -1, file$)
      ElseIf dirid = 2
        If Mid(DirectoryEntryName(), 1, 1) <> "."
          ListAMXFiles(directory$ + DirectoryEntryName(), directoryid + 1, 1)
          UseDirectory(directoryid)
        EndIf
      EndIf
      dirid = NextDirectoryEntry()
    Wend
  Else
    While dirid
      If dirid = 1
        file$ = directory$ + "\" + DirectoryEntryName()
        file$ = RemoveString(file$, GetGadgetText(0))
        AddGadgetItem(2, -1, file$)
      ElseIf dirid = 2
        If Mid(DirectoryEntryName(), 1, 1) <> "."
          ListAMXFiles(directory$ + DirectoryEntryName(), directoryid + 1, 1)
          UseDirectory(directoryid)
        EndIf
      EndIf
      dirid = NextDirectoryEntry()
    Wend
  EndIf
EndProcedure
If OpenWindow(0, 226, 196, 610, 339, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_TitleBar | #PB_Window_WindowCentered, "Listeur")
  If CreateGadgetList(WindowID())
    StringGadget(0, 5, 5, 555, 20, "C:\Sierra\Half-Life_old_version\cstrike\addons\amx\plugins\")
    ButtonGadget(1, 565, 5, 40, 20, "List")
    EditorGadget(2, 5, 30, 600, 305)
  EndIf
  Repeat
    EventID = WaitWindowEvent()
    If EventID = #PB_EventGadget
      If EventGadgetID() = 1
        If Right(GetGadgetText(0), 1) <> "\"
          SetGadgetText(0, GetGadgetText(0) + "\")
        EndIf
        ClearGadgetItemList(2)
        SetGadgetState(0, 0)
        ListAMXFiles(GetGadgetText(0), 0, 0)
        SetGadgetState(0, 1)
      EndIf
    EndIf
  Until EventID = #PB_EventCloseWindow
EndIf
Répondre