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
» SineCube
Problème avec ASC(a$) Emptypar papydall Aujourd'hui à 0:49

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Problème avec ASC(a$) Emptypar Yannick Hier à 18:32

» Philharmusique
Problème avec ASC(a$) Emptypar jjn4 Hier à 13:58

» PANORAMIC V 1
Problème avec ASC(a$) Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Problème avec ASC(a$) Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Problème avec ASC(a$) Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Problème avec ASC(a$) Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Problème avec ASC(a$) Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Problème avec ASC(a$) Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0
Problème avec ASC(a$) Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Problème avec ASC(a$) Emptypar Klaus Lun 6 Mai 2024 - 11:41

» Gestion d'un système client-serveur.
Problème avec ASC(a$) Emptypar Klaus Lun 6 Mai 2024 - 10:23

» @Jack
Problème avec ASC(a$) Emptypar Jack Mar 30 Avr 2024 - 20:40

» Une calculatrice en une ligne de programme
Problème avec ASC(a$) Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Problème avec ASC(a$) Emptypar leclode Sam 27 Avr 2024 - 17:59

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

 

 Problème avec ASC(a$)

Aller en bas 
3 participants
AuteurMessage
Jean Claude

Jean Claude


Nombre de messages : 5950
Age : 69
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 : 69
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 : 69
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 : 69
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 : 2386
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 : 2386
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 : 69
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 : 2386
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 : 69
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 : 69
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 : 2386
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 : 7095
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 : 69
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 select case Probleme réglé merci
» problème avec edit ou bien avec combo?
» Problème avec les "if".
» Problème avec RemoveStringBetweenDelimiters.
» Problème avec DTP de KGF

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: