Page 1 sur 1
len
Publié : dim. 05/nov./2006 10:40
par jerexgrz
voici le code :
Code : Tout sélectionner
r.s = Len(nom_fichier)
; ---- Nom du fichier à rechercher (codage compris) ----
For Compte = 1 To len(nom_fichier)
tmp.s = Mid(nom_fichier,Compte,1)
crypter("lettre",tmp)
nom_crypt = nom_crypt + xs1
Next compte
Ca marchait en v4.00 ! j'ai remplacé le len(nom...) par r. Ca fonctionne toujours pas, car il faut maintenant que r soit du type numerique (1,2,3...) et que nom_fichier soit une chaine de caracteres (string) dans des guillemets ("nom_fichier")et non plus une variable.
Publié : dim. 05/nov./2006 11:26
par flaith
Comprend pas, len renvoi toujours un entier

pourquoi r
.s ?
Code : Tout sélectionner
nom_fichier.s = "file.txt" ;n'oublie pas le ".s"
r.l = Len(nom_fichier)
; ---- Nom du fichier à rechercher (codage compris) ----
For Compte = 1 To r ;Len(nom_fichier)
tmp.s = Mid(nom_fichier,Compte,1)
Debug tmp
; crypter("lettre",tmp)
; nom_crypt = nom_crypt + xs1
Next compte
Re: len
Publié : dim. 05/nov./2006 11:33
par Backup
.
car il faut maintenant que r soit du type numerique (1,2,3...) et que nom_fichier soit une chaine de caracteres (string) dans des guillemets ("nom_fichier")et non plus une variable.
non ! non dans aucun basic !!
len(chaine$) renvoi et a toujours renvoyé une Longueur en numerique de la chaine de caractere
a.b=len("michel") , a.b sera egale a 6 <-- le Chiffre 6
si tu veux en faire une lettre il faut faire a.s=str(len(chaine$))
apres tu aura dans a.s "6" et non plus 6
par contre en argument "chaine$" tu peux ecrire
soit :
longueur=len("michel")
debug longueur
soit :
chaine$="michel"
longueur=len(chaine$)

debug longueur
Publié : lun. 06/nov./2006 11:18
par jerexgrz
En faite, avant en 4.00, je passais en parametre directement len(nom_fichier) ce qui équivaut à un resultat comme michel => 6. C'est vrai, ce n'est pas rapide du tout (preference par 1 variable) mais le code est + propre. Car nom_fichier peut etre n'importe quel nom de <> tailles: wizard, monstre, balle, ...
Merci dobro, en v4.01 il faut que j'utilise le dollar à la fin de la variable. je n'ai pas fait attention dans l'aide.

Publié : mer. 08/nov./2006 18:17
par jerexgrz

Je ne comprends pas, y'a un truc bizarre !
Code : Tout sélectionner
t4.s
f.s
t4 = "test"
f = "ok"
zz.l = Len(t4$)
Debug t4
Debug f
Debug zz
Quand je met le dollar, j'ai un resultat faux ! Dans mon jeu, si je ne met pas ce dollar, le debuggeur me met une grosse erreur (bad parameter type : a string is expected!) !! pour nom_fichier alors que cette variable est declare dans le nom de la procedure (nom_fichier.s) ???
Publié : mer. 08/nov./2006 18:27
par brossden
Oui le resultat est fauxcar tu suppose que T4$ et T4.s sont identique ce qui ne l'est pas !
quand tu declares
T4.s > tu declare T4 comme chaine mais rien à voir avec T4$
la preuve !
essaye :
Publié : mer. 08/nov./2006 19:07
par Backup
brossdent voulait sûrement écrire

Publié : mer. 08/nov./2006 19:25
par jerexgrz
Code : Tout sélectionner
t4.s
f.s
Global zz.l
t4 = "test"
f = "ok"
Procedure ft (nom_fichier.s)
Global a.l
a = 10
Ymax.l
Tampon.s
;Analyse.s
;Analyse2.s
Global nom_Decrypt.s
zz = Len(nom_fichier)
EndProcedure
ft ("proute")
Debug t4
Debug f
Debug zz
Si on bidouille en commentaire : analyse1 et 2: on a une erreur surprenante asm ...
si on enleve les commentaires : ca marche pas ... ok c normal !
si on bricole global nom_ (que l'on met en commentaire): tout passe bien alors que : zz = len(nom_fichier$) avec la nouvelle syntaxe !!
au fait, quand on regarde l'aide sur 'mid', resultat est avec $.

=> il m'aime pas ou quoi ??? Ca y est, il a décidé de faire son bordel !
Publié : mer. 08/nov./2006 20:03
par Flype
bah ok, là tu as trouvé un bug dans le compilateur purebasic.
je l'ai isolé et me suis permis de publier le bug sur le forum officiel.
http://www.purebasic.fr/english/viewtopic.php?t=24522
donc ce bout de code plante :
Code : Tout sélectionner
dummy.s = "dummystring"
Procedure dummy(v.s)
Global u
EndProcedure
Debug dummy
mais çà n'arrive qu'avec quelques noms de variables.
fred va corrigé çà, à n'en pas douter

Publié : jeu. 09/nov./2006 13:54
par jerexgrz

c'est sympa flype !
Je n'étais pas sur du tout, j'ai eu des pbs quand j'ai installé la v4.01 !
Par contre :
Code : Tout sélectionner
Procedure ft (nom_fichier.s)
Analyse.s
Analyse2.s
;Global nom_Decrypt.s
zz = Len(nom_fichier$)
EndProcedure
ft ("proute")
Debug zz
le resultat de zz est faux car proute = 6 caracteres. Si on enleve le $ à zz = len (.... ), le resultat est devient juste !
Publié : jeu. 09/nov./2006 19:26
par Backup
jerexgrz a écrit :
c'est sympa flype !
Je n'étais pas sur du tout, j'ai eu des pbs quand j'ai installé la v4.01 !
Par contre :
Code : Tout sélectionner
Procedure ft (nom_fichier.s)
Analyse.s
Analyse2.s
;Global nom_Decrypt.s
zz = Len(nom_fichier$)
EndProcedure
ft ("proute")
Debug zz
le resultat de zz est faux car proute = 6 caracteres. Si on enleve le $ à zz = len (.... ), le resultat est devient juste !
Normal, comme on te l'a dit plus haut
"nom_fichier$" est DIFFERENT de "nom_fichier.s" !!
Purebasic considere cela comme 2 variables differentes !!
dans ton cas si tu retire le "$" a "nom_fichier$" c'est comme si tu demandais la longueur de "nom_fichier.s"
t'as meme pas essayé le code que j'avais posté !!
dans ce cas c'est T4$ qui est differents de T4.s
Publié : ven. 10/nov./2006 11:06
par jerexgrz

Si si, Dobro, j'ai essayé ton prog. En effet, ce sont 2 variables <> !!
Je voulais simplement mettre en evidence que PureBasic maintenant m'oblige de mettre le $ à chaque utilisation de string comme ici: zz.l = len(nom_fichier$) alors qu'avant zz.l =len(nom_fichier), ca fonctionnait.
Ca fait que: zz.l = len(nom_fichier) , PB s'arrete et me dit qu'il y a 1 erreur. Hors, juste au dessus, dans l'autre msg il n'y a pas d'erreur ! C'est pour ca que je ne comprends pas.
Code : Tout sélectionner
Procedure ft(nom_fichier.s)
Analyse.s
Analyse2.s
Global nom_Decrypt.s
ze.l = Len(nom_fichier)
Debug nom_fichier
EndProcedure
ft("bizarre")
Voila, code à recopier texto ! Ca ne marche pas !
Si on met en remarque dans la procedure : la ligne Global ... => ok c bon!
Pareil, on met cette fois ci: analyse et analyse2 en RQ => ok c bon!
PB dit qu'il faut 1 string!
Publié : ven. 10/nov./2006 13:01
par Backup
oui effectivement il faut ecrire soit
Len(nom_fichier.s)
soit
Len(nom_fichier$)
mais dans un sens c'est normal puisque l'argument de la commande
len() doit être une chaîne..
c'est vrai s qu'a l'heure actuel elle se comporte comme une "option explicit"
mais dans un sens tant mieux, cela évite d'avoir une ambiguïté sur le nom d'une variable
le fait d'avoir a ajouter "$" ou ".s" nous oblige a être sur qu'il s'agit bien d'une variable chaîne
perso , je prefere ..

Publié : sam. 11/nov./2006 15:50
par Flype
Flype a écrit :bah ok, là tu as trouvé un bug dans le compilateur purebasic.
je l'ai isolé et me suis permis de publier le bug sur le forum officiel.
http://www.purebasic.fr/english/viewtopic.php?t=24522
donc ce bout de code plante :
Code : Tout sélectionner
dummy.s = "dummystring"
Procedure dummy(v.s)
Global u
EndProcedure
Debug dummy
mais çà n'arrive qu'avec quelques noms de variables.
fred va corrigé çà, à n'en pas douter

voilà c'est corrigé pour la prochaine update
