bug ou non ? 5.42 LTS 32/64

Sujets variés concernant le développement en PureBasic
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

bug ou non ? 5.42 LTS 32/64

Message par Anonyme2 »

J'ai cherché un moment car je n'arrivais pas à obtenir le résultat que j'attendais sur des chaines (mauvais placement d'une parenthèse).

Je ne sais pas si le traitement des chaines a changé alors...

Voilà le code, je pense à bug

le code OK

Code : Tout sélectionner

Texte$ = LSet("", 31, "*")     

Debug Texte$

Texte1$ = Left(  Texte$, ((       Len(Texte$)-Len(" PUREBASIC ")       )/2)  +1  ) + " PUREBASIC "

Debug Texte1$
Dans le code qui suit c'est le même sauf que j'ai sorti le +1 des parenthèse mais ce 1 est pris comme une chaine.

Vous pouvez remplacer le 1 par 33 ou 170.1 le résultat est que ce nombre est considéré comme une chaine

Code : Tout sélectionner

Texte$ = LSet("", 31, "*")     

Debug Texte$

Texte1$ = Left(   Texte$, (   (   Len(Texte$)   -    Len(" PUREBASIC ")   )/2   )   ) + 170.1 + " PUREBASIC "

Debug Texte1$
Même chose avec

Code : Tout sélectionner

a$ = "36" + 1

Debug a$
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: bug ou non ? 5.42 LTS 32/64

Message par Ar-S »

Salut Denis,
Je ne pense pas que ce soit un bug.
Pour simplifier l'affichage des données et du coup pour éviter d'avoir à taper STR(valeur) ou Val("chaine") cette méthode est en place depuis un moment.

Tu demandes à PB d'afficher une chaine de caractères (Texte$), c'est ce qu'il fait.
Par contre si tu demandes un affichage d'une valeur (dans mon exemple, "d"), il affichera bien la somme de 20+20 dans la chaine.

Code : Tout sélectionner

a = 10
b.s = "chiffre = "

c.s = " suivant = "
d = 20 + 20

Debug b.s + a + c.s + d ; marche, il affiche une suite de données prés établies
Debug "chiffre =  " + 10 + " suivant = " + 20 + 20 ; ici il n'affiche que du string donc le calcule ne s’opèrera pas, on ne lui a pas demandé.
Debug "chiffre =  " + 10 + " suivant = " + Str(20 + 20) ; ici ça marche car mon lui demande un affichage de string d'une addition.



Dans ton exemple tu t'es effectivement trompé dans tes parenthèses.
Comme tu l'as vu comme ça ça fonctionne

Code : Tout sélectionner

Texte1$ = Left(   Texte$, (Len(Texte$)-Len(" PUREBASIC ")  /2) + 10) + " PUREBASIC "
~~~~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
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: bug ou non ? 5.42 LTS 32/64

Message par Marc56 »

J'ai découvert aussi ça (par hasard) il y a peu. (5.4x ?)

C'est très commode pour gagner du temps, mais que ça ne marche que si la sortie debug commence par une chaine

Code : Tout sélectionner

i = 1

Debug "a" + i      ; OK plus besoin de faire un transtypage:   Debug  "a" + Str(i)

Debug  i + "a"     ; KO: Message: « Impossible de combiner chaines de caractères et valeurs numériques. »

;  Il faut alors écrire de manière classique
Debug Str(i) + "a"

; Ou forcer la chaine
Debug "" + i + "a"
:wink:
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: bug ou non ? 5.42 LTS 32/64

Message par Anonyme2 »

Salut Ar-S,

ok je comprend pour l'affichage mais ca marche aussi avec le code que j'ai posté :

Code : Tout sélectionner

Texte$ = LSet("", 31, "*")     

Debug Texte$

Texte1$ = Left(  Texte$, ((       Len(Texte$)-Len(" PUREBASIC ")       )/2)  +1  ) + " PUREBASIC "

Debug Texte1$
ici c'est pas le debug le problème (affichage) mais c'est l'affectation de la chaine c'est-à-dire affecter une variable numérique à une chaine sans les "", mais peut-être que c'est normal.

Je n'avais pas trouvé dans la doc mais je viens de recommencer et j'ai trouvé ceci depuis la 5.10
Ajouté: Autocast les valeurs numériques lorsque des chaînes sont impliquées, ce qui permet de concaténer des chaînes et des nombres dans les constantes
Bon, je ne suis pas sur vu que j'ai du mal à comprendre la phrase mais bon ... :mrgreen:
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: bug ou non ? 5.42 LTS 32/64

Message par Ar-S »

Je ne pense toujours pas que ce soit un bug, vue que lorsque les parenthèses sont bien placée ça fonctionne. Mais je vois ce que tu veux dire, l'absence de guillemets prête à confusion.
Il faudrait voir ce que Fred pourrait dire sur ça.
~~~~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
Marc56
Messages : 2197
Inscription : sam. 08/févr./2014 15:19

Re: bug ou non ? 5.42 LTS 32/64

Message par Marc56 »

Je ne vois pas où est le problème, la syntaxe est correcte :?: (ou alors j'ai rien compris :? )
Mis à part que cet empilage de () c'est pour vouloir ressembler à du Lisp ? 8)

(Dixit Wikipedia: Cette utilisation des parenthèses donne lieu à des moqueries sur le nom de LISP : « Lots of Irritating and Silly Parentheses » (« Des tas de parenthèses irritantes et idiotes »), ou « Lots of Insipid and Stupid Parentheses » (« Des tas de parenthèses insipides et stupides »). :mrgreen:

PS. C'est vrai que Autocast, ce n'est ni un nom, ni un verbe français. Il y aurait peut être matière à voir si ça peut se remplacer (un jour) par autre chose de plus parlant ? (ceux qui n'ont jamais fait fait de C ne vont pas forcement comprendre)
Dernière modification par Marc56 le jeu. 03/mars/2016 14:24, modifié 1 fois.
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: bug ou non ? 5.42 LTS 32/64

Message par Anonyme2 »

Marc56 a écrit :Je ne vois pas où est le problème, la syntaxe est correcte :?: (ou alors j'ai rien compris :? )
Mis à part que cet empilage de () c'est pour vouloir ressembler à du Lisp ? :mrgreen:
Ce n'est que l'absence de guillemets qui me gène mais vu la phrase de la doc qui peut-être se rapporte à ça ... (mais je ne suis pas sur de comprendre).

Sinon l'exemple est un exemple type.
Mon code ou j'avais l'erreur est plus long et avec plus de parenthèses :mrgreen:

Dans de long codes, pour éviter les problèmes, je sépare les expressions par des parenthèses et ça me va bien :mrgreen: vu qu'elles sont faites pour ça :mrgreen:
Fred
Site Admin
Messages : 2808
Inscription : mer. 21/janv./2004 11:03

Re: bug ou non ? 5.42 LTS 32/64

Message par Fred »

PureBasic permet cette syntaxe depuis 2-3 versions de mémoire, pour caster automatiquement les nombres en chaines (et eviter trop de Str()).
Anonyme2
Messages : 3518
Inscription : jeu. 22/janv./2004 14:31
Localisation : Sourans

Re: bug ou non ? 5.42 LTS 32/64

Message par Anonyme2 »

Ok Fred.

Peut-être faudrait-il remettre la phrase de la doc de manière à ce qu'elle soit mieux comprise.
Répondre