FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Problème avec ASC(a$) Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Problème avec ASC(a$) Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Problème avec ASC(a$) Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Problème avec ASC(a$) Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Problème avec ASC(a$) Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Problème avec ASC(a$) Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Problème avec ASC(a$) Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Problème avec ASC(a$) Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Problème avec ASC(a$) Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Problème avec ASC(a$) Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Problème avec ASC(a$) Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Problème avec ASC(a$) Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Problème avec ASC(a$) Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Problème avec ASC(a$) Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Problème avec ASC(a$) Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

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

 

 Problème avec ASC(a$)

Aller en bas 
3 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Problème avec ASC(a$)   Problème avec ASC(a$) EmptySam 29 Aoû 2009 - 17:02

Bonjour PANORAMIC

Voici le code qui pose problème:

Code:

label insert,finsaisie,quit

dim a$,b$

left 0,223
top 0,182
width 0,550
height 0,492
caption 0,"Form 0"
 
edit 1
left 1,81
top 1,64
on_change 1,insert

button 2
left 2,340
top 2,200
width 2,70
height 2,20
caption 2,"QUITTER"
on_click 2,quit

set_focus 1

end
rem -----------------------

insert:
a$=upper$(text$(1))
if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":text 1,"":return
if scancode=13 then set_focus 2:goto finsaisie
b$=inkey$
goto insert
if a$=" " then goto finsaisie
return

finsaisie:
print_locate 10,10:print a$
return

quit:
terminate

J'ai le message d'erreur suivant (33) not correct logical..... à la ligne 31, Je ne comprend pas.
De plus si je clique direct sur le boutton QUITTER je retombe sur le problème de violation déja connu.

HELP!

A+
Revenir en haut Aller en bas
Invité
Invité




Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptySam 29 Aoû 2009 - 20:13

Sur ton code, il y a 2 lignes que je ne comprends pas:
Code:

if a$=" " then goto finsaisie
return

Normalement, elles ne servent à rien, vu qu'il y a un branchement impératif avec : GOTO insert

ensuite il y a
Code:

a$=upper$(text$(1))

Je suis encore tout neuf avec panoramic, mais normalement dans EDIT, tu entre un texte, et non un caractère. Je ne crois pas que l'on puisse avoir le code asc d'une phrase: Dans un basic normal, le code asci d'un caractère est de 0 à 255.
Je ne peux pas essayer ton programme, il y a un blocage
A+
Revenir en haut Aller en bas
Invité
Invité




Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptySam 29 Aoû 2009 - 20:52

Je me suis tromper de ligne lors de la copie, j'ai un petit écran sur EEEPC
l'erreur à mon sens c'est:
Code:

if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":text 1,"":return
Désolez pour mon erreur ( à la place de:a$=upper$(text$(1)) )
salutation
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 8:33

Tu as raison la ligne if a$=" " then goto finsaisie ne sert a rien.

la ligne qui BUG est bien:
if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":text 1,"":return
C'est justement l'objet de mon appel a l'aide. Pour moi je pense que la fonction a un BUG, mais bien entendu je peus me tromper. Le but de cette ligne est d'empêcher l'utilisateur de saisir autre chose qu'une lettre ou un chiffre comme premier caractère dans l'EDIT.
Si tu mets un rem devant cette ligne cela fonctionne.
J'attend que PANORAMIC rentre de vacances, il aura surement une réponse a fournir.
A+
Revenir en haut Aller en bas
Invité
Invité




Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 10:22

Salut Jean Claude
Il y a une chose qui me gène dans ton code : Pour moi la fonction asc( caractère ) fonctionne très bien, le problème c'est que avec EDIT, tu ne chope pas le 1er caractère, mais la chaine complète avec TEXT$(...), et là il y a erreur. Si tu veux prendre le 1er caractère, revois ton code avec left$(a$,1). Pour l'instant je suis très occupé ailleurs pour te proposer une solution, j'ai des journées chargées. Mais revois ton scripte, je suis sur que tu trouvera. Ainsi:
Code:
a$=upper$(text$(1))
malgrès ma rectification est au départ la source d'erreur.
A+
Revenir en haut Aller en bas
Invité
Invité




Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 10:55

J'ai toutefois vérifier la fonction avec asc() et le teste, j'ai réécris un scripte rapide pour voir (la curiosité )
Code:
dim a$ ,l%

repeat
  input a$
  print asc(a$)
  a$= left$(a$,1) : l%=asc(a$)
  if l%< 47 or l%> 90 then message "avec l%  hors limite"
  if asc(a$)<47 or asc(a$)>9O then message "hors limite"
until a$ = chr$(13)
la ligne avec l% fonctionne, et la tienne ne fonctionne pas. Effectivement, il y a problème.
A ce propos j'ai trouvé une erreur bizarre:
Code:
dim a$ ,l%  ,foto%

for foto%=1 to 10
  print foto%
next foto%
et j'obtiens l'erreur suivante: (42) Loop FOR/NEXT: Not Correct START EXPRESSION: .Line: 3
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 11:26

Si j'ai utilisé la fonction upper$ c'est a cause de la ligne if asc(a$)..... qui utilise les codes ASCII de 48 à 90 qi ne comprennent pas les minuscules. Si j'essai if left$(asc$(a$),1)<48 .... cela ne change rien.
J'ai revu ton code avec a$=upper$(a$) et j'ai positionné un rem devant ma ligne qui BUG
Cela marche, mais ton code n'a pas de sortie, on doit faire une fin de tache [control+shift+echap] pour terminer le processus.
Code:
dim a$ ,l%

repeat
  input a$
  a$=upper$(a$)
  print asc(a$)
  a$= left$(a$,1) : l%=asc(a$)
  if l%< 47 or l%> 90 then message "avec l%  hors limite"
  rem if asc(a$)<47 or asc(a$)>9O then message "hors limite"
until a$ = chr$(13)

A+
Revenir en haut Aller en bas
Invité
Invité




Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 11:47

Il ne s'agissait pas de faire un programme mais de voir (de faire un simple teste ) si il y avait une erreur sur asc(), sans plus En tapant "a", il y a erreur sur le le teste asc(), mais pas avec l%, et cela montre bien une erreur sur la fonction, et j'en suis resté là. Je n'ai pas essayé de refaire ton programme, il t'appartient .J'ai vu l'erreur, et cela montre que si il avait des problèmes sur ton scripte, il y avait aussi une erreur sur la fonction asc(), je ne l'avais pas vérifié.
désolé de ne pas avoir été assez claire. Je ne devrais pas intervenir lorsque je manque un peu de temps.
salutation
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 30 Aoû 2009 - 12:26

OK et Merci de t'être penché sur mon problème, mais ne t'inquiète pas, car j'en connais qui à leurs retour de vacances ne vont pas manqués de vérifier tout çà.
A+
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 6 Sep 2009 - 21:52

Pour cosmos70.
Effectivement il y a un bug dans:
Code:
dim foto%

for foto%=1 to 10
  print foto%
next foto%

alors que:
Code:
dim fobo%

for fobo%=1 to 10
  print fobo%
next fobo%
fonctionne.
Il y a un problème dans l'évaluation de la ligne for. Je n'ai pas encore regardé précisément, mais j'ai l'impression que toute variable contenant "to" pose problème. La recherche du mot-clé "to" semble commencer à partir du premier caractère de la variable au lieu de commencer après la valeur de départ.

Citation :
la ligne avec l% fonctionne, et la tienne ne fonctionne pas.
Ben oui, tu as tapé 90 avec un 9 et la lettre "O" dans:
Code:
if asc(a$)<47 or asc(a$)>9O then message "hors limite"


Dernière édition par panoramic le Dim 6 Sep 2009 - 22:07, édité 2 fois
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyDim 6 Sep 2009 - 22:00

Pour Jean-Claude:
Lorsque j'exécute ton code,
- si je clique directement sur le bouton "QUITTER", j'ai une erreur (Access violation) et je ne peux en sortir (sauf par un CRTL + ALT + DEL et fin de tache)
- si je tape quelque chose dans l'EDIT et que je clique directement sur le bouton "QUITTER", c'est pareil
- si je tape quelque chose dans l'EDIT puis ENTER et que je clique directement sur le bouton "QUITTER", j'ai 2 erreurs (Access violation) puis le terminate s'effectue.

Je vais enfin m'attaquer à ce problème de terminate suivi ou non d'un return...
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyLun 7 Sep 2009 - 12:02

Merci d'avance pour ce problème de violation. Pour ce qui concerne ASC(a$) , le manuel de référence indique pour cette fonction retourne le code ascII du premier caractère du string.... c'est pourquoi je ne comprend pas que ma ligne de controle par ASC ne fonctionne pas.
A+
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyLun 7 Sep 2009 - 22:23

J'avoue que je n'ai pas bien compris ton problème avec la fonction asc()
Cette fonction, comme dans la plupart des Basic, retourne le caractère ASCII du premier caractère de la chaîne qu'on lui passe en paramètre, c'est à dire le caractère de GAUCHE de la chaine.

Dans ton test, tu ne testes pas le dernier caractère que tu viens de taper dans ton EDIT, c'est à dire celui de droite, mais tu testes toujours le même: celui de gauche, qui est le premier caractère tapé. C'est pour cela que ton test ne fonctionne pas comme tu le souhaites.

Pour t'en convaincre, il suffit d'ajouter une ligne caption 0,a$ qui affiche dans le bandeau de la fenêtre le contenu de l'EDIT. Tu verras au fur et à mesure de la frappe que c'est toujours le même caractère que tu testes: le premier tapé, celui le plus à gauche.
Code:
label insert,finsaisie,quit

dim a$,b$

left 0,223
top 0,182
width 0,550
height 0,492
caption 0,"Form 0"

edit 1
left 1,81
top 1,64
on_change 1,insert

button 2
left 2,340
top 2,200
width 2,70
height 2,20
caption 2,"QUITTER"
on_click 2,quit

set_focus 1

end
rem -----------------------

insert:
a$=upper$(text$(1))
caption 0,a$
if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":text 1,"":return
if scancode=13 then set_focus 2:goto finsaisie
b$=inkey$
goto insert
if a$=" " then goto finsaisie
return

finsaisie:
print_locate 10,10:print a$
return

quit:
terminate
Pour tester le dernier caractère tapé, il faut tester le caractère de droite de la chaîne que tu es en train de taper.
Il suffit de changer
a$=upper$(text$(1))
par
a$=right$(upper$(text$(1)),1)

Code:
label insert,finsaisie,quit

dim a$,b$

left 0,223
top 0,182
width 0,550
height 0,492
caption 0,"Form 0"

edit 1
left 1,81
top 1,64
on_change 1,insert

button 2
left 2,340
top 2,200
width 2,70
height 2,20
caption 2,"QUITTER"
on_click 2,quit

set_focus 1

end
rem -----------------------

insert:
a$=right$(upper$(text$(1)),1)
caption 0,a$
if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":text 1,"":return
if scancode=13 then set_focus 2:goto finsaisie
b$=inkey$
goto insert
if a$=" " then goto finsaisie
return

finsaisie:
print_locate 10,10:print a$
return

quit:
terminate

D'autre part, ton instruction test 1,"" est un peu "maladroite" car elle modifie ton EDIT donc fait repartir l'exécution vers insert: qui est le début du traitement d'un "changement" du contenu de l'EDIT... le programme se mord la queue... et ne sortira jamais de cette boucle de traitement d'événement... car le traitement recrée l'événement lui-même.

Cela me pose d'ailleurs un sérieux problème car c'est la première fois que je vois quelqu'un qui dans le traitement d'un événement recrée cet évenement, et je vais regarder de manière très approfondie ce qui se passe alors dans PANORAMIC qui n'a pas été prévu pour ce genre de sport.
Ceci dit, je suis très heureux de pouvoir investiguer sur un tel problème qui sort de l'ordinaire.

Concernant asc d'une chaine vide, c'est à dire:
Code:
dim a$
a$=""
print asc(a$)
Là, il y a un problème car asc ne fonctionne pas pour une chaîne vide.
Je n'avais pas envisagé ce cas et je vais voir ce qu'on peut faire.
Je vais regarder ce que font les autres Basic dans ce cas de figure, et faire la même chose.

En résumé, lorsque tu détectes un caractère "interdit", la commande text 1,"" fonctionne, mais recrée l'événement "EDIT 1 a changé", et lors de la deuxième exécution du sous-programme de traitement de cet événement, asc reçoit en paramètre la chaîne vide, et comme il y a un problème quand cette fonction asc traite la chaîne vide, tu as l'erreur "(33) Not correct logical expression".

Pour information (cela n'a rien à voir avec ton programme), j'ai découvert un autre bug:
Code:
print asc("a")
qui devrait afficher 97 et qui pourtant, à mon plus grand étonnement, affiche 65 !
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyMar 8 Sep 2009 - 9:23

Hé bien, sur ce coup là j'ai manqué d'imagination. C'est vrai que mon code se mort la queue.
J'ai rajouter c$ pour récuperer la totalité de la saisie dans l'EDIT.
J'ai supprimer text 1,"" (pour voir), le message (33) not correct... apparait toujours, mais cette fois-ci au moment de l'effacement du caractère interdit.
Et pour finir SCANCODE ne peut pas fonctionner sans b$=INKEY$ et je pense justement que c'est cette ligne b$=INKEY$ qui provoque la violation.

Voici le code:
Code:
label insert,finsaisie,quit

dim a$,b$,c$

left 0,223
top 0,182
width 0,550
height 0,492
caption 0,"Form 0"

edit 1
left 1,81
top 1,64
on_change 1,insert

button 2
left 2,340
top 2,200
width 2,70
height 2,20
caption 2,"QUITTER"
on_click 2,quit

set_focus 1

end
rem -----------------------

insert:
a$=right$(upper$(text$(1)),1)
caption 0,a$
if asc(a$)<47 or asc(a$)>90 then message "Caractère interdit":return
if scancode=13 then set_focus 2:goto finsaisie
b$=inkey$
goto insert

finsaisie:
c$=upper$(text$(1))
print_locate 10,10:print c$
return

quit:
terminate
A+
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyMar 8 Sep 2009 - 9:40

Citation :
D'autre part, ton instruction test 1,"" est un peu "maladroite" car elle modifie ton EDIT donc fait repartir l'exécution vers insert: qui est le début du traitement d'un "changement" du contenu de l'EDIT... le programme se mord la queue... et ne sortira jamais de cette boucle de traitement d'événement... car le traitement recrée l'événement lui-même.


En relisant je comprend que pour le moment çà ne peut pas fonctionner, vu que si j'efface le caractère interdit pour en saisir un autre a$="" , du coup asc(a$) provoque l'erreur.
A+
Revenir en haut Aller en bas
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyMer 9 Sep 2009 - 22:16

Citation :
Je vais regarder ce que font les autres Basic dans ce cas de figure, et faire la même chose.
En gros, en testant la ligne
Code:
print asc("")
sur d'autres Basic (une vingtaine), une moitié sort une erreur et l'autre moitié affiche la valeur 0.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
JL35




Nombre de messages : 7112
Localisation : 77
Date d'inscription : 29/11/2007

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyJeu 10 Sep 2009 - 0:06

Personnellement, je préfèrerais que asc("") renvoie la valeur 0, ça me paraît plus logique qu'une erreur.
Revenir en haut Aller en bas
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 70
Localisation : 83 Var
Date d'inscription : 07/05/2009

Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) EmptyJeu 10 Sep 2009 - 7:59

Je suis d'accord la valeur zéro permet de traiter le résutat dans le code et c'est plus pratique que d'utiliser on error goto si c'est une erreur qui esr générée.
A+
Revenir en haut Aller en bas
Contenu sponsorisé





Problème avec ASC(a$) Empty
MessageSujet: Re: Problème avec ASC(a$)   Problème avec ASC(a$) Empty

Revenir en haut Aller en bas
 
Problème avec ASC(a$)
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Problème avec DIM et ADR
» problème avec edit ou bien avec combo?
» Y-a-t'il un problème avec END?
» Problème avec GenerateMaskFragments.
» Problème avec SendStringAsText.

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Un problème avec PANORAMIC?-
Sauter vers: