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
» PanExpress : l'éditeur Panoramic avec création d'objet
par Jean Claude Aujourd'hui à 11:55

» Projet de planétarium virtuel.
par Pedro Alvarez Hier à 17:29

» Quantité de mémoire utilisée par un exe
par Navigateur Hier à 14:52

» Problème avec 'file_load'.
par Pedro Alvarez Hier à 8:12

» Version instantanée V 0.9.28i20 du 13/06/2018
par jjn4 Sam 16 Juin 2018 - 14:25

» string$(0,chr$(32)) sans erreur
par silverman Ven 15 Juin 2018 - 19:56

» Version instantanée V 0.9.28i19 du 13/06/2018
par Minibug Ven 15 Juin 2018 - 19:14

» Mes souhaits d'amélioration de Panoramic.
par Pedro Alvarez Jeu 14 Juin 2018 - 20:17

» [RÉSOLU] Message d'erreur impossible à indentifier
par Minibug Mer 13 Juin 2018 - 20:52

» Cadre pour image
par Jean Claude Mar 12 Juin 2018 - 16:31

» Créateur d'objets Panoramic
par Minibug Mar 12 Juin 2018 - 14:02

» Planétarium gratuit.
par Jean Claude Sam 9 Juin 2018 - 18:50

» Comment afficher une image sans fond.
par JL35 Sam 9 Juin 2018 - 14:16

» image_width(n) et image_height(n)
par silverman Sam 9 Juin 2018 - 11:22

» Site sur la programmation sympa
par Jean Claude Jeu 7 Juin 2018 - 11:20

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juin 2018
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier

Partagez | 
 

 Jeu : Le guillemet diabolique !!!

Aller en bas 
AuteurMessage
Nardo26

avatar

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

MessageSujet: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 10: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 : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Jicehel

avatar

Nombre de messages : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 12: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 : 50
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 13: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 : 5923
Age : 45
Localisation : 77500
Date d'inscription : 18/04/2011

MessageSujet: Re: Jeu : Le guillemet diabolique !!!   Ven 4 Nov 2011 - 13: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 : 11088
Age : 69
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: 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...
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 : 50
Localisation : Valence
Date d'inscription : 02/07/2010

MessageSujet: 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
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 - 15:13

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

avatar

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

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

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

avatar

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

MessageSujet: 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.
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 !!!
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: