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
» Form(résolu)
ça clignotte a qui mieux mieux Emptypar leclode Aujourd'hui à 17:59

» trop de fichiers en cours
ça clignotte a qui mieux mieux Emptypar Marc Aujourd'hui à 11:42

» Bataille navale SM
ça clignotte a qui mieux mieux Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
ça clignotte a qui mieux mieux Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
ça clignotte a qui mieux mieux Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
ça clignotte a qui mieux mieux Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
ça clignotte a qui mieux mieux Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
ça clignotte a qui mieux mieux Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
ça clignotte a qui mieux mieux Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
ça clignotte a qui mieux mieux Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
ça clignotte a qui mieux mieux Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
ça clignotte a qui mieux mieux Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
ça clignotte a qui mieux mieux Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
ça clignotte a qui mieux mieux Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
ça clignotte a qui mieux mieux Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-40%
Le deal à ne pas rater :
Tefal Ingenio Emotion – Batterie de cuisine 10 pièces (induction, ...
59.99 € 99.99 €
Voir le deal

 

 ça clignotte a qui mieux mieux

Aller en bas 
5 participants
AuteurMessage
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

ça clignotte a qui mieux mieux Empty
MessageSujet: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 25 Aoû 2010 - 23:22

Qui pourrait ameliorer ce code avec lequel je me detruis les yeux?


Code:

' je promene ma souris
'  escape pour sortir


  picture 2
 dim a,s ,c(100),x ,v  ,d(100)


  width 2 ,1650
  height 2,1100
  width 0 ,1750
  height 0,1200
  v=1
  2d_target_is 2
  for x= 1 to 5
repeat
      display
      if key_down_code  = 27 then terminate
      if mouse_right_down(2)=0
        display
      c(v)=  mouse_x_position(2)




      d(v)=    mouse_y_position(2)


2d_fill_color  rnd(255), rnd(255),rnd (255)
 2d_circle c(v),d(v),5
 end_if
display

 until v=5
  v=v+1


  next x
merci
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 5:55

Bonjour sergeauze,

Déjà revoie les indentations de ton prog, cela fera moins mal aux yeux ! Laughing
Je suppose que la boucle for a été volontairement shuntée?
apparemment on ne peut pas faire grand chose contre le clignotement...
peut être cosmos70 a une idée ?

Il y a quand même un truc qui me chagrine:
c'est qu'apparemment la fonction mouse_right_down ne fonctionne pas
(ou alors j'ai pas bien compris).
J'ai beau appuyer sur le bouton droit de la souris, je rentre quand meme
dans le if...

Je viens de faire l'essai en remplaçant mouse_right_down par mouse_left_down
et j'obtiens la même chose... scratch

EDIT: il semblerait que ces fonctions ne marchent que sur front (changement d'état)
Voir l'essai du prog ci-dessous en s'excitant comme un malade sur les boutons de la souris...
Code:

dim v
label EndProg
on_close 0,EndProg

picture 1
' width 1 ,1650 : height 1,1100
full_space 1
v=1
2d_target_is 1
repeat
  if key_down_code  = 27 then goto EndProg
  print_locate 50,50: print "Mouse_right_down(2)";mouse_right_down(1)
  print_locate 50,100: print "Mouse_right_up(2)";mouse_right_up(1)
  print_locate 50,150: print "Mouse_left_down(2)";mouse_left_down(1)
  print_locate 50,200: print "Mouse_left_up(2)";mouse_left_up(1)
  wait 100
until v=5

EndProg:
  terminate
est-ce normal ?
De même que dans mon exemple, je m'attends à avoir le picture 1 tenir tout l'espace du form 0, ce qui n'est pas le cas... et les fonctions mouse_xxx renvoient des valeurs même si on clique en dehors du picture 1...

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 12:24

Faites attention, aux codes que vous mettez!
Nardo26, je fais un essai pour voir et tu bloques mon éditeur. C'est quoi la sortie par UNTIL v=5
Je suis pris par mon propre code, et je ne suis pas rentré dans tous les détails (déjà que vu ce que je fais en ce moment, je ne devrais pas être sur mon ordi)

Pour sortir d'une boucle le plus simple est: IF SCANCODE=27 (ou autre) THEN stop/terminate/ ...
J'ai compris que c'était à intégrer au premier.
Pour le scintillement c'est vraiment le bordel avec Panoramic. C'était la raison pour laquelle j'avais abandonné mon éditeur au mois de décembre (entre autre).
J'ai trouvé d'autres solutions mais elle s'applique pas à ce cas de figure.
Le mieux à faire est pour l'instant comme je l'ai montré ailleurs est de sauver l'écran pendant le rafraichissement, et l'affiché ensuite.
Une autre solution est de faire 2 pictures l'un sur l'autre. Vous faites 2 fois la même chose, mais vous le faites sur l'écran du dessous, vous l'affichez, en mettant à hide ensuite celui du dessus, et vous refaites la même chose sur celui qui est hide... ainsi de suite.
Mais j'ai pas le temps pour cela. Bonne journée
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 14:17

Cosmos, mon exemple s'appuie sur le code de serge
(cf. until et touche escape pour sortir). Si tu regardes bien le code :

on_close 0,EndProg
...
Boucle
....
if key_down_code = 27 then goto EndProg
...
FinBoucle_infinie

EndProg:
Terminate


Normalement avec toutes ces précautions, tu n'aurais pas du rester bloqué !

Question
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 15:09

J'ai compris après. Quand j'ai vu que vous me demandais mon avis, après avoir regardé en diagonale, j'ai pris ton code, sans l'analyser.
Mais comme tu vois je n'en suis pas mort, vu que je te répond.
Avez-vous fait l'essai du principe du double écran. Je l'avais fait pour écrire sur un picture.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 15:22

Même principe que Klaus pour les TABs...
Mais je trouve que la mise en place est "compliquée" pour le résultat obtenu, cad pas grand chose...
Cette idée d'utiliser un ecran/picture logique / Physique me rappelle l'époque sur Atari520STF lorsque l'on s'amusait à faire des démos... cela fonctionnait très bien car on commutait si je me souvient bien à partir de l'IT VBL (vertical blank) de l'écran... ce qui soit dis en passant est "légèrement" plus rapide que ce que l'on fait sous pano... Rolling Eyes
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyJeu 26 Aoû 2010 - 16:46

Moi je fais comme ceci

(Remarque : j'utilise les timers alors vous pouvez quitter n'importe quand par la croix rouge)

Code:
label temps1,temps2,temps3

full_space 0
border_hide 0
color 0,255,255,255

timer 2
timer_interval 2,1
on_timer 2,temps1

timer 3
timer_interval 3,1
on_timer 3,temps2
timer_off 3

timer 4
timer_interval 4,1
on_timer 4,temps3
timer_off 4

end

temps1:
if mouse_left_down(0)=1 then timer_on 3:timer_off 2:timer_on 4
return

temps2:
2d_fill_color rnd(255),rnd(255),rnd(255)
2d_circle mouse_x_position(0),mouse_y_position(0),3
return

temps3:
if mouse_left_up(0)=1 then timer_off 3:timer_on 2:timer_off 4
return

(le problème c'est effectivement le picture)
Revenir en haut Aller en bas
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyVen 27 Aoû 2010 - 7:43

@à Nardo26
J'ai utilisé Atari 520STF, puis Mega ST4, jusqu'en 98 ou 99?, je ne sais plus.
Il y a quand même une différence qu'il faut tenir compte: Atari en mode couleur ou monochrome "haute résolution" avait une mémoire écran de 32000 octets. Certes Atari était rapide malgrès qu'il tournait à 8 mghz, mais on compare pas la même chose. Ici le basic est lié à Windows, et il y aurait certainement beaucoup à dire.
Je ferme la parenthèse. J'ai été un amoureux d'Atari, mais la page est tourné. Il m'arrive de voir encore un écran d'Atari, aujourd'hui ça fait bizarre.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyVen 27 Aoû 2010 - 11:41

Je suis bien d'accord. On ne peut comparer un PC avec un Atari.
C'est du principe que je parle : Pour qu'il n'y ait pas de scintillement lors de la commutation entre écrans ou picture physique et logique, on doit réaliser cette commutation très très rapidement! c'est de cette rapidité dont je parle... qui à l'époque était synchronisée par rapport au balayage de l'écran et en plus, les 2 écrans était en RAM! (on jouait avec le pointeur de début de l'adresse vidéo). De nos jours, le faire par des accès disque (sauvegarde + lecture) et à mon avis peine perdue (du moins pour ce que veux faire serge).
Peut être que l'utilisation future de 2D_GRAB_IMAGE + timer pourrait apporter un début de solution....
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptySam 28 Aoû 2010 - 7:30

Une petite modif du code:
cela n'enlève pas le clignotement mais cela apporte un "léger mieux"....

Code:

' je promene ma souris
'  escape pour sortir

dim x,y,old_x,old_y
label EndProg

on_close 0, EndProg  : ' me renvoi de temps en temps un message "Acces violation at address 000048. read of address 000048"

width 0 ,screen_x: height 0,screen_y
picture 2
' full_space 2  : rem ça, ça ne marche pas (???)
width 2 ,screen_x: height 2,screen_y

2d_target_is 2

repeat
  if asc(inkey$) = 27 then goto EndProg : ' pas de msg d'erreur en quittant par escape
  x = mouse_x_position(2)
  y = mouse_y_position(2)
  ' if mouse_right_down(2)=0
      2d_fill_color  rnd(255), rnd(255),rnd (255)
  if x<>old_x or y <> old_y
      display
      2d_circle x,y,5
  end_if
  old_x=x:old_y=y
until 1=2

EndProg:
  terminate
Revenir en haut Aller en bas
http://nardo26.lescigales.org
sergeauze

sergeauze


Nombre de messages : 391
Age : 71
Localisation : Hautes Alpes France
Date d'inscription : 09/01/2010

ça clignotte a qui mieux mieux Empty
MessageSujet: le sujet me depasse !   ça clignotte a qui mieux mieux EmptyLun 30 Aoû 2010 - 0:27

je vois à quel point je reste un debutant !
Embarassed
Merci pour vos lumieres Idea
Mes lacunes m'effraient affraid
Mon manque de rigueur aussi Embarassed
Je reste a l'ecoute du forum
Sleep
Revenir en haut Aller en bas
http://sergeauze.blog-video.tv/
carl




Nombre de messages : 6
Date d'inscription : 14/08/2010

ça clignotte a qui mieux mieux Empty
MessageSujet: problemes de clignotement   ça clignotte a qui mieux mieux EmptyLun 30 Aoû 2010 - 23:12

j'ai enlevé la ligne 2d_target_is_ 2 et ca ne clignote plu ; perso j'ai a peu prés le meme probleme mais avec la commande 3d_target je n'arrive pas a passer d'un scene 3d a un autre il me renvoie toujours sur le 1er scene3d créé et quand je quitte le programme j'ai droit au message d'erreur d'adresse memoire
Revenir en haut Aller en bas
Klaus

Klaus


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 2:02

Carl, ta modif est bluffante ! Qu'est-ce qui peut bien arriver à target_2d pour provoquer ces scintillements ? Bizarre...


Dernière édition par Klaus le Mar 31 Aoû 2010 - 8:51, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 6:30

Bravo Carl !
Je n'y avais pas pensé.... Embarassed

2d_target_is Forum%
Etrange, la fonction 2d_target_is a des effets bizarres sur le forum... lol!

PS: la commande display n'est pas nécessaire...

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jean Claude

Jean Claude


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 9:08

' me renvoi de temps en temps un message "Acces violation at address 000048. read of address 000048"

çà j'ai trouvé, c'est la sortie de la boucle REPEAT/UNTIL, et j'ai également redimensionné la taille du PICTURE.

A+

Code:

' je promene ma souris
'  escape pour sortir

dim x,y,old_x,old_y,fin
label EndProg

full_space 0
on_close 0, EndProg
picture 2
width 2 ,screen_x-12: height 2,screen_y-40

' 2d_target_is 2
repeat
  if asc(inkey$) = 27 then goto EndProg : ' pas de msg d'erreur en quittant par escape
  x = mouse_x_position(2)
  y = mouse_y_position(2)
  ' if mouse_right_down(2)=0
      2d_fill_color  rnd(255), rnd(255),rnd (255)
  if x<>old_x or y <> old_y
    ' display
      2d_circle x,y,5
  end_if
  old_x=x:old_y=y
until fin=2
return

EndProg:
fin=2:return


Voir version corrigée par Klaus en page 2


Dernière édition par Jean Claude le Mar 31 Aoû 2010 - 11:25, édité 1 fois
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 9:29

Bonjour Jean-Claude !

Oui en effet c'est beaucoup plus propre pour sortir de la boucle repeat/until.
Par contre je mettrai bien un end à la place du return après le until...
c'est d'ailleurs bizarre le truc : panoramic exécute un return vers quoi après le until Question
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 9:51

Voici une terminaison propre:
Code:

' je promene ma souris
'  escape pour sortir

dim x,y,old_x,old_y,fin
label EndProg

full_space 0
on_close 0, EndProg
picture 2
width 2 ,screen_x-12: height 2,screen_y-40

' 2d_target_is 2
repeat
  if asc(inkey$) = 27 then gosub EndProg : ' pas de msg d'erreur en quittant par escape
  x = mouse_x_position(2)
  y = mouse_y_position(2)
  ' if mouse_right_down(2)=0
      2d_fill_color  rnd(255), rnd(255),rnd (255)
  if x<>old_x or y <> old_y
    ' display
      2d_circle x,y,5
  end_if
  old_x=x:old_y=y
until fin=2

terminate

end

EndProg:
fin=2:return

Comme dit NArdo26, il faut un end après until, pas un return. De même, il faut un gosub après le if ... =27 car sinon, on génère le même problème. Ou alors, directement un terminate...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jean Claude

Jean Claude


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 11:21

Oui exact, le RETURN était un oubli suite à plusieurs essais. Maintenant la sortie du programme est nickel.
Revenir en haut Aller en bas
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMar 31 Aoû 2010 - 20:41

@ Nardo26
Pour répondre à l'allusion que tu m'as faites à propos de inkey$., et qu'il a enlevé ensuite.
Il y a plus d'un an que nous avons testé cette instruction, et laissé tomber. Elle ne marche pas.
Code:

dim a%

memo 1
print_target_is 1
repeat
 a%=asc(inkey$)
  print a%
  if a%=27 then message "escarpe"
until scancode =27

Devant tester de nouveau les touches du clavier, j'ai refais l'essai aujourd'hui. A vous de juger.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 1 Sep 2010 - 5:34

Bonjour à tous!

@cosmos70:
bizarre... es-tu sûr que le pb vienne de inkey$?
J'ai fait ce test: j'ai changé la cde message par print ainsi que la condition de sortie de la boucle (barre d'espace) car si tu appuie sur ESC entre le traitement du "if" et du "until" tu ne verras jamais de message.
Code:
dim a%
alpha 2 : caption 2,"Barre d'espace pour finir"
memo 1:top 1,50 : print_target_is 1
repeat
  a% = asc(inkey$)
  print a%
  if (a% = 27) then print "escape"
  wait 100  : ' je ralenti la boucle de manière à avoir le tps de voir mon print
until scancode = 32
terminate
Cela fonctionne très bien. Par contre, si je remplace le "print" par "message", cela ne fonctionne qu'une seule fois... scratch
d'ailleurs tant que la boite de message n'est pas apparu, on voit uniquement les codes ASCII défiler. Une fois la boite affichée, on voit les codes ASCII + le caractère de la touche. Comme si on avait un 'input' actif dans le memo/boucle...
fait l'essai en rajoutant un input; un truc dans ce genre :
Code:
dim b$
...
repeat
....
if (a%=27)
  print "escape" : ' surtout pas de cde "message" à cet endroit !
  input b$
end_if
...
until ...
c'est vraiment l'impression que cela donne... vraiment bizarre... Neutral
ATTENTION : ne pas mettre la cde "message" en même temps que la cde "input" -> ça bloque le programme !
il y quelque chose de louche : si tu remplaces asc(inkey$) par scancode, on se retrouve également avec code ASCII+caractère une fois que la boite de message a été affichée...
Un autre truc de particulier avec scancode, c'est qu'il te renvoi toujours le code ASCII du caractère majuscule même si le clavier est en minuscule.
exemple :
Code:
dim a%,b$
alpha 2 : caption 2,"Barre d'espace pour finir"
memo 1:top 1,50
repeat
'  b$=inkey$: a% = asc(b$)
  a% = scancode : b$=chr$(a%)
  item_add 1,str$(a%)+" "+b$
  if (a% = 27) then message "escape"
  wait 100  : ' je ralenti la boucle de manière à avoir le tps de voir mon print
until scancode = 32
terminate

Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 1 Sep 2010 - 8:45

Bonjour.
Je dis que ça ne fonctionne pas parce (souvenir), tout dépends de la façon qu'on l'emploi.
Lorsque j'utilise une fonction, j'ai mieux à faire à chaque fois de faire des tas d'essais pour être sûr que le résultat est bon.
Scancode donne lui maintenant un résultat fiable, et ne pose pas de problème. Donc j'utilise scancode.

Je me souvient d'avoir fait une procédure pour entrer un texte et le contrôler avec inkey$. Elle marchait bien, et je l'ai publié.
Cette même procédure je l'ai incorporé dans un programme sans rien changer. Et surprise elle ne marchait plus du tout!
Je crois avoir constaté, et je ne vais pas le vérifier maintenant (cela fait plusieurs jours que j'ai déménagé mon ordinateur avec le reste pendant les travaux, et être devant la télé, ne me sert pas du tout); donc je crois que selon que la procédure fonctionne en évènementiel, ou non, le résultat est différent.

Je préfère une instruction fiable, donc j'ai scancode, et avec les autres fonctions qui ont été rajoutées depuis (key_code...), cela me suffit. J'ai simplement voulu mettre une parenthèse sur cette éviter instruction pour faire gaffe et éviter les problèmes.

Je vous laisse pour la journée.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 1 Sep 2010 - 10:25

Stooop !
J'ai trouvé ! Grosse erreur !
je ne voyais pas pourquoi j'avais le code ascii + le caractère.... d'où provenait cet echo ?

Je l'avais pourtant en plein milieu de la face cyclops : Il ne faut pas utiliser un objet memo, car c'est lui qui m'affiche le caractère ! et de ce fait, shunte le inkey$
avec un alpha ça marche beaucoup mieux ! Smile
Code:
dim a%,b$
alpha 2 : caption 2,"  Barre d'espace pour finir"
alpha 3:top 3,50
repeat
  b$=inkey$: a% = asc(b$)
  if a%<>0
    caption 3,str$(a%): rem +" "+b$
    if (a% = 27) then message "escape"
  end_if
until a%=32
terminate
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Klaus

Klaus


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

ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 1 Sep 2010 - 14:22

J'ai modifié un peu le programme de Nardo26. J'ai ajouté un mémo pour la trace, et à la fin, on peut faire défiler le mémo avec les flèches pour inspecter le contenu.

J'ai réduit la temporisation à 50 ms. Le programme affiche les valeurs de inkey$ en strinc et en ascii (entre parenthèses) et de scancode. Voici le programme:
Code:

dim c$, c%

height 0,700
memo 1 : top 1,10 : left 1,10 : width 1,100 : height 1,600

repeat

wait 50
c$ = inkey$
c% = scancode
item_add 1,"["+c$+"]="+str$(c%)+"("+str$(asc(c$))+")"

until scancode=27

end

On constate plusieurs points:
- scancode ne donne pas la valeur ASCII du caractère frappé. Il n'est d'ailleurs pas censé le faire (chercher par Google la définition de scancode...). Pour compléter scancode, il faudrait connaître la position des touches shift, control et alt en même temps.
- les touches shift, control et alt génèrent une valeur dans scancode, mais pas dans inkey$
- inkey$ donne toujours le bon caractère pout tout caractère "normal" (hormis shift, control, alt, Fx etc)
- sur la frappe d'une seule touche, il y a une sorte de "persistance" (pas systématiquement) de la valeur dans scancode, alors que inkey$ est effacé immédiatement. Ce phénomène est d'autant plus visible qu'on réduit la temporisation. A partir de 150à200 ms, il n'y a plus de persistence dans scancode
-inkey$ ET scancode gardent leur valeur tant que la touche reste enfoncée ! La preuve: appuyez sur une touche pendant 2 à 3 secondes, puis examinez le log dans le mémo...

Pour information: aussi bien scancode que inkey$ sont des variables système, pas des fonctions. Contrairement à ce qui est dit sans la documentation, elles ne "retournent" rien. On peut les "lire" comme n'importe quelle variable; la différence, c'est qu'on ne peut pas écrire dedans. Ces deux vairables sont chargées par Panoramic à réception d'évènements Windows. Inkey$ est chargée par un évènement signalant l'enfoncement d'une touche, et est effacé par l'évènement de relâchement de cette touche. Le mécanisme est similaire pour scancode, sauf que le scancode de la touche frappée est chargé dans la variable. Ces deux variables restent donc chargées jusqu'à ce que la touche soit relâchée, avec le problème de rémanence pour scancode qui est remis à zéro un peu plus tard.

Donc, prudence avec l'utilisation de ces fonctions ! Le fait d'utiliser scancode une fois ne garantit en aucun cas qu'à la prochaine utilisation, on reçoit bien le code de la touche suivant ! Il peut très bien s'agir de la même touche qui n'a pas encore été relâchée ! Ou alors, la même touche qui a été frappée une nouvelle fois, et il n'y a aucun moyen de distinguer les deux ! Et la meme remarque esr vraie pour inkey$. Pire, deux utilisations successives de scancode ou inkey$ peuvent très bien manquer une touche frappée entre les deux moments, étant donné qu'il n'y a pas de mémorisation ou de mise en file d'attente.

Cela est dû au fait qu'il s'agit de variables, donc en réalité de cellules en mémoire qui sont chargées par des évènements dont la survenue n'est pas contrôlable par notre programme Panoramic. Ce sont des évènements gérés directement par Panoramic et qui en nous sont pas accessibles. Ah, si scancode et inkey$ étaient des fonctions... il y aurait alors une file d'attente interne à Panoramic, et on pourrait "prendre" les caractères dans leur ordre d'arrivée, mais ce n'est pas le cas.

En conclusion: PRUDENCE avec inkey$ et scancode ! Ils doivent être réservés à un usage particulier mesurant les contraintes. Même l'interruption d'un programme en testant si scancode est égal à 27, par exemple, ne réussit pas forcément à chaque coup. Cela dépend du moment précis où l'on inspecte scancode.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Invité
Invité




ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux EmptyMer 1 Sep 2010 - 15:11

une bonne utilisation de scancode:
il faut faire 2 répétitions, la première pour lire la touche, la deuxième pour attendre le relâchement.
Dans l'exemple suivant, je fait une répétition de la touche espace, si j'avais voulu faire espace et espace, j'aurais mis until scancode=0 dans l'attende que la touche se relève.
Code:

dim a%
label l ,fin
caption 0,"appuyez sur space ou escarpe pour sortir"
edit 1 : print_target_is 1

repeat
  gosub l :  print a% : a%=a%+1
until scancode = 27

end

l:
 repeat
 wait 200
 until scancode = 32 or scancode=27 :' dans ce cas c'est une répétition des touches, si on met:
                                    ' until scancode = 0, alors il faut relacher pour continuer.
                                    ' avec escarpe, on sort de repeat.
if scancode = 27 then goto fin
return

fin:
terminate
Revenir en haut Aller en bas
Contenu sponsorisé





ça clignotte a qui mieux mieux Empty
MessageSujet: Re: ça clignotte a qui mieux mieux   ça clignotte a qui mieux mieux Empty

Revenir en haut Aller en bas
 
ça clignotte a qui mieux mieux
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Pour mieux surveiller son poids
» Mieux vaut tard que jamais
» robotique et Panoramic
» Une seule ligne de code (ou presque). Qui dit mieux ?

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: A l'aide!-
Sauter vers: