| pb d'affichage de quote dans une chaine | |
|
|
Auteur | Message |
---|
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 6:23 | |
| Bonjour, Je découvre Panoramic et je trouve sympa ce langage qui permet de faire en quelques lignes des petits utilitaires! Bravo! Je suis en train d'en faire un qui me permet de modifier la base de données des Radars sur mon GPS. Il génère un fichier xml à partir d'un fichier Csv. Le plus simple c'est de vous montrer ces quelques lignes. Cela résume bien le problème que je rencontre... (surtout quand on veut faire du xml !) - Code:
-
dim a$
a$="coucou" print a$
a$=chr$(34)+a$ print a$
rem là ça bug un peu non ? a$=a$+chr$(34) print a$
rem la ligne en dessous est correcte : a$="<?xml version="+chr$(34)+"1.0"+chr$(34)+" encoding="+chr$(34)+"UTF-8"+chr$(34)+" standalone="+chr$(34)+"no"+chr$(34)+" ?>" print a$
Bizarre non ? PS, question subsidiaire : Il y a t-il un moyen d'ajouter une quote " dans une chaine de caractère sans passer par CHR$ ? | |
|
| |
Invité Invité
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 9:26 | |
| Bonjour et bien venu Nardo26. Je pense que les autres "Panoramiciens" sauront fêter ton arrivé. En ce qui concerne ton problème, effectivement il y a une chose qui ne me convient pas. Il faudrait savoir si c'est pour faire du traitement ou pour afficher. Parce que si c'est pour faire du traitement de chaine de caractères, il y a possibilité de remplacer un caractère par un autre pour faire le codage, et ensuite faire le traitement de modification. Je ne sais pas quel caractère de remplacement tu peux prendre. Par exemple dans ta chaine il n'y a pas le simple cote: ' , et je l'ai utilisé ici pour voir - Code:
-
dim a$ ,i% ,b$ memo 1:full_space 1:font_size 1,12:print_target_is 1
rem la ligne en dessous est correcte : a$="<?xml version="+chr$(34)+"1.0"+chr$(34)+" encoding="+chr$(34)+"UTF-8"+chr$(34)+" standalone="+chr$(34)+"no"+chr$(34)+" ?>" print a$ print " _____" a$="<?xml version='1.0' encoding='UTF-8' standalone='no' ?>" i%=0 : b$=a$ :a$="" repeat i%=instr(b$,"'") if i%>0 then a$=a$+left$(b$,i%-1)+chr$(34):b$=right$(b$,len(b$)-i%) print a$,"|b$=", b$ if scancode=27 then exit_repeat until i%=0 a$=a$+b$ print :print "résultat final": print a$ A toi de voir si cette solution, ou une solution approchante peut convenir. @+ |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 9:54 | |
| Bienvenu Nardo26,
Je ne vois pas bug dans ton code. PANORAMIC affiche à chaque fois ce que tu lui demandes
a$=chr$(34)+a$ est bien "coucou
si tu ajoutes a$=a$+chr$(34) cela fait bien "coucou" et vu qu'il y a des "" de chaque coté de coucou cela équivaut à a$="coucou"
A+ | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 10:08 | |
| Bonjour et merci pour ta réponse!
Pour répondre à ta question : c'est bien pour faire du traitement. En réalité j'utilise la commande file_writeln qui elle ne pose pas de soucis. Quand à la commande print, c'est pour vérifier que tout ce passe bien dans le traitement de mes chaines. En clair c'est de l'affichage de debug car je trouve cela plus pratique que d'ouvrir à chaque fois mon fichier xml généré.
En fait, c'est juste une remarque en passant, je trouve étonnant que dans le cas où :
a$=chr$(34)+"coucou"+chr$(34)
le print m'affiche coucou et non pas "coucou"
voila, voila...
Merci d'avoir pris le temps de faire un bout de code pour répondre à mon post!
| |
|
| |
Invité Invité
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 10:25 | |
| Je suis d'accord avec Nardo26, l'affichage ne se fait pas correctement. Le caractère double cote ne s'affiche pas tout le temps, selon la position, ors le memo est là pour afficher.
Quant au problème, est-ce que la solution de remplacement convient? Il peut se faire dans les deux sens, lire le fichier, modifier temporairement chr$(34) (qui à la question subsidiaire: par exemple: s$=chr$(34), et s$ est plus simple à écrire) , puis après modification, reconvertir dans l'autre sens avant d'enregistrer. |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 10:34 | |
| Salut et bienvenu à toir, Nardo26 ! Pour ton problème de print, la solution est la suivante: print chr$(34)+chr$(34)+"coucou"+chr$(34)+chr$(34)Pourquoi: Print imprime des strings (je sais que je ne t'apprends rien). Les strings sont délimités par des guillemets (là encore, c'est banal). Or, il se trouve que lorsque Panoramic rencontre un string entouré de guillemets DANS LE TEXTE, il suppose à l'évidence que ces guillemets sont des délimiteurs et les élimine. D'où la nécessité de les doubler. Je pense qu'il s'agit là d'un bug dans Panoramic, à moins que quelque chose dans la doc m'ait échappé. Regarde le programme de démo suivant, qui met bien le problème en évidence. Comme tu vois, c'est général et pas limité au print: - Code:
-
print print print "coucou 1" print chr$(34)+"coucou 2"+chr$(34) print chr$(34)+chr$(34)+"coucou 3"+chr$(34)+chr$(34) edit 1 top 1,100 left 1,10 text 1,"coucou 1" edit 2 top 2,130 left 2,10 text 2,chr$(34)+"coucou 2"+chr$(34) edit 3 top 3,160 left 3,10 text 3,chr$(34)+chr$(34)+"coucou 3"+chr$(34)+chr$(34) end
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 12:09 | |
| Bonjour Klaus, Le fait d'avoir déclarer la variable comme une chaine de caractère (dim a$) devrait suffire. non? Qu'au niveau syntaxique; lors de l'affectation "brute", l'utilisation de guillemet a$="toto" cela me parait judicieux... mais qu'il interprète les chr$(34) (qui somme toute, sont des caractères comme les autres)... cela ne me parait pas normal. Bref, je crois que je vais utiliser des simples quotes (') heu... cela ne va pas être interprété comme étant un commentaire ? (je plaisante!) | |
|
| |
Invité Invité
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 12:15 | |
| Salut Klaus Je pense aussi qu'il s'agit de PRINT, j'y ai pensé en travaillant, et j'étais venu pour en parler lorsque je vois ton poste. Je n'essaye pas ton programme, c'est vrai. Le MEMO lui ne fait l'objet d'aucune sorte de contrôle de caractère, il n'affiche aucun style, tu lui mets un guillemet, il l'affiche.
Je dis qu'il y a un bog avec l'instruction PRINT. Tous les autres basics que j'ai utilisé ne font pas cette distinction. On lui dis qu'il dois afficher tel caractère, si il ne pas d'un caractère de contrôle (et ' " ' n'est pas un caractère de contrôle - en tout cas pas dans ce cas présent puisque les styles ne sont pas affichés), et en basic, cela s'affiche. A moins que Jack est une raison évidente de le faire (que je ne vois pas), ou alors qu'on considère que Panoramic ne sois pas du basic. Pourquoi pas? On dit bien que Ruby Python, la majorité des autres langages ont une structure très proche du basic, parfois même dans possibilité qui dépassent celle du basic cimme A=B=35. Est-on encore en basic? Si oui, il y a un bogue avec PRINT. C'est ce que je pense |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 13:49 | |
| - Citation :
- Quand à la commande print, c'est pour vérifier que tout ce passe bien dans le traitement de mes chaines
Pour cela j'utilise DLIST avec FILE_LOAD numéro du Dlist,"fichier.txt"Pour visualiser j'enlève le D de DLIST ainsi on voit ce que contient le fichier. D'ailleurs, je travaille mes fichiers dans un DLIST et ensuite je peux sauver le tout par FILE_SAVE numéro du Dlist,"fichier.tx"S'il ne s'agit pas de fichiers tu remplis avec ITEM_ADD numéro du Dlist,V$ C'est ma technique, il y en a d'autres.... A+ | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 14:32 | |
| Merci beaucoup Jean-claude pour cette astuce ! Je connais pas très bien encore ce langage, je crois qu'il faut que je me penche plus sérieusement sur la doc ! Déjà l'utilisation de DLIST et FILE_SAVE va beaucoup me simplifier la vie ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 17:57 | |
| Pour Cosmos70: Oui, je pense qu'il y a bien un bug, mais ça va plus loin que le simple print, puisque la commande text n,t$ sur un mémo a exactement le même problème. Exécute simplement mon petit morceau de code dans l'éditeur, tu sera surpris ! Je pense vraiment que c'est un cas pour Jack... | |
|
| |
Invité Invité
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 18:38 | |
| Je viens d'essayer, depuis ce matin, je ne suis absolument surpris. J'avais fait l'essai avec print_target, item_add, le résultat était le même. C'est un problème de traitement de texte pour ainsi dire. Je pense aussi que Jack devra revoir cela, je ne seulement pas être le seul à le dire. Le mémo affiche tous les codes qui sont visibles, certains sont remplacés. Par contre un caractère: chr$(0) arrète l'affichage du reste de la ligne, et moi parfois je m'en sers pour afficher une ligne sans qu'il n'y ait de saut de ligne. Fait l'essai: afin un memo, et réduis le à la taille d'une ligne. Si tu mets chr$(0), tu restes sur la ligne, sinon il y a décalage. Là je ne suis plus dans le sujet, mais essaies ceci: - Code:
-
memo 1 ;top 1,100:left 1,10 :height 1,20 item_add 1,"coucou 1" :' +chr$(0) selon que tu mets +chr$(0) dans une ligne tu fais ou ne fais pas de saut de ligne |
|
| |
Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 20:20 | |
| Je viens de faire un Mix de vos deux codes - Code:
-
memo 10 :top 10,100:left 10,200 :height 10,20 item_add 10,"coucou 1" :' +chr$(0) print print print "coucou 1" print chr$(34)+"coucou 2"+chr$(34) print chr$(34)+chr$(34)+"coucou 3"+chr$(34)+chr$(34) edit 1 top 1,100 left 1,10 text 1,"coucou 1" edit 2 top 2,130 left 2,10 text 2,chr$(34)+"coucou 2"+chr$(34) edit 3 top 3,160 left 3,10 text 3,chr$(34)+chr$(34)+"coucou 3"+chr$(34)+chr$(34) end
Les bras m'en tombent.... si on change la ligne - Code:
-
item_add 10,"coucou 1" :' +chr$(0)
par - Code:
-
item_add 10,"coucou 1" +chr$(0)
on voit que le comportement dans le mémo est différent Pour la suite du code éffectivement, on a un comportement de TEXT n,v$ qui est idem au print(s). AQUE COUCOU | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Ven 2 Juil 2010 - 23:03 | |
| Le comportement avec chr$(0) dans un texte s'explique par le fait que ce caractère est le signal de fin de chaîne pour Delphi (langage sous-jacent à Panoramic) et donc forcément pour Panoramic. Normalement, tout ce qui suit un chr$(0) sera ignoré. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Mer 7 Juil 2010 - 7:31 | |
| Bonjour, Pour en remettre une couche... ... la dernière... - Code:
-
dim a$ a$="toto"+chr$(0)+"titi" print a$
A l'affichage j'obtiens 'toto titi' Le caractère \0 est complètement ignoré... normalement en RAM je devrai me retrouver avec les octets suivants: - Code:
-
74 6F 74 6F 00 74 69 74 69 t o t o \0 t i t i
Quelque soit la fonction de sortie, 'print' ou autre, le caractère terminal 0x00 devrait empêcher l'affichage de 'titi'. Bon j'avoue que c'est un peu stupide de mettre un chr$(0) en plein milieu d'une chaine... de même si à la place du caractère nul on met chr$(13)+chr$(10) -> CR+LF, ceux-ci sont également ignorés... ce qui pour une fct print (pour les autres fct je ne me prononcerai pas) n'est pas très logique... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 11:16 | |
| Regarde le petit code suivant, et tu verras que le chr$(0) est transformé en espace par print, mais partout ailleurs, il stoppe la chaîne de caractères: - Code:
-
dim a$
a$ = "toto" + chr$(0) + "titi"
edit 1 top 1,100 left 1,10 text 1,a$
alpha 2 top 2,130 left 2,10 caption 2,a$
memo 3 top 3,160 left 3,10 item_add 3,a$
print a$ print "toto" + chr$(0) + "titi" print "longueur de a$=" + str$(len(a$)) print "longueur de text$(1)=" + str$(len(text$(1)))
end
Si par exemple, yu passes adr(a$) en paramètre à une routine dans une DLL pour qu'elle prenne la chaîne, elle s'arrêtera également au chr$(0). De manière générale, il est possible d'utiliser du binaire avec du chr$(0) dans une chaîne de caractères, tant qu'on en reste au traitement pur de chaînes de caractères (left$, instr, ...). Mais le passage d'une telle chaîne à un objet ou une routine externe à Panoramic entraîne forcément des problèmes. Il vaudrait mieux trouver d'autres solutions que d'utiliser cela. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 12:03 | |
| Bonjour Klaus,
Ok, le test est édifiant.
En conclusion, la commande print est à proscrire...
PS: au fait, je n'arrive pas à télécharger ta DLL sur ton site... je me retrouve avec un fichier zip de 0 Ko...
A+ | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 14:03 | |
| Pour ma DLL, regarde le fil de discussion sur mon sitge: mon hébergeur a en ce moment un gros problème technique, et j'ai donc mis ma DLL en ligne par ce lien: http://cid-d8748b7d6de17313.office.live.com/self.aspx/.Public/Panoramic/KGF.17.zipEn ce qui concerne la commande print, elle n'a en effet pas d'utilité réelle en programmation évènementielle. Je pense qu'elle est là pour des raisons de compatibilité "affective" avec les anciens Basic. Si tu veux effectuer par exemple un affichage pour tracer un programme, il vaut mieux procéder comme suit: - Code:
-
form 501 : ' form spéciale pour recevoir les message de traced memo 502: parent 502,501 : ' ici on trouvera les messages de trace ... item_add 502,"Je trace mon programme..." ... item_add 502,"Pointe de passage A: valeur="+a$ ... item_add 502,"Pointe de passage B: valeur="+str$(i%) ...
et ainsi de suite. L'avantage, c'est que les affichages se font dans une form à part que l'on peut déplacer et redimensionner comme un veut; par programme, on peut cacher cette form (hide 501) ou la réafficher (show 501), et le mémo n'est pas limité en longueur: l'ascenseur vertical apparaît automatiquement et permet de faire défiler tout l'historique. De plus, l'affichage de la form 0 n'est pas perturbé... | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 14:56 | |
| Ce qui est très pratique également pour mettre des points d'arrêt dans un programme (et tracer des variables), c'est MESSAGE. Inconvénient par rapport au système Klaus, on n'en garde pas l'historique. | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 15:31 | |
| Merci Klaus pour le lien, En fait j'ai rencontré le problème du print au tout début de la prise en main de Panoramic (c'est la 1ere fonction qu'on utilise quand on découvre un langage. Qui n'a pas fait printf("Hello World\n"); en C ?) <- comment feinter le bug de l'anti-slash du forum J'utilise maintenant une List pour l'affichage de debug, un memo pourrait aussi bien faire l'affaire... L'intérêt de message c'est lorsque l'interpréteur plante méchamment sans qu'on ai le moindre message d'erreur... (un ersatz de TRACE_ON) | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: pb d'affichage de quote dans une chaine Mer 7 Juil 2010 - 16:35 | |
| Tu utilises un list: c'est aussi bien. Pour l'usage de trace, cela se vaut par rapport à un mémo. Essaie quand_même de placer ta list dans une form spécifique comme indiquée dans mon exemple: cela évite de perturber l'affichage du programme que l'on teste.
Je vois que tu as piégé le "/" - c'est bien. Bon courage pour la suite !
| |
|
| |
Contenu sponsorisé
| Sujet: Re: pb d'affichage de quote dans une chaine | |
| |
|
| |
| pb d'affichage de quote dans une chaine | |
|