Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Jeu : Le guillemet diabolique !!! | |
| | Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 10:59 | |
| Je vous propose un jeu très simple Qui arrivera à m'afficher "essai" (sans espace et avec les guillemets!) ? - Code:
-
' ' Le guillemet diabolique ;) ' Qui arrivera à m'afficher "essai" ' (avec les guillemets et sans espaces) '
DIM a$, guillemet$ : guillemet$=chr$(34)
a$=guillemet$+"essai"+guillemet$ ALPHA 1: TOP 1,20 : LEFT 1,20 : CAPTION 1,a$ FONT_NAME 1,"Courier New":FONT_SIZE 1,12:FONT_COLOR 1,255,255,0 : COLOR 1,0,0,0
a$=" "+guillemet$+"essai"+guillemet$ +" " ALPHA 2: TOP 2,40 : LEFT 2,20 : CAPTION 2,a$ FONT_NAME 2,"Courier New":FONT_SIZE 2,12:FONT_COLOR 2,255,255,0 : COLOR 2,0,0,0
a$=LTRIM$(a$) ALPHA 3: TOP 3,60 : LEFT 3,20 : CAPTION 3,a$ FONT_NAME 3,"Courier New":FONT_SIZE 3,12:FONT_COLOR 3,255,255,0 : COLOR 3,0,0,0
a$=" "+guillemet$+"essai"+guillemet$+" " a$=RTRIM$(a$) ALPHA 4: TOP 4,80 : LEFT 4,20 : CAPTION 4,a$ FONT_NAME 4,"Courier New":FONT_SIZE 4,12:FONT_COLOR 4,255,255,0 : COLOR 4,0,0,0
a$=RIGHT$(a$,len(a$)-1) ALPHA 5: TOP 5,100 : LEFT 5,20 : CAPTION 5,a$ FONT_NAME 5,"Courier New":FONT_SIZE 5,12:FONT_COLOR 5,255,255,0 : COLOR 5,0,0,0
a$=" "+guillemet$+"essai"+guillemet$+" " a$=MID$(a$,2,LEN(A$)-2) ALPHA 6: TOP 6,120 : LEFT 6,20 : CAPTION 6,a$ FONT_NAME 6,"Courier New":FONT_SIZE 6,12:FONT_COLOR 6,255,255,0 : COLOR 6,0,0,0 EDIT: Bug forum, Ajout des signes '+ ' qui ont mysterieusement disparus après validation | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 12:00 | |
| Voilà la solution: - Code:
-
' ' Le guillemet diabolique ;) ' Qui arrivera à m'afficher "essai" ' (avec les guillemets et sans espaces) '
DIM a$, guillemet$ : guillemet$=chr$(34)
a$=guillemet$+"essai"+guillemet$ ALPHA 1: TOP 1,20 : LEFT 1,20 : CAPTION 1,a$ FONT_NAME 1,"Courier New":FONT_SIZE 1,12:FONT_COLOR 1,255,255,0 : COLOR 1,0,0,0
a$=" "+guillemet$+"essai"+guillemet$ +" " ALPHA 2: TOP 2,40 : LEFT 2,20 : CAPTION 2,a$ FONT_NAME 2,"Courier New":FONT_SIZE 2,12:FONT_COLOR 2,255,255,0 : COLOR 2,0,0,0
a$=LTRIM$(a$) ALPHA 3: TOP 3,60 : LEFT 3,20 : CAPTION 3,a$ FONT_NAME 3,"Courier New":FONT_SIZE 3,12:FONT_COLOR 3,255,255,0 : COLOR 3,0,0,0
a$=" "+guillemet$+"essai"+guillemet$+" " a$=RTRIM$(a$) ALPHA 4: TOP 4,80 : LEFT 4,20 : CAPTION 4,a$ FONT_NAME 4,"Courier New":FONT_SIZE 4,12:FONT_COLOR 4,255,255,0 : COLOR 4,0,0,0
a$=RIGHT$(a$,len(a$)-1) ALPHA 5: TOP 5,100 : LEFT 5,20 : CAPTION 5,a$ FONT_NAME 5,"Courier New":FONT_SIZE 5,12:FONT_COLOR 5,255,255,0 : COLOR 5,0,0,0
a$=" "+guillemet$+"essai"+guillemet$+" " a$=MID$(a$,2,LEN(A$)-2) ALPHA 6: TOP 6,120 : LEFT 6,20 : CAPTION 6,a$ FONT_NAME 6,"Courier New":FONT_SIZE 6,12:FONT_COLOR 6,255,255,0 : COLOR 6,0,0,0
a$=chr$(34)+"essai"+chr$(34)+chr$(0) ALPHA 7: TOP 7,160 : LEFT 7,20 : CAPTION 7,a$ FONT_NAME 7,"Courier New":FONT_SIZE 7,12:FONT_COLOR 7,255,255,0 : COLOR 7,0,0,0
Explication: Panoramic "interprète" le contenu d'un string en l'affectant. S'il est entouré de guillemets, il les enlève en supposant que l'on voulait juste l'intérieur... Ceci explique pourquoi des espaces devant ou derrière permettent d'avoir les guillemets. Essaie ceci: - Code:
-
a$ = essai print a$
et tu verras que essai s'affiche alors qu'on n'a pas mis de guillemets au moment du chargement de la variable. Ceci rejoint d'ailleurs une (très) ancienne discussion sur un bug dans le forum, où Jack nous avait expliqué ce phénomène. Pour enfoncer le clou, essaie, dans ma solution, de remplacer - Code:
-
a$=chr$(34)+"essai"+chr$(34)+chr$(0)
par - Code:
-
a$=chr$(0)+chr$(34)+"essai"+chr$(34)
et RIEN ne s'affiche. Pourquoi ? parce que le caractère NUL est la marque de fin de string, et Panoramic stoppe à ce caractère. | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 12:35 | |
| Moi, je dis que Klaus commence fort pour un retour ^^ | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 13:06 | |
| Yesss ! Et Oui, c'est Klaus qui a gagné une tringle à rideaux !!! Je savais que l'on avait déjà discuté de ce sujet, mais je n'arrivais pas à le retrouver... Bon, la durée de vie de mon "super jeu" aura été bien courte ! | |
| | | Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 13:32 | |
| Tu avais un bon joueur en face ^^ | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 14:54 | |
| Et pour aller plus loin dans la compréhension de la gestion des constantes string de Panoramic, voici un petit exemple: - Code:
-
dim a$ a$ = essai1 print a$ a$ = "essai2" print a$ rem a$ = essai3+"test" rem print a$ rem print essai4 print "essai5" a$ = chr$(34)+"essai6"+chr$(34) print a$ a$ = chr$(34)+chr$(34)+"essai7"+chr$(34)+chr$(34) print a$
Les lignes 5 et 8 (inhibées par un REM) produisent une erreur de compilation si l'on enlève le REM. Donc: en affectation à une variable, une constante string est OPTIONNELLEMENT entourée de guillemets. Mais dès qu'il y a une expression, elle est OBLIGATOIREMENT entourée de guillemets. Dans tous les cas, les guillemets "entourants" sont éliminés, même s'ils sont nombreux (comme les crackers Belin... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 15:06 | |
| - Citation :
- Dans tous les cas, les guillemets "entourants" sont éliminés
Je suis d'accord avec toi, comme en C le caractère 0 indique une fin de chaine... bien que Delphi à une gestion bien particulière des chaines (c'est d'ailleurs un sacré merdier pour s'y retrouver !.. entre les AnsiString et autres joyeusetés) Je pense qu'il y a quand même quelque chose de pas clair dans la gestion des chaines de caractère et c'est d'ordre plus général... 1- More END_IF than IF : interprétation d'une chaine de caractère comme étant une commande... - Code:
-
dim a$:a$="if titi=1 then titi=2" if instr(a$,"then ")<> 0 message "ok" end_if
2- Not correct Logical Expression : Là on est dans les choux... - Code:
-
dim a$:a$="if titi=1 then titi=2" if instr(a$,"then ")<> 0 then message "ok" 3- Pour contourner le problème: - Code:
-
dim a$:a$="if titi=1 then titi=2" dim i : i = instr(a$, "then ") if i<> 0 then message "ok"
Dernière édition par Nardo26 le Ven 4 Nov 2011 - 17:36, édité 2 fois | |
| | | Invité Invité
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 15:13 | |
| Je crois que tu titi..lles beaucoup |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 17:31 | |
| J'aime bien "Titi" C'est que j'ose pas utiliser "toto"... Quoique j'ai vu que Jack à corrigé ce problème - Code:
-
For toto=1 to 3 ... next toto -> le "toto" était interprété avant comme étant : FOR TO TO=1 TO 3 | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Jeu : Le guillemet diabolique !!! Ven 4 Nov 2011 - 23:35 | |
| Il y a bien une ambiguïté dans l'interprétation des constantes de strings en Panoramic. Il y a un certain temps, on a eu toute une discussion sur les variables et commandes qu'on pouvait placer comme paramètres dans une commande DATA et qui étaient exécutées ou actualisées selon le contexte dynamique du programme. Je ne vais pas dérouler tout cela à nouveau. Mais je pense qu'il faut prendre cela comme des effets indésirables (le terme anglais side-effect serait plus approprié) et ne jamais baser un code sur de tels phénomènes qui pourraient fort bien changer ou disparaître dans une version future. | |
| | | Contenu sponsorisé
| Sujet: Re: Jeu : Le guillemet diabolique !!! | |
| |
| | | | Jeu : Le guillemet diabolique !!! | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |