Purebasic fait de la magie !!

Sujets variés concernant le développement en PureBasic
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Purebasic fait de la magie !!

Message par Backup »

c'est le seul langage que je connais qui soit capable de dire que
"toto" est different de "toto" !! :lol:

regardez bien cette video :

et plus particulierement se qui se passe avec la ligne :

Code : Tout sélectionner

If tutu$=tutu2$ And Len(tutu$)>1
j'attends que les 2 variables soient egale a "endif"
je trace et ... ça saute au Else !! :lol:

cherchez l'erreur ! 8O
pas trop fiable le purebasic :lol:

http://youtu.be/AJnxBr6BJ3s

le probleme c'est que je n'arrive pas a reproduire ce soucis en dehors de mon prg ...

mais que ça m' handicape pour EPB ( c'est dans la procedure de tabulation des codes de EPB )

pareil si j'utilise :

Code : Tout sélectionner

If tutu$=tutu2$ 
!!! 8O de mieux en mieux
lepiaf31
Messages : 510
Inscription : dim. 25/mars/2007 13:44
Localisation : Toulouse, France
Contact :

Re: Purebasic fait de la magie !!

Message par lepiaf31 »

Essayes de faire:
debug Len(tutu$)
debug Len(tutu2$)

parfois, il y a des caractères non-imprimables qui se cachent (du genre des retours à la ligne ou des trucs comme ca). Avec le Len() tu verras la taille "réelle" de la chaine et les caractères invisibles tu trouveras .
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Purebasic fait de la magie !!

Message par Backup »

OUI ! tu as raison

j'ai 6 caractere et 5 caracteres !!
mince ça n'apparait pas dans le debugger 8O

tutu$=6
tutu2$=5
un chr(13) qui trainait !

j'hallucine ! :roll: :lol: tout ce temps perdu a chercher

je pensai que la debugger aurai affiché "endif █" et pas "endif"

ce serai pas mal que le debugger affiche meme de façon symbolisé les caractères inf chr(32)... :)
Avatar de l’utilisateur
Ulix
Messages : 315
Inscription : ven. 04/juin/2004 14:27
Localisation : Frontignan

Re: Purebasic fait de la magie !!

Message par Ulix »

Boujour a tous !


ce serai pas mal que le debugger affiche meme de façon symbolisé les caractères inf chr(32)
C'est beeinnn.. Vrai !

+ 1 :lol:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Purebasic fait de la magie !!

Message par Ar-S »

Perdre du temps a rechercher ce genre d'erreur est effectivement rageant ^^
pour éviter ce genre de bourde, tu peux faire une petite procédure debug affichant le String$ entre crochets et/ou en affichant la taille.

Code : Tout sélectionner

Procedure.b DebugPlus(string$) ; Ar-S
  LString$ = Str(Len(string$)) + " cars."
  string$ = "[" + string$ + "] " + LString$ 
  Debug string$
  If LString$ <>""
    ProcedureReturn 0
  Else
    ProcedureReturn 1
  EndIf
EndProcedure
  
tutu$ = "toutou"+Chr(13)
tata$ = "toutou"

DebugPlus(tutu$)
DebugPlus(tata$)
edit :
ce serai pas mal que le debugger affiche meme de façon symbolisé les caractères inf chr(32)
Dans le débug, j'ai tous ces caractères qui sont invisibles :
; 0,1,9,10,13,28 à 32,129,141,143,144,157,160

Pas seulement les inférieurs à chr(32)
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Purebasic fait de la magie !!

Message par dayvid »

Salut :)

Je suis d'accord avec vous que se serais bien que le debuger affiche les caractères invissible :wink:
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Purebasic fait de la magie !!

Message par Backup »

Ar-S a écrit :Pas seulement les inférieurs à chr(32)

oui bien sur :)
j'aurai préféré que le debugger affiche de cette façon

Code : Tout sélectionner


Procedure.s DebugPlus(string$) 
; Dobro
;129,141,143,144,157,160	
	for i=0 to 31
		string$=  ReplaceString(string$, chr(i), chr($2A))
	next i
	string$=  ReplaceString(string$, chr(129), chr($2A))
	string$=  ReplaceString(string$, chr(141), chr($2A))
	string$=  ReplaceString(string$, chr(143), chr($2A))
	string$=  ReplaceString(string$, chr(144), chr($2A))
	string$=  ReplaceString(string$, chr(157), chr($2A))
	string$=  ReplaceString(string$, chr(160), chr($2A))
ProcedureReturn string$
EndProcedure

tutu$ = "toutou"+Chr(13)
tata$ = "toutou"

debug DebugPlus(tutu$)
debug DebugPlus(tata$)
dayvid
Messages : 1242
Inscription : mer. 11/nov./2009 18:17
Localisation : Poitiers (Vienne)

Re: Purebasic fait de la magie !!

Message par dayvid »

Qu'est-ce que tu pense de ça ?:

Code : Tout sélectionner

Procedure.s ReplaceInvisibleCharacter(String$)
  
  For Position = 1 To Len(String$)
    Character$ = Mid(String$, Position, 1)
    
    Select Character$
        
      Case Chr(0)
        StringRetour$ + "+ NUL Chr(0) + "
      Case Chr(1)
        StringRetour$ + "+ SOH Chr(1) + "
      Case Chr(2)
        StringRetour$ + "+ STX Chr(2) + "
      Case Chr(3)
        StringRetour$ + "+ ETX Chr(3) + "
      Case Chr(4)
        StringRetour$ + "+ EOT Chr(4) + "
      Case Chr(5)
        StringRetour$ + "+ ENQ Chr(5) + "
      Case Chr(6)
        StringRetour$ + "+ ACK Chr(6) + "
      Case Chr(7)
        StringRetour$ + "+ BEL Chr(7) + "
      Case Chr(8)
        StringRetour$ + "+ BS Chr(8) + "
      Case Chr(9)
        StringRetour$ + "+ HT Chr(9) + "
      Case Chr(10)
        StringRetour$ + "+ LF Chr(10) + "
      Case Chr(11)
        StringRetour$ + "+ VT Chr(11) + "
      Case Chr(12)
        StringRetour$ + "+ FF Chr(12) + "
      Case Chr(13)
        StringRetour$ + "+ CR Chr(13) + "
      Case Chr(14)
        StringRetour$ + "+ SO Chr(14) + "
      Case Chr(15)
        StringRetour$ + "+ SI Chr(15) + "
      Case Chr(16)
        StringRetour$ + "+ DLE Chr(16) + "
      Case Chr(17)
        StringRetour$ + "+ DC1 Chr(17) + "
      Case Chr(18)
        StringRetour$ + "+ DC2 Chr(18) + "
      Case Chr(19)
        StringRetour$ + "+ DC3 Chr(19) + "
      Case Chr(20)
        StringRetour$ + "+ DC4 Chr(20) + "
      Case Chr(21)
        StringRetour$ + "+ NAK Chr(21) + "
      Case Chr(22)
        StringRetour$ + "+ SYN Chr(22) + "
      Case Chr(23)
        StringRetour$ + "+ ETB Chr(23) + "
      Case Chr(24)
        StringRetour$ + "+ CAN Chr(24) + "
      Case Chr(25)
        StringRetour$ + "+ EM Chr(25) + "
      Case Chr(26)
        StringRetour$ + "+ SUB Chr(26) + "
      Case Chr(27)
        StringRetour$ + "+ ESC Chr(27) + "
      Case Chr(28)
        StringRetour$ + "+ FS Chr(28) + "
      Case Chr(29)
        StringRetour$ + "+ GS Chr(29) + "
      Case Chr(30)
        StringRetour$ + "+ RS Chr(30) + "
      Case Chr(31)
        StringRetour$ + "+ US Chr(31) + "
      Case Chr(32)
      StringRetour$ + "+ Space Chr(30) + "
      Case Chr(129)
        StringRetour$ + "+ Chr(129) + "
      Case Chr(141)
        StringRetour$ + "+ Chr(141) + "
      Case Chr(143)
        StringRetour$ + "+ Chr(143) + "
      Case Chr(144)
        StringRetour$ + "+ Chr(144) + "
      Case Chr(157)
        StringRetour$ + "+ Chr(157) + "
      Case Chr(160)
        StringRetour$ + "+ Chr(160) + "
      Default
        StringRetour$ + Character$
    EndSelect
    
  Next
  
  StringRetour$ = ReplaceString(StringRetour$, "+ + ", "+ ")
  If Mid(StringRetour$, 1, 2) = "+ "
    StringRetour$ = Mid(StringRetour$, 3)
  EndIf
  
  ProcedureReturn StringRetour$
EndProcedure

For i = 0 To 255
    a$ + Chr(i)
Next

Debug ReplaceInvisibleCharacter(a$)

Et pourquoi le Null n'apparais pas dans la chaine (chr(0)) :?:
Je sais qu'il est réserver pour la fin de la chaine mais pourquoi n'apparais t-il pas ? :?
La vie, C'est comme, Une boitte, De startis, On en voie, De toutes, Les couleurs !

Mon forum http://purebasic.forumphp3.com/index.php
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: Purebasic fait de la magie !!

Message par Backup »

dayvid a écrit :Qu'est-ce que tu pense de ça ?:

Et pourquoi le Null n'apparais pas dans la chaine (chr(0)) :?:
Je sais qu'il est réserver pour la fin de la chaine mais pourquoi n'apparais t-il pas ? :?
parce que ta boucle
est :

Code : Tout sélectionner

To Len(String$)
ce qui veux dire qu'elle va de 1 a la longueur de String$
deja lorsque tu entre dans ta procedure sa longueur est de 0 ! .. donc il ne fait meme pas la boucle
mais meme si tu ajoute a$="a"+chr(0)

chr(0) ne fait pas partie de ta variable, elle est considéré comme une fin de chaine
et Len() ne comptabilise pas le caractere de fin de chaine
Répondre