FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mah-Jong américain
par Jean Claude Hier à 19:37

» StratégoV8 et V9
par Jean Claude Hier à 13:18

» Problème avec Deepl
par Klaus Hier à 0:34

» Déformation d'image en trapèze
par Klaus Dim 14 Jan 2018 - 16:22

» Quelques nouvelles ...
par Jean Claude Ven 12 Jan 2018 - 22:40

» Renommer les instructions ITEM_... ?
par Jicehel Ven 12 Jan 2018 - 18:56

» Ludothèque Panoramic
par jjn4 Ven 12 Jan 2018 - 18:11

» sous-programmes et fonctions
par Jack Ven 12 Jan 2018 - 17:51

» KGF_dll - nouvelles versions
par Minibug Ven 12 Jan 2018 - 0:21

» Mah-Jong français
par Jean Claude Jeu 11 Jan 2018 - 22:15

» HVIEWER
par Klaus Mer 10 Jan 2018 - 2:06

» panoramic 0.9.28
par gigi75 Ven 5 Jan 2018 - 14:06

» Un jeu qui va vous énerver!
par Jean Claude Jeu 4 Jan 2018 - 22:05

» Bonne fêtes de fin d'année ! Meilleurs Vœux 2018 !
par Jicehel Jeu 4 Jan 2018 - 17:28

» Mah-Jong international
par jjn4 Jeu 4 Jan 2018 - 16:55

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Janvier 2018
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
293031    
CalendrierCalendrier

Partagez | 
 

 Jeu : Le guillemet diabolique !!!

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 12:59

Je vous propose un jeu très simple Wink

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

Very Happy
EDIT: Bug forum, Ajout des signes '+ ' qui ont mysterieusement disparus après validation
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus

avatar

Nombre de messages : 10411
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 14: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5871
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 14:35

Moi, je dis que Klaus commence fort pour un retour ^^ Smile
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 15:06

Yesss !
Et Oui, c'est Klaus qui a gagné une tringle à rideaux !!! Laughing

Je savais que l'on avait déjà discuté de ce sujet, mais je n'arrivais pas à le retrouver...
scratch
Bon, la durée de vie de mon "super jeu" aura été bien courte !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Jicehel

avatar

Nombre de messages : 5871
Age : 45
Localisation : 77500
Date d'inscription : 19/04/2011

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 15:32

Tu avais un bon joueur en face ^^
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10411
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 16: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 17: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 - 19:36, édité 2 fois
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Invité
Invité



MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 17:13

Je crois que tu titi..lles beaucoup Very Happy
Revenir en haut Aller en bas
Nardo26

avatar

Nombre de messages : 2294
Age : 49
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 19: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

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://nardo26.lescigales.org
Klaus

avatar

Nombre de messages : 10411
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Sam 5 Nov 2011 - 1: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé




MessageSujet: Re: Jeu : Le guillemet diabolique !!!   

Revenir en haut Aller en bas
 
Jeu : Le guillemet diabolique !!!
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Jeu : Le guillemet diabolique !!!
» afficher les guillemets d'une chaine.
» POI avec ou sans "Guillemets"

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Les jeux faits avec Panoramic-
Sauter vers: