len

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

len

Message 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.
Avatar de l’utilisateur
flaith
Messages : 1487
Inscription : jeu. 07/avr./2005 1:06
Localisation : Rennes
Contact :

Message par flaith »

Comprend pas, len renvoi toujours un entier 8O 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 
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Re: len

Message 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$) :D
debug longueur
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message 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. :wink:
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

:evil: 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) ???
brossden
Messages : 833
Inscription : lun. 26/janv./2004 14:37

Message 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 :

Code : Tout sélectionner


T4$ ="Chaine "
T4.l = 10*10

Debug T4$
Debug T4

 
Denis

Bonne Jounée à tous
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

brossdent voulait sûrement écrire

Code : Tout sélectionner

T4$ ="Chaine "
T4.s = "autre chaine"

Debug T4$
Debug T4 
:D
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message 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 $.

:evil: => il m'aime pas ou quoi ??? Ca y est, il a décidé de faire son bordel !
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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 :wink:
Image
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

:wink: 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 !
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

jerexgrz a écrit ::wink: 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é !!

Code : Tout sélectionner

T4$ ="Chaine "
T4.s = "autre chaine"

Debug T4$
Debug T4 
dans ce cas c'est T4$ qui est differents de T4.s
jerexgrz
Messages : 279
Inscription : dim. 05/juin/2005 20:27

Message par jerexgrz »

:P 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!
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message 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"
:D

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 :D

perso , je prefere .. :D
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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 :wink:
voilà c'est corrigé pour la prochaine update :)
Image
Répondre