Bug incompréhensible

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
popo9120
Messages : 10
Inscription : ven. 17/févr./2012 22:46

Bug incompréhensible

Message par popo9120 »

Bonjour à tous

Voilà je tombe sur un bug totalement incompréhensible !

En gros quand je définie mes variables et que j'appelle mes fonctions directement ça marche parfaitement, par contre quand je récupére le contenu de mon Editor gadget qui contient la même chose, ça ne marche pas !

Voici le code :

Code : Tout sélectionner

patch$ = "Quelque chose"
structureFile$ = "index.html"+Chr(10)+"css/"+Chr(10)+"/style.css"+Chr(10)+"js/"+Chr(10)+"/script.js"+Chr(10)+"img/"

Procedure create(patch$, structureFile$)

  If(patch$ <> "" And structureFile$ <> "")
    ;Dim fichierACreer$(5)
    ;fichierACreer$(0) = "index.html"
    ;
    ;Debug fichierACreer$(0)
    
    nbrFichiersACreer = CountString(structureFile$,Chr(10))
    
    Dim fichierACreer.s(nbrFichiersACreer +1)
    
    For k=1 To nbrFichiersACreer + 1
       fichierACreer.s(k-1) = StringField(structureFile$, k, Chr(10))
    Next
     
    For k=0 To nbrFichiersACreer
      
      currentLine$ = fichierACreer.s(k)
      If (Right(currentLine$, 1) = "/")
        Debug Left(currentLine$, Len(currentLine$) - 1)   
      EndIf 
      
    Next
    
  EndIf
  
EndProcedure

create(patch$, structureFile$)
Le bug est que si mon Editor Gadget contient la même chose que ma variable structureFiles il va me retourner uniquement le dernier dossier nommé img/
alors que avec le code ci-dessus il me retourne css/ js/ et img/

Bref je sais pas si vous comprenez mais c'est très étrange.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Bug incompréhensible

Message par G-Rom »

La prochaine fois , donne un code qui reproduit "le bug" :wink:

Code : Tout sélectionner

Declare  create(patch$, structureFile$)

patch$ = "Quelque chose"
structureFile$ = "index.html"+Chr(10)+"css/"+Chr(10)+"/style.css"+Chr(10)+"js/"+Chr(10)+"/script.js"+Chr(10)+"img/"

wnd    = OpenWindow(#PB_Any,0,0,640,480,"")
editor = EditorGadget(#PB_Any,0,0,640,400)
button = ButtonGadget(#PB_Any,0,410,640,60,"C L I C K   M E")

SetGadgetText(editor, structureFile$)

Repeat
  event = WindowEvent()
  
  If event = #PB_Event_Gadget
    gadget = EventGadget()
    If gadget = button
      create(patch$, GetGadgetText(editor))
    EndIf 
  EndIf

Until event = #PB_Event_CloseWindow
End


Procedure create(patch$, structureFile$)

  If(patch$ <> "" And structureFile$ <> "")
    ;Dim fichierACreer$(5)
    ;fichierACreer$(0) = "index.html"
    ;
    ;Debug fichierACreer$(0)
   
    nbrFichiersACreer = CountString(structureFile$,Chr(10))
   
    Dim fichierACreer.s(nbrFichiersACreer +1)
   
    For k= 1 To nbrFichiersACreer + 1
      fichierACreer.s(k-1) = StringField(structureFile$, k, Chr(10))
    Next
     
    For k=0 To nbrFichiersACreer
     
      currentLine$ = fichierACreer.s(k)
      If (Right(currentLine$, 1) = "/")
        Debug Left(currentLine$, Len(currentLine$) - 1)   
      EndIf
     
    Next
   
  EndIf
 
EndProcedure
popo9120
Messages : 10
Inscription : ven. 17/févr./2012 22:46

Re: Bug incompréhensible

Message par popo9120 »

Ah oui autant pour moi je pensais que seul la partie intéressante du code devait être affiché >< . Ton exemple bug on est d'accords ? C'est incompréhensible ....
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Bug incompréhensible

Message par Backup »

en quoi ça bug ?

réponse clair et net svp ...

parce que :
En gros quand je définie mes variables et que j'appelle mes fonctions directement ça marche parfaitement, par contre quand je récupére le contenu de mon Editor gadget qui contient la même chose, ça ne marche pas !
ben .. perso je ne comprends rien a ce que tu ecris là :roll:

tu parle de fonctions ... qu'elle fonction ?
tu parle de définir tes variables .... qu'entends tu par là ? qu'elle numero de ligne ?
tu parle de récupération dans un éditeur ... ton code n'en contient pas ..

G-rom a fait un editeur ... bon , mais en quoi sont code bug ??
l'éditeur affiche ce qu'on lui demande , je vois pas de bug 8O


lorsque vous rédigez un message pour signaler un probleme dans votre code
dites vous qu'on est pas a votre place , on ne connais pas le contexte dans lequel le code est exécuté

donc une explication clair et détaillé est la moindre des choses , sinon , les réponses seront aussi "débile" que la question ;)
popo9120
Messages : 10
Inscription : ven. 17/févr./2012 22:46

Re: Bug incompréhensible

Message par popo9120 »

Dobro a écrit :en quoi ça bug ?

réponse clair et net svp ...

parce que :
En gros quand je définie mes variables et que j'appelle mes fonctions directement ça marche parfaitement, par contre quand je récupére le contenu de mon Editor gadget qui contient la même chose, ça ne marche pas !
ben .. perso je ne comprends rien a ce que tu ecris là :roll:

tu parle de fonctions ... qu'elle fonction ?
tu parle de définir tes variables .... qu'entends tu par là ? qu'elle numero de ligne ?
tu parle de récupération dans un éditeur ... ton code n'en contient pas ..

G-rom a fait un editeur ... bon , mais en quoi sont code bug ??
l'éditeur affiche ce qu'on lui demande , je vois pas de bug 8O


lorsque vous rédigez un message pour signaler un probleme dans votre code
dites vous qu'on est pas a votre place , on ne connais pas le contexte dans lequel le code est exécuté

donc une explication clair et détaillé est la moindre des choses , sinon , les réponses seront aussi "débile" que la question ;)
Ok désolé, en gros prend le code de G-rom et compile le. Normalement il devrait afficher dans le débug toutes les lignes se terminant par un "/". Or ici il affiche que la dernière ligne terminant par un "/"
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Bug incompréhensible

Message par G-Rom »

il devrait afficher dans le débug toutes les lignes se terminant par un "/". Or ici il affiche que la dernière ligne terminant par un "/"
c'est pas clair , ici , ca affiche les dossier comme c'est demandé...
si c'est le fait qui manque / à la fin qui te défrisse , bah vire le " Debug Left(currentLine$, Len(currentLine$) - 1) " et remplace par currentLine$
popo9120
Messages : 10
Inscription : ven. 17/févr./2012 22:46

Re: Bug incompréhensible

Message par popo9120 »

G-Rom a écrit :
il devrait afficher dans le débug toutes les lignes se terminant par un "/". Or ici il affiche que la dernière ligne terminant par un "/"
c'est pas clair , ici , ca affiche les dossier comme c'est demandé...
si c'est le fait qui manque / à la fin qui te défrisse , bah vire le " Debug Left(currentLine$, Len(currentLine$) - 1) " et remplace par currentLine$
En fait après multiple test j'ai remarque que pour la derniére ligne le dernier carractére était "/" mais pour les autre c'était un retour à la ligne ou un truc comme ça. En gros histoire de schématiser voici ce que je veux faire :

Regarde ce que contient l'éditor gadget, découpe chaque ligne et place les dans un tableau, si un ligne termine par un slash alors c'est un dossier, sinon si une commence par un slash c'est un fichier.

En fouillant la doc j'ai trouve la fonction Asc qui permet de renvoyer la valeur ASCII de caractére, et en fait le dernier caractére n'est pas un caractére de fin de chaine ( Chr(10) ) mais un retour chariot ( Chr(13) ) du coup j'ai modifié ma condition comme ceci :

Code : Tout sélectionner

If(Right(currentLine$,2) = "/"+Chr(13) Or Right(currentLine$,1) = "/")
        Debug currentLine$
EndIf 
Et maintenant il m'affiche bien ce qu'il faut :)
Dernière modification par popo9120 le sam. 18/févr./2012 11:54, modifié 1 fois.
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: Bug incompréhensible

Message par G-Rom »

j'avais compris , c'est quoi le problème ? tu n'arrives pas à différencier les 2 dans le code ?
popo9120
Messages : 10
Inscription : ven. 17/févr./2012 22:46

Re: Bug incompréhensible

Message par popo9120 »

Regarde au dessus ;)

Je viens même en fait d'utiliser la fonction Rtrim qui me permet de supprimer le caractère Chr(13) et d'avoir une condition plus correct. Merci pour votre aide les gars :)
Répondre