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
» Bataille navale SM
[Résolu] Un truc assez bizarre Emptypar jjn4 Hier à 17:39

» Une calculatrice en une ligne de programme
[Résolu] Un truc assez bizarre Emptypar jean_debord Hier à 8:01

» Gestion d'un système client-serveur.
[Résolu] Un truc assez bizarre Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
[Résolu] Un truc assez bizarre Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
[Résolu] Un truc assez bizarre Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
[Résolu] Un truc assez bizarre Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
[Résolu] Un truc assez bizarre Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
[Résolu] Un truc assez bizarre Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
[Résolu] Un truc assez bizarre Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
[Résolu] Un truc assez bizarre Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
[Résolu] Un truc assez bizarre Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
[Résolu] Un truc assez bizarre Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
[Résolu] Un truc assez bizarre Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
[Résolu] Un truc assez bizarre Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
[Résolu] Un truc assez bizarre 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
-29%
Le deal à ne pas rater :
PC portable – MEDION 15,6″ FHD Intel i7 – 16 Go / 512Go (CDAV : ...
499.99 € 699.99 €
Voir le deal

 

 [Résolu] Un truc assez bizarre

Aller en bas 
4 participants
AuteurMessage
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 19:56

Difficile à expliquer, le plus simple c'est de voir l'exemple ci-dessous:
Désolé si c'est un peu long...
Lancez le prog ci-dessous puis regardez les explications du post...

Code:

hide 0


LABEL Calc
LABEL KeyboardTimer, ActiveKeyTimer,CtrlSaisie
LABEL Celsius2Fahrenheit,Kelvin2Celsius,Fahrenheit2Celcius
LABEL Gh2Th,Th2Gh,Tac2Kh,Kh2Tac
' --------------------------------------------
' Variables de calcul
' --------------------------------------------
dim bac_hauteur,bac_longueur,bac_profondeur,bac_epaisseur
dim bac_volume,bac_poids
dim bac_celsius,bac_kelvin,bac_fahrenheit
dim bac_th,bac_gh,bac_kh,bac_tac

dim baci_hauteur,baci_longueur,baci_profondeur
dim baci_cm,baci_volume

' --------------------------------------------
'    Définition du formulaire de saisie
' --------------------------------------------
dim sbac_hauteur,sbac_longueur,sbac_profondeur,sbac_epaisseur
dim sbac_volume,sbac_poids
sbac_hauteur=100:sbac_longueur=102:sbac_profondeur=104:sbac_epaisseur=106
sbac_volume=118:sbac_poids=120

dim sbaci_volume,sbaci_cm,sbaci_poids
sbaci_volume=200:sbaci_cm=202:sbaci_poids=204
dim sbac_kelvin,sbac_celsius,sbac_fahrenheit
sbac_kelvin=300:sbac_celsius=302:sbac_fahrenheit=304

dim sbac_kh,sbac_tac,sbac_th,sbac_gh
sbac_kh=400:sbac_tac=402:sbac_th=404:sbac_gh=406

dim bCalcul

' construction des champs
dim i,j
dim nb_cont,id_cont: nb_cont=5
dim nb_ele
dim txt$,value,value2

data 1,"Dimensions",10,10,4 : ' n° Container, left, top, nb d'element
data "Longueur  (m) :",sbac_longueur,1.5,""
data "Hauteur    (m) :",sbac_hauteur,0.5,""
data "Profondeur (m) :",sbac_profondeur,0.5,""
data "Epaisseur du verre (mm) :",sbac_epaisseur,8,"Note:la densité pour du verre sodo-calcique de qualité courante est de 2,53"

data 2,"Volumes",left(1)+width(1)+10,10,4
data "Volume brut (litre)  :",sbac_volume,0,""
data "Volume interne (litre):",sbaci_volume,0,""
data "Poids à vide (kg):",sbac_poids,0,"le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture"
data "Nb litres/cm:",sbaci_cm,0,""

data 3,"Temperatures",10,top(1)+height(1)+10,3
data "Celsius  :",sbac_celsius,26,""
data "Fahrenheit:",sbac_fahrenheit,78.8,""
data "Kelvin    :",sbac_kelvin,299.15,"le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture"

data 4,"Dureté carbonaté (temporaire)",left(3)+width(3)+10,top(3),2
data "T.A.C          (°f):",sbac_tac,10,"Titre Alcalimétrique"
data "KH              (°d):",sbac_kh,10,"Karbonat Härte"

data 5,"Dureté totale",10,top(3)+height(3)+10,2
data "GH (°d)",sbac_gh,10,"Gesamthärte"
data "TH (°f)",sbac_th,10,"titre hydrotimétrique"


for i = 1 to nb_cont
  read id_cont: container id_cont : read txt$: caption id_cont,txt$
  read value: left id_cont,value  : read value: top id_cont,value
  read nb_ele : height id_cont,((nb_ele+1)*20)+10 : width id_cont,200
  for j=1 to nb_ele
    read txt$ : read value
    edit value : left value, 118+10 : top value,(20*j):width value, 50: parent value,id_cont
    on_change value,CtrlSaisie : ' <---- C'est cette ligne qui provoque l'erreur
    alpha value+1 : caption value+1, txt$ : left value+1, 10 : top value+1,top(value)+5 : parent value+1, id_cont
    read value2: text value, str$(value2)
    if (value2=0)
      color value,200,255,200
      inactive value
    end_if
    read txt$:hint value,txt$
  next j
next i

' timer pour traitement de saisie des champs
DIM KeyboardTimer%  : KeyboardTimer% = 1000
TIMER KeyboardTimer% : TIMER_OFF KeyboardTimer% : TIMER_INTERVAL KeyboardTimer%,3000
ON_TIMER KeyboardTimer%,KeyboardTimer


' les evenements :
' on_change sbac_longueur, CtrlSaisie
' on_change sbac_hauteur, CtrlSaisie
' on_change sbac_profondeur, CtrlSaisie
' on_change sbac_epaisseur, CtrlSaisie
' on_change sbac_celsius,CtrlSaisie
' on_change sbac_kelvin,CtrlSaisie
' on_change sbac_fahrenheit,CtrlSaisie
' on_change sbac_th,CtrlSaisie
' on_change sbac_gh,CtrlSaisie
' on_change sbac_tac,CtrlSaisie
' on_change sbac_kh,CtrlSaisie

gosub Calc
show 0
END

' ===============================================================================================
' ===============================================================================================
' ----------------------------------------------------------------
' Edition
' ----------------------------------------------------------------
CtrlSaisie:
  if numeric(text$(number_change)) = 1
    if number_change = sbac_celsius then bCalcul=1
    if number_change = sbac_kelvin  then bCalcul=2
    if number_change = sbac_fahrenheit then bCalcul=3
    if number_change = sbac_th then bCalcul=4
    if number_change = sbac_gh then bCalcul=5
    if number_change = sbac_kh then bCalcul=6
    if number_change = sbac_tac then bCalcul=7

    gosub ActiveKeyTimer
  end_if
return

' Calculs divers
Calc:
  bac_longueur = val(text$(sbac_longueur))
  bac_hauteur = val(text$(sbac_hauteur))
  bac_profondeur = val(text$(sbac_profondeur))
  bac_epaisseur = val(text$(sbac_epaisseur))/1000
  ' dimensions internes
  baci_longueur = bac_longueur - ( 2 * bac_epaisseur)
  baci_hauteur = bac_hauteur - bac_epaisseur
  baci_profondeur = bac_profondeur - ( 2 * bac_epaisseur)
  ' calcul du volume brut
  bac_volume = bac_longueur * bac_hauteur * bac_profondeur * 1000
  text sbac_volume,str$(int(bac_volume*10)/10)
  ' calcul du volume interne
  baci_volume =(baci_longueur * baci_hauteur * baci_profondeur) * 1000
  text sbaci_volume,str$(int(baci_volume*10)/10)
  ' calcul du volume des vitres (pour détermination du poids du bac à vide :
  ' la densité pour du verre sodo-calcique de qualité courante est de 2,53.
  ' le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture
  bac_poids = (bac_volume - baci_volume) * 2.53
  text sbac_poids,str$(int(bac_poids*100)/100)
  ' calcul du nombre de litre / cm
  baci_cm = baci_longueur * baci_profondeur * 10
  text sbaci_cm, str$(int(baci_cm*100)/100)
  select bCalcul
      case 1: gosub Celsius2Fahrenheit : ' celsius
      case 2: gosub Kelvin2Celsius    : ' kelvin
      case 3: gosub Fahrenheit2Celcius : ' fahrenheit
      case 4: gosub Th2Gh : ' TH -> GH
      case 5: gosub Gh2Th : ' GH -> TH
      case 6: gosub Kh2Tac : ' KH -> TAC
      case 7: gosub Tac2Kh : ' TAC -> KH
  end_select
  bCalcul = 0

return
' --------------------------------
' conversion dureté
' --------------------------------
Th2Gh:
  bac_th =val(text$(sbac_th)) : bac_gh = 0.5603 * bac_th
  off_change sbac_gh: text sbac_gh,str$(int(bac_gh*100)/100): on_change sbac_gh,CtrlSaisie
return

Gh2Th:
  bac_gh = val(text$(sbac_gh)) : bac_th = bac_gh / 0.5603
  off_change sbac_th : text sbac_th,str$(int(bac_th*100)/100): on_change sbac_th,CtrlSaisie
return
Kh2Tac:
  bac_kh = val(text$(sbac_kh)): bac_tac = bac_kh * 1.7848
  off_change sbac_tac:text sbac_tac,str$(int(bac_tac*100)/100):on_change sbac_tac,CtrlSaisie
return
Tac2Kh:
  bac_tac = val(text$(sbac_tac)) : bac_kh = bac_tac / 1.7848
  off_change sbac_kh:text sbac_kh,str$(int(bac_kh*100)/100):on_change sbac_kh,CtrlSaisie
return
' --------------------------------
' conversion Celsius / Fahrenheit
' --------------------------------
Celsius2Fahrenheit:
  bac_celsius = val(text$(sbac_celsius))
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  bac_kelvin = bac_celsius + 273.15 : ' 1 °C = 273.15 kelvin
  off_change sbac_fahrenheit : off_change sbac_kelvin
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_fahrenheit, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return

' --------------------------------
' conversion Fahrenheit / Celsius
' --------------------------------
Fahrenheit2Celcius:
  bac_fahrenheit = val(text$(sbac_fahrenheit))
  bac_celsius = (bac_fahrenheit - 32) * 5 / 9
  bac_kelvin =  bac_celsius + 273.15
  off_change sbac_celsius: off_change sbac_kelvin
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return
' --------------------------------
' conversion Kelvin
' --------------------------------
Kelvin2Celsius:
  bac_kelvin = val(text$(sbac_kelvin))
  bac_celsius = bac_kelvin - 273.15
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  off_change sbac_celsius:off_change sbac_fahrenheit
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_fahrenheit, CtrlSaisie
return

ActiveKeyTimer:
  TIMER_OFF KeyboardTimer%
  TIMER_INTERVAL KeyboardTimer%, 1200 : ' réarme la bdt du timer
  TIMER_ON KeyboardTimer%
RETURN

KeyboardTimer:
  TIMER_OFF KeyboardTimer%  : ' désactive
  GOSUB Calc
RETURN
On tombe sur le message d'erreur : "KEYBOARDTIMER% is not a valid floating point value."
Ok, sachant que le problème ne vient pas de là, je décide de déplacer les lignes ci-dessous tout en haut du prog juste après la déclaration des labels...
Code:
DIM KeyboardTimer%  : KeyboardTimer% = 1000
TIMER KeyboardTimer% : TIMER_OFF KeyboardTimer% : TIMER_INTERVAL KeyboardTimer%,3000
ON_TIMER KeyboardTimer%,KeyboardTimer

J'obtiens le message :
Not correct Arithmetic Expression: OBJECT Does not exist. Line 135
c'est la 2eme ligne qui se trouve dans la procédure Calc :
Code:
 bac_hauteur = val(text$(sbac_hauteur))

Ok, le problème ne proviens pas de là mais le message d'erreur est peut être correct...
je m'explique:
Si on regarde bien le code, j'ai mis en commentaire toute une série de on_change. J'ai voulu remplacer ceci par un simple on_change dans la boucle "for j" qui se trouve juste au dessus (j'ai mis un commentaire sur cette ligne). Mon idée: comme un peu ecrire des expressions dans des datas et qu'apparemment cela ne pose pas de problème pour créer des objets EDIT, je me suis dis que je pouvais faire pareil pour la déclaration des évènements...
Ben... ça marche pas ! Smile
Si on met cette fameuse ligne en commentaire :
Code:
on_change value,CtrlSaisie : ' <---- C'est cette ligne qui provoque l'erreur
et qu'on revalide la série de on_change après, le programme fonctionne à merveille!...

Conclusion :
Je dois donc déclarer individuellement chaque évènement.
OK... c'est pas grave...
Là où c'est un peu plus gênant c'est que Panoramic signale une erreur mais qu'il n'est pas capable d'identifier la nature et la ligne où c'est produit cette erreur... scratch il part en choucroute (c'est pas de la chto...stoeffer Very Happy ) et affiche des messages d'erreurs farfelus... drunken

PS : J'ai fait un test avec le mode TRACE_ON, cela n'apporte pas le moindre indice...


Dernière édition par Nardo26 le Jeu 1 Déc 2011 - 18:07, édité 1 fois
Revenir en haut Aller en bas
http://nardo26.lescigales.org
659_minifly




Nombre de messages : 590
Age : 75
Localisation : Valenciennes Nord
Date d'inscription : 29/04/2010

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 20:06

Salut Nardo
ce serait pas un mot réservé par hasard ?
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 20:10

Hello minifly !
non non, c'est bien cette ligne:
Code:
on_change value,CtrlSaisie
Si tu l'a met en commentaire, il n'y a plus de problème.... scratch
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Jack
Admin
Jack


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 20:57

Il n'y a aucune raison que tu ne puisses pas mettre cette ligne dans la boucle for:
Code:
on_change value,CtrlSaisie
On dirait qu'une erreur est détectée à la sortie de cette boucle for.

Je regarde ce problème, mais je n'ai pas beaucoup de temps libre, car je suis en déplacement dans ma chère Arabie Saoudite.
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 21:17

Pas de problème Jack ! Wink
J'ai contourné le problème... donc ça presse pas...
C'est juste une remontée d'info... Wink
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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 22:06

Pour avancer dans le smilblik...
En effet, le on_change value,CtrlSaisie fonctionne suivant où il se situe dans la boucle for...

Extrait:
Code:

for i = 1 to nb_cont
  read id_cont: container id_cont : read txt$: caption id_cont,txt$
  read value: left id_cont,value  : read value: top id_cont,value
  read nb_ele : height id_cont,((nb_ele+1)*20)+10 : width id_cont,200
  for j=1 to nb_ele
    read txt$ : read value
    edit value : left value, 118+10 : top value,(20*j):width value, 50: parent value,id_cont
    on_change value,CtrlSaisie  : ' <-- là plantage
    alpha value+1 : caption value+1, txt$ : left value+1, 10 : top value+1,top(value)+5 : parent value+1, id_cont
    read value2: text value, str$(value2)
    if (value2=0)
      color value,200,255,200
      inactive value
    end_if
    read txt$:hint value,txt$
    ' on_change value,CtrlSaisie : ' <--- ici pas de problème
  next j
next i
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 22:50

Bonsoir,
Je regarde le bout de code que tu as, le dernier, le premier étant trop long, et j'ai pas le temps.

Je crois avoir compris, mais avec qu'une partie du code, ce n'est pas suffisant pour être affirmatif.

Je l'ai expliqué plusieurs fois.

Tu définis un EDIT, et tu lui mets de suite un ON_CHANGE. Ors ensuite tu y mets du texte dedans par
Citation :
text value, str$(value2)
, et là il y a problème, car par ce bout de code tu fais réagir le on_change.
Est-ce tout est bien défini à ce moment là pour que ça fonctionne?
Le fonctionnement du code par on_change est-il valide?.

Prends l'habitude de mettre les on_change, comme les timer vers la fin, en tout cas lorsque cela est défini. , Sinon il m'arrive de devoir mettre un texte dans un edit, et je ne veux pas qu'il y ait interaction, donc à ce moment là, je mets: off_change..., et une fois le texte mis en place, je rétabli le on_change.

As toi de voir si cela correspond à ce cas de figure.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 23:00

Merci cosmos pour ta réponse.
Bien que tous les objets ne soient pas définis, l'évènement on_change provoqué par TEXT ne devrait pas planter...
La procédure CtrlSaisie quand à elle est bien définie...

J'ai amélioré la lisibilité de mon code :
Code:

hide 0

LABEL KeyboardTimer, ActiveKeyTimer,CtrlSaisie

LABEL Calc
LABEL Celsius2Fahrenheit,Kelvin2Celsius,Fahrenheit2Celcius
LABEL Gh2Th,Th2Gh,Tac2Kh,Kh2Tac

' timer pour traitement de saisie des champs
DIM KeyboardTimer%  : KeyboardTimer% = 1000
TIMER KeyboardTimer% : TIMER_OFF KeyboardTimer% : TIMER_INTERVAL KeyboardTimer%,3000
ON_TIMER KeyboardTimer%,KeyboardTimer


' --------------------------------------------
' Variables de calcul
' --------------------------------------------
dim bac_hauteur,bac_longueur,bac_profondeur,bac_epaisseur
dim bac_volume,bac_poids
dim bac_celsius,bac_kelvin,bac_fahrenheit
dim bac_th,bac_gh,bac_kh,bac_tac

dim baci_hauteur,baci_longueur,baci_profondeur
dim baci_cm,baci_volume

' --------------------------------------------
'    Définition du formulaire de saisie
' --------------------------------------------

dim bCalcul

' construction des champs
dim i,j
dim nb_cont,id_cont: nb_cont=5
dim nb_ele
dim txt$,value,value2

data 1,"Dimensions",10,10,4 : ' n° Container, left, top, nb d'element
dim sbac_longueur  : sbac_longueur  = 100 : data "Longueur  (m) :",sbac_longueur,1.5,""
dim sbac_hauteur  : sbac_hauteur  = 102 : data "Hauteur    (m) :",sbac_hauteur,0.5,""
dim sbac_profondeur: sbac_profondeur= 104 : data "Profondeur (m) :",sbac_profondeur,0.5,""
dim sbac_epaisseur : sbac_epaisseur = 106 : data "Epaisseur du verre (mm) :",sbac_epaisseur,8,"Note:la densité pour du verre sodo-calcique de qualité courante est de 2,53"

data 2,"Volumes",left(1)+width(1)+10,10,4
dim sbac_volume    : sbac_volume    = 108 : data "Volume brut (litre)  :",sbac_volume,0,""
dim sbaci_volume  : sbaci_volume  = 110 : data "Volume interne (litre):",sbaci_volume,0,""
dim sbac_poids    : sbac_poids    = 112 : data "Poids à vide (kg):",sbac_poids,0,"le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture"
dim sbaci_cm      : sbaci_cm      = 114 : data "Nb litres/cm:",sbaci_cm,0,""

data 3,"Temperatures",10,top(1)+height(1)+10,3
dim sbac_celsius  : sbac_celsius  = 116 : data "Celsius  :",sbac_celsius,26,""
dim sbac_fahrenheit: sbac_fahrenheit= 118 : data "Fahrenheit:",sbac_fahrenheit,78.8,""
dim sbac_kelvin    : sbac_kelvin    = 120 : data "Kelvin    :",sbac_kelvin,299.15,""

data 4,"Dureté carbonaté (temporaire)",left(3)+width(3)+10,top(3),2
dim sbac_tac      : sbac_tac      = 122 : data "T.A.C          (°f):",sbac_tac,10,"Titre Alcalimétrique"
dim sbac_kh        : sbac_kh        = 124 : data "KH              (°d):",sbac_kh,10,"Karbonat Härte"

data 5,"Dureté totale",10,top(3)+height(3)+10,2
dim sbac_gh        : sbac_gh        = 126 : data "GH (°d)",sbac_gh,10,"Gesamthärte"
dim sbac_th        : sbac_th        = 128 : data "TH (°f)",sbac_th,10,"titre hydrotimétrique"

for i = 1 to nb_cont
  read id_cont: container id_cont : read txt$: caption id_cont,txt$
  read value: left id_cont,value  : read value: top id_cont,value
  read nb_ele : height id_cont,((nb_ele+1)*20)+10 : width id_cont,200
  for j=1 to nb_ele
    read txt$ : read value
    edit value : left value, 118+10 : top value,(20*j):width value, 50: parent value,id_cont
    ' on_change value,CtrlSaisie : ' <--- ici problème

    alpha value+1 : caption value+1, txt$ : left value+1, 10 : top value+1,top(value)+5 : parent value+1, id_cont
    read value2: text value, str$(value2)
    if (value2=0)
      color value,200,255,200
      inactive value
    end_if
    read txt$:hint value,txt$
    on_change value,CtrlSaisie : ' <--- ici pas de problème
  next j
next i



gosub Calc
show 0
END

' ===============================================================================================
' ===============================================================================================
' ----------------------------------------------------------------
' Edition
' ----------------------------------------------------------------
CtrlSaisie:
  if numeric(text$(number_change)) = 1
    if number_change = sbac_celsius then bCalcul=1
    if number_change = sbac_kelvin  then bCalcul=2
    if number_change = sbac_fahrenheit then bCalcul=3
    if number_change = sbac_th then bCalcul=4
    if number_change = sbac_gh then bCalcul=5
    if number_change = sbac_kh then bCalcul=6
    if number_change = sbac_tac then bCalcul=7
    ' dommage qu'on puisse pas faire :
    ' select number_change
    '  case sbac_kelvin: ...
    '  case sbac_celsius: ....
    '  ...
    ' end_select
    gosub ActiveKeyTimer
  end_if
return

' Calculs divers
Calc:
  bac_longueur = val(text$(sbac_longueur))
  bac_hauteur = val(text$(sbac_hauteur))
  bac_profondeur = val(text$(sbac_profondeur))
  bac_epaisseur = val(text$(sbac_epaisseur))/1000
  ' dimensions internes
  baci_longueur = bac_longueur - ( 2 * bac_epaisseur)
  baci_hauteur = bac_hauteur - bac_epaisseur
  baci_profondeur = bac_profondeur - ( 2 * bac_epaisseur)
  ' calcul du volume brut
  bac_volume = bac_longueur * bac_hauteur * bac_profondeur * 1000
  text sbac_volume,str$(int(bac_volume*10)/10)
  ' calcul du volume interne
  baci_volume =(baci_longueur * baci_hauteur * baci_profondeur) * 1000
  text sbaci_volume,str$(int(baci_volume*10)/10)
  ' calcul du volume des vitres (pour détermination du poids du bac à vide :
  ' la densité pour du verre sodo-calcique de qualité courante est de 2,53.
  ' le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture
  bac_poids = (bac_volume - baci_volume) * 2.53
  text sbac_poids,str$(int(bac_poids*100)/100)
  ' calcul du nombre de litre / cm
  baci_cm = baci_longueur * baci_profondeur * 10
  text sbaci_cm, str$(int(baci_cm*100)/100)
  select bCalcul
      case 1: gosub Celsius2Fahrenheit : ' celsius
      case 2: gosub Kelvin2Celsius    : ' kelvin
      case 3: gosub Fahrenheit2Celcius : ' fahrenheit
      case 4: gosub Th2Gh : ' TH -> GH
      case 5: gosub Gh2Th : ' GH -> TH
      case 6: gosub Kh2Tac : ' KH -> TAC
      case 7: gosub Tac2Kh : ' TAC -> KH
  end_select
  bCalcul = 0

return
' --------------------------------
' conversion dureté
' --------------------------------
Th2Gh:
  bac_th =val(text$(sbac_th)) : bac_gh = 0.5603 * bac_th
  off_change sbac_gh: text sbac_gh,str$(int(bac_gh*100)/100): on_change sbac_gh,CtrlSaisie
return
Gh2Th:
  bac_gh = val(text$(sbac_gh)) : bac_th = bac_gh / 0.5603
  off_change sbac_th : text sbac_th,str$(int(bac_th*100)/100): on_change sbac_th,CtrlSaisie
return
Kh2Tac:
  bac_kh = val(text$(sbac_kh)): bac_tac = bac_kh * 1.7848
  off_change sbac_tac:text sbac_tac,str$(int(bac_tac*100)/100):on_change sbac_tac,CtrlSaisie
return
Tac2Kh:
  bac_tac = val(text$(sbac_tac)) : bac_kh = bac_tac / 1.7848
  off_change sbac_kh:text sbac_kh,str$(int(bac_kh*100)/100):on_change sbac_kh,CtrlSaisie
return

' --------------------------------
' conversion Celsius / Fahrenheit
' --------------------------------
Celsius2Fahrenheit:
  bac_celsius = val(text$(sbac_celsius))
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  bac_kelvin = bac_celsius + 273.15 : ' 1 °C = 273.15 kelvin
  off_change sbac_fahrenheit : off_change sbac_kelvin
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_fahrenheit, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return

' --------------------------------
' conversion Fahrenheit / Celsius
' --------------------------------
Fahrenheit2Celcius:
  bac_fahrenheit = val(text$(sbac_fahrenheit))
  bac_celsius = (bac_fahrenheit - 32) * 5 / 9
  bac_kelvin =  bac_celsius + 273.15
  off_change sbac_celsius: off_change sbac_kelvin
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return
' --------------------------------
' conversion Kelvin
' --------------------------------
Kelvin2Celsius:
  bac_kelvin = val(text$(sbac_kelvin))
  bac_celsius = bac_kelvin - 273.15
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  off_change sbac_celsius:off_change sbac_fahrenheit
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_fahrenheit, CtrlSaisie
return

ActiveKeyTimer:
  TIMER_OFF KeyboardTimer%
  TIMER_INTERVAL KeyboardTimer%, 1200 : ' réarme la bdt du timer
  TIMER_ON KeyboardTimer%
RETURN

KeyboardTimer:
  TIMER_OFF KeyboardTimer%  : ' désactive
  GOSUB Calc
RETURN


EDIT:
Rectification, tu as peut être raison cosmos ! mais je ne comprend pas pourquoi cela ne plante pas en fin de boucle...

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




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 23:27

Cela me donne raison.
Par on change, et les timer, en suivant le code, tout n'est pas défini.
J'ai rajouté des messages, et on voit au départ que dans la boucle for/next il prend la valeur de value qui est 100, du fait de mettre on_change,il y a traitement du code avec le timer, et on arrive à la ligne :
Code:
  bac_hauteur = val(text$(sbac_hauteur))
qui a la valeur 102, valeur pas encore lu dans la boucle for/next.

Code:
hide 0

LABEL KeyboardTimer, ActiveKeyTimer,CtrlSaisie

LABEL Calc
LABEL Celsius2Fahrenheit,Kelvin2Celsius,Fahrenheit2Celcius
LABEL Gh2Th,Th2Gh,Tac2Kh,Kh2Tac

' timer pour traitement de saisie des champs
DIM KeyboardTimer%  : KeyboardTimer% = 1000
TIMER KeyboardTimer% : TIMER_OFF KeyboardTimer% : TIMER_INTERVAL KeyboardTimer%,3000
ON_TIMER KeyboardTimer%,KeyboardTimer


' --------------------------------------------
' Variables de calcul
' --------------------------------------------
dim bac_hauteur,bac_longueur,bac_profondeur,bac_epaisseur
dim bac_volume,bac_poids
dim bac_celsius,bac_kelvin,bac_fahrenheit
dim bac_th,bac_gh,bac_kh,bac_tac

dim baci_hauteur,baci_longueur,baci_profondeur
dim baci_cm,baci_volume

' --------------------------------------------
'    Définition du formulaire de saisie
' --------------------------------------------

dim bCalcul

' construction des champs
dim i,j
dim nb_cont,id_cont: nb_cont=5
dim nb_ele
dim txt$,value,value2

data 1,"Dimensions",10,10,4 : ' n° Container, left, top, nb d'element
dim sbac_longueur  : sbac_longueur  = 100 : data "Longueur  (m) :",sbac_longueur,1.5,""
dim sbac_hauteur  : sbac_hauteur  = 102 : data "Hauteur    (m) :",sbac_hauteur,0.5,""
dim sbac_profondeur: sbac_profondeur= 104 : data "Profondeur (m) :",sbac_profondeur,0.5,""
dim sbac_epaisseur : sbac_epaisseur = 106 : data "Epaisseur du verre (mm) :",sbac_epaisseur,8,"Note:la densité pour du verre sodo-calcique de qualité courante est de 2,53"

data 2,"Volumes",left(1)+width(1)+10,10,4
dim sbac_volume    : sbac_volume    = 108 : data "Volume brut (litre)  :",sbac_volume,0,""
dim sbaci_volume  : sbaci_volume  = 110 : data "Volume interne (litre):",sbaci_volume,0,""
dim sbac_poids    : sbac_poids    = 112 : data "Poids à vide (kg):",sbac_poids,0,"le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture"
dim sbaci_cm      : sbaci_cm      = 114 : data "Nb litres/cm:",sbaci_cm,0,""

data 3,"Temperatures",10,top(1)+height(1)+10,3
dim sbac_celsius  : sbac_celsius  = 116 : data "Celsius  :",sbac_celsius,26,""
dim sbac_fahrenheit: sbac_fahrenheit= 118 : data "Fahrenheit:",sbac_fahrenheit,78.8,""
dim sbac_kelvin    : sbac_kelvin    = 120 : data "Kelvin    :",sbac_kelvin,299.15,""

data 4,"Dureté carbonaté (temporaire)",left(3)+width(3)+10,top(3),2
dim sbac_tac      : sbac_tac      = 122 : data "T.A.C          (°f):",sbac_tac,10,"Titre Alcalimétrique"
dim sbac_kh        : sbac_kh        = 124 : data "KH              (°d):",sbac_kh,10,"Karbonat Härte"

data 5,"Dureté totale",10,top(3)+height(3)+10,2
dim sbac_gh        : sbac_gh        = 126 : data "GH (°d)",sbac_gh,10,"Gesamthärte"
dim sbac_th        : sbac_th        = 128 : data "TH (°f)",sbac_th,10,"titre hydrotimétrique"

for i = 1 to nb_cont

  read id_cont: container id_cont : read txt$: caption id_cont,txt$
  read value: left id_cont,value  : read value: top id_cont,value
  read nb_ele : height id_cont,((nb_ele+1)*20)+10 : width id_cont,200
 
  for j=1 to nb_ele
    read txt$ : read value  :message value
    ' --
    edit value : left value, 118+10 : top value,(20*j):width value, 50: parent value,id_cont
    on_change value,CtrlSaisie : ' <--- ici problème
    ' --

    alpha value+1 : caption value+1, txt$ : left value+1, 10 : top value+1,top(value)+5 : parent value+1, id_cont
    ' --
    read value2: text value, str$(value2)
    if (value2=0)
      color value,200,255,200
      inactive value
    end_if
    read txt$:hint value,txt$
  ' on_change value,CtrlSaisie : ' <--- ici pas de problème
  next j
next i



gosub Calc
show 0
END

' ===============================================================================================
' ===============================================================================================
' ----------------------------------------------------------------
' Edition
' ----------------------------------------------------------------
CtrlSaisie:
  if numeric(text$(number_change)) = 1
    if number_change = sbac_celsius then bCalcul=1
    if number_change = sbac_kelvin  then bCalcul=2
    if number_change = sbac_fahrenheit then bCalcul=3
    if number_change = sbac_th then bCalcul=4
    if number_change = sbac_gh then bCalcul=5
    if number_change = sbac_kh then bCalcul=6
    if number_change = sbac_tac then bCalcul=7

    gosub ActiveKeyTimer
  end_if
return

' Calculs divers
Calc:
  bac_longueur = val(text$(sbac_longueur))
  message "116: "+str$(sbac_hauteur)
  bac_hauteur = val(text$(sbac_hauteur))
  bac_profondeur = val(text$(sbac_profondeur))
  bac_epaisseur = val(text$(sbac_epaisseur))/1000
  ' dimensions internes
  baci_longueur = bac_longueur - ( 2 * bac_epaisseur)
  baci_hauteur = bac_hauteur - bac_epaisseur
  baci_profondeur = bac_profondeur - ( 2 * bac_epaisseur)
  ' calcul du volume brut
  bac_volume = bac_longueur * bac_hauteur * bac_profondeur * 1000
  text sbac_volume,str$(int(bac_volume*10)/10)
  ' calcul du volume interne
  baci_volume =(baci_longueur * baci_hauteur * baci_profondeur) * 1000
  text sbaci_volume,str$(int(baci_volume*10)/10)
  ' calcul du volume des vitres (pour détermination du poids du bac à vide :
  ' la densité pour du verre sodo-calcique de qualité courante est de 2,53.
  ' le poids ne tient pas compte du poids des renforts, des entretoises, raidisseurs et verre de couverture
  bac_poids = (bac_volume - baci_volume) * 2.53
  text sbac_poids,str$(int(bac_poids*100)/100)
  ' calcul du nombre de litre / cm
  baci_cm = baci_longueur * baci_profondeur * 10
  text sbaci_cm, str$(int(baci_cm*100)/100)
  select bCalcul
      case 1: gosub Celsius2Fahrenheit : ' celsius
      case 2: gosub Kelvin2Celsius    : ' kelvin
      case 3: gosub Fahrenheit2Celcius : ' fahrenheit
      case 4: gosub Th2Gh : ' TH -> GH
      case 5: gosub Gh2Th : ' GH -> TH
      case 6: gosub Kh2Tac : ' KH -> TAC
      case 7: gosub Tac2Kh : ' TAC -> KH
  end_select
  bCalcul = 0

return
' --------------------------------
' conversion dureté
' --------------------------------
Th2Gh:
  bac_th =val(text$(sbac_th)) : bac_gh = 0.5603 * bac_th
  off_change sbac_gh: text sbac_gh,str$(int(bac_gh*100)/100): on_change sbac_gh,CtrlSaisie
return
Gh2Th:
  bac_gh = val(text$(sbac_gh)) : bac_th = bac_gh / 0.5603
  off_change sbac_th : text sbac_th,str$(int(bac_th*100)/100): on_change sbac_th,CtrlSaisie
return
Kh2Tac:
  bac_kh = val(text$(sbac_kh)): bac_tac = bac_kh * 1.7848
  off_change sbac_tac:text sbac_tac,str$(int(bac_tac*100)/100):on_change sbac_tac,CtrlSaisie
return
Tac2Kh:
  bac_tac = val(text$(sbac_tac)) : bac_kh = bac_tac / 1.7848
  off_change sbac_kh:text sbac_kh,str$(int(bac_kh*100)/100):on_change sbac_kh,CtrlSaisie
return

' --------------------------------
' conversion Celsius / Fahrenheit
' --------------------------------
Celsius2Fahrenheit:
  bac_celsius = val(text$(sbac_celsius))
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  bac_kelvin = bac_celsius + 273.15 : ' 1 °C = 273.15 kelvin
  off_change sbac_fahrenheit : off_change sbac_kelvin
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_fahrenheit, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return

' --------------------------------
' conversion Fahrenheit / Celsius
' --------------------------------
Fahrenheit2Celcius:
  bac_fahrenheit = val(text$(sbac_fahrenheit))
  bac_celsius = (bac_fahrenheit - 32) * 5 / 9
  bac_kelvin =  bac_celsius + 273.15
  off_change sbac_celsius: off_change sbac_kelvin
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_kelvin,str$(int(bac_kelvin*100)/100)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_kelvin, CtrlSaisie
return
' --------------------------------
' conversion Kelvin
' --------------------------------
Kelvin2Celsius:
  bac_kelvin = val(text$(sbac_kelvin))
  bac_celsius = bac_kelvin - 273.15
  bac_fahrenheit = 32 + (9 * bac_celsius) / 5
  off_change sbac_celsius:off_change sbac_fahrenheit
      text sbac_celsius,str$(int(bac_celsius*10)/10)
      text sbac_fahrenheit,str$(int(bac_fahrenheit*10)/10)
  on_change sbac_celsius, CtrlSaisie : on_change sbac_fahrenheit, CtrlSaisie
return

ActiveKeyTimer:
  TIMER_OFF KeyboardTimer%
  TIMER_INTERVAL KeyboardTimer%, 1200 : ' réarme la bdt du timer
  TIMER_ON KeyboardTimer%
RETURN

KeyboardTimer:
  TIMER_OFF KeyboardTimer%  : ' désactive
  GOSUB Calc
RETURN
il faut éviter de mettre on_change dans un listing, tant que tout n'est pas défini.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 23:34

Tu as raison et le fait de mettre le on_change après le TEXT ne pose plus de pb...
Wink
merci cosmos,
Je suis encore un peu rouillé... Very Happy
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyDim 16 Oct 2011 - 23:44

Oui c'est pas évident avec les instructions qu'on croit mettre pour faire le code, et qui s'active alors que tout n'est pas défini.
Crois moi, je suis passé par là, ce qui me permet de te répondre.

Je me fais pas de soucis pour toi, tu es expert. Moi j'apprend comme je peux, en faisant plein d'erreurs et en cherchant pourquoi.

Ce qui serait bien je pense, c'est d'avoir une instruction d'activation pour les objets qui fonctionnent en arrière plan. Lorsqu'on arrive au END, si les instructions TIMER_OFF et OFF_CHANGE ne sont pas précisés, ces objets s'activent.
Dans le cas où le END n'existe pas, le code d'activation permettrait la mise en route de ceux-ci.
Là votre avis compte aussi.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 0:04

Pourquoi pas ?
ou une fonction d'ordre plus générale:
par exemple dans mon prog j'ai ceci:
Code:

Th2Gh:
  bac_th =val(text$(sbac_th)) : bac_gh = 0.5603 * bac_th
  off_change sbac_gh
      text sbac_gh,str$(int(bac_gh*100)/100)
  on_change sbac_gh,CtrlSaisie
return

Je suis obligé de supprimer le on_change, faire ma modif de l'objet et ensuite redéclarer le on_change.
encore dans ce cas, je ne modifie qu'un seul objet, si je devais en modifier 10 il faudrait faire 10 fois la manip...

Des fonctions plus globales genre:
change_off_all : stopperai provisoirement TOUS le mécanisme d'évènement
change_on_all : rétablirai les évènements.
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 0:37

Je suis d'accord sur l'idée, mais pas comme tu le dis.

Bien souvent j'ai plusieurs timer qui fonctionne, et des on_change. Mais voila, je ne les fait pas marcher en même temps. Ce qu'il faut c'est de bloquer tous les objets, et ensuite rétablir les objets timer et on_change qui étaient opérationnel avant. Là je crois que Jack ne suivra pas.

Le plus simple en utilisant pas le bon mot clé, serait d'avoir off_objet 10,11,15 et on_objet 10,11,15 selon le programme. Et à partir de là tu vas me dire, ça revient au même que mettre off_timer... on_change ..., c'est simplement plus court.

Dans mes programmes, j'utilise rarement timer_off_all, sauf dans une procédure d'erreur.
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 0:51

Je suis d'accord avec le principe, mais je pense que ça pourrait être sympa d'avoir des déclaration d'objets liés dans ce cas pour s'y retrouver plus facilement

genre:
DIM ...
LABEL ...
LIST_OBJET Bouttons_Fenetre:10,11,15 => Bouttons_Fenetre est un groupement logique d'objets (bouttons, pictures, timers, ...)
...
OFF_OBJET Bouttons_Fenetre
...
ON_OBJET Bouttons_Fenetre
...



Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 5:14

@Jicehel : le LIST_OBJET correspond en gros à un parent... Wink

Donc en résumé, pour simplifier l'écriture de cosmos et en tenant compte de Jicehel :

OFF_OBJECT Parent
ON_OBJECT Parent


Parent pouvant être un FORM, un CONTAINER ou un CONTAINER_OPTION

Qu'en pensez-vous ?

PS: Je démarre fort, à peine de retour que je propose déjà un mot-clé supplémentaire. Jack va me maudire ! Very Happy

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

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 7:54

Bonne idée Smile
Revenir en haut Aller en bas
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 8:53

Bonjour,
Bon je crois que je vais déplaire à quelques-uns.
Jack a une liste extrêmement rempli de mots-clés qu'on lui demande. Ensuite, sa liste déjà qu'il nous a donné pour nous satisfaire est bien rempli et ce ne sera pas simple pour qu'il soit dans les délais donné. De plus il y a Toonic qui je crois lui tient à coeur avec ses différentes versions. Je crois même que Toonic est plus important pour lui qui apparemment est porté sur les jeux. Surtout je ne dis pas que Panoramic est laissé de côté, je pense même si il y aurait un gout d'inachevé pour un langage, cela s'apparente pour soi-même à un échec.

Panoramic est un langage de haut niveau, et je trouve normal qu'on ajoute des instructions pour pouvoir coder des choses qu'on arrive pas à faire, car il y a une impossibilité avec ce qu'on possède. Je trouve aussi normal que dans le cas d'un programme que l'on fait, une instruction tout bête remplace tout un bouclage d'instruction qui ralentie le processus, soit demandé.

Mais doit-on aussi demander qu'une instruction fasse le programme? Je sais j’exagère dans la formulation. Lorsque je dis que ce serait bien qu'on ait une instruction pour lancer les évènements qui se lance toutes seules à leur écriture, c'est que je pense qu'il y a erreur sur le concept. Cela vient d'arriver à Nardo, qui innocemment fait son codage, en ne voyant pas qu'une fois posé, cette instruction devient opérationnel. Il n'est pas le seul, moi-même je me suis fait avoir avec l'instruction ON_CHANGE, donc je sais de quoi je parle.

ON_CHANGE est une instruction à évènement, et TIMER est un objet à évènement. Il faudrait qu'ils restent inactif tant que le END n'est pas rencontré car dans le cas de Panoramic, c'est cette instruction qui lance les Evènements de Panoramic. Et dans le cas nécessaire ou END n'existe pas, une instruction de remplacement me semble nécessaire.

Je fais souvent de grand programme, et j'essaye de mettre les on_change et timer à la fin. Le problème est que je me demande si le programme va, à la lecture de celui-ci aller jusqu'au bout pour lire tous les branchements, où être détourner avant. Cela m'est déjà arrivé, et j'ai du essayer plusieurs combinaisons pour obtenir la bonne. Donc il y a bien un problème et je ne peux parler de bug, il y a une erreur de conception à ce niveau.

Je pense aussi que les instructions qu'on demande doivent être des instructions qui nous fassent avancer. Demander une instruction simplement pour avoir un ou deux mots en moins à écrire, c'est du superflu. Si je suis resté sur Panoramic, alors que les problèmes je les rencontre continuellement, et parfois cela me met "en boule", c'est l'idée génial de la méthode qu'a trouvé Jack pour la conception du basic. Je sais que certains arrivant ici après avoir programmé avec un autre concept de basic, aimeraient revoir certaines de leurs instructions se retrouver dans Panoramic. Je ne rentre pas dans les détails sur ce qui a été demandé.

J’arrête ici mon baratin, cela devient long. Merci de me lire.
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 9:42

Bonjour cosmos,

Perso tes remarques sont les bienvenues... Wink

On ne remet pas en cause le concept: C'est à nous de faire attention à ce que l'on écrit avant l'instruction END. Là on est tous d'accord ! Je me suis vautré, ok Wink

Pourquoi je parle d'une instruction ON_OBJECT/ OFF_OBJECT, ce n'est pas par fainéantise (quoique.. un programmeur cherchera à écrire le moins de code possible pour arriver à ses fins... Wink )

Mais là dans cet exemple (voir ce qu'il y a d'écrit en dessous du code) ce n'est pas le cas :

Code:

LABEL Traitement1,Traitement2,Traitement3,Traitement4,Traitement5

EDIT 1:TOP 1,20: on_change 1,Traitement1
EDIT 2:TOP 2,40: on_change 2,Traitement2
EDIT 3:TOP 3,60: on_change 3,Traitement3
EDIT 4:TOP 4,80: on_change 4,Traitement4
EDIT 5:TOP 5,100: on_change 5,Traitement5

END

Traitement1:
 ' je modifie les autres champs :
 off_change 2
 off_change 3
 off_change 4
 off_change 5
  text 2,"Modif de 1"
  text 3,"Modif de 1"
  text 4,"Modif de 1"
  text 5,"Modif de 1"
 on_change 2,Traitement2
 on_change 3,Traitement3
 on_change 4,Traitement4
 on_change 5,Traitement5
return

Traitement2:
  ...
return
Traitement3:
  ...
return

Traitement4:
  ...
return

Traitement5:
  ...
return
Dans ce cas, je me suis limité à 5 champs editables: Je suis bien gentil dans cet exemple...

Mais imagine une bonne applic avec plusieurs formulaires qui contiennent chacun une dizaine de champs éditables. Et je ne parle pas des programmes qui font des includes d'autres fichiers qui contiennent à leur tour d'autres formulaires, etc...

Si tu dois dans chaque procédure de traitements, stopper de manière individuelle tous les champ, faire tes modifs et réactiver tous les évènements que tu as stoppé juste avant, cela devient vite une usine à gaz pour ne pas dire un truc insoluble...
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 12:44

Je n'ai jamais fait allusion à ON_OBJECT..., je n'ai pas pris le temps d'y penser. Il était déjà tard, et j'avais autre chose à faire. Je parlais de façon général sur les diverses demandes.

Je me suis souvent posé la question: et si moi aussi je faisais un langage, et même si je suis loin d'être compétent dans ce domaine, je me suis demandé comment je ferais.

Il serait intéressant dans le cas d'un exercice de style, de vouloir en Panoramic faire un nouveau langage, qui n'aurait de sens de comprendre.
Dans les différents problèmes posés pour un langage, il y a la création des objets, la gestion des variables, créations, etc..., mais il y a aussi la gestion des évènements. Et là cela me parait une paire de manches, si vous me comprenez. Tout au long du langage savoir ce qui est en cours, la différente gestion des évènements avec les interruptions...

Aussi est-ce que certaines instructions que nous demandons sont compatibles avec Panoramic? C'est question est apparemment primordiale vu que Jack dit qu'il est obligé de casser Panoramic pour pouvoir faire des instructions de fonction et autre.

Donc moi je limite mes demandes à ce que je crois possible. Empêcher un timer ou on_change de fonctionner avant le END, cela me parait faisable, et une instruction pour les démarrer aussi. Quant au reste ça me dépasse sans au moins prendre le temps de la réflexion.

Y s'y on se faisait un langage, juste pour voir? Surprised
Revenir en haut Aller en bas
Jicehel

Jicehel


Nombre de messages : 5947
Age : 51
Localisation : 77500
Date d'inscription : 18/04/2011

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 14:04

C'est l'interet des forums, pouvoir exposer ces idées et contribuer à faire évoluer un langage (puisque l'on a quelqu'un qui est occupé, mais qui écoute). Si la demande est réaliste et va dans le sens ou Jack veut faire évoluer son langage, il le fait. Après, il ne faut pas se prendre la tête, Jack les implémente quand il le veut et que cela est possible et cohérent avec son projet du moment.

Par exemple, les fonctions et procédures sont demandées depuis longtemps, mais cela ne correspondait pas à l'idée que Jack avait de là où il voulait conduire son langage ou cela semblait difficile à mettre, mais au fil du temps à priori, il a évolué fait évoluer son point de vu sur le sujet ou il a vu un moyen de le mettre en place et il a décidé de l'ajouter.

Je pense qu'il ne faut pas brider son imagination ou ses demandes. Nous avons la chance d'avoir un arbitre pour le faire et un lieu pour en discuter Smile
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 14:10

@cosmos :

Créer un langage de programmation n'est pas quelque chose d'aisé.

Cependant la discution de ce sujet a dérivé tout naturellement vers cette idée d'ajout d'une fonction permettant de stopper les évènement liés à un "container".

Ce n'est pas une demande, car j'aurais rajouter dans ce cas, un nouveau sujet dans "Demande d'amélioration". Actuellement j'arrive à m'en passer... Cependant, je ne pense pas que la mise en place d'une telle fonction soit quelque chose de compliqué, je me trompe peut être, mais vu que la notion de parent existe déjà dans le noyau de Panoramic...

Maintenant, Jack lira un jour ou l'autre ce post et s'il estime que cela apporte un plus au langage, ce sera lui qui décidera au final (et encore heureux, car c'est son bébé !) si cela vaut le coup de la faire ou non... c'est juste une idée en l'air...

Quand aux passages de paramètres dans une procédure ou un appel de fonction, c'est vraiment quelque chose de compliqué quand cela n'a pas été prévu dès le départ... car cela oblige de remanier une grande partie du code existant et d'aborder le noyau sous un autre angle...

A un moment donné, Klaus, moi et quelques autres nous avions harcelé Jack concernant ce sujet de passage de paramètres. On a même déliré un petit moment sur la possibilité de simuler ce passage (tu en faisais partie il me semble Wink ), mais je pense qu'à aucun moment nous avions été dupes sur la difficulté de réaliser une telle chose...
et je me garderai bien de dire que c'est "peanuts" à réaliser !!!
Wink

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




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 14:49

Excusez ma question. J'allais fermé, lorsque je vois au dessus de la fenêtre ceci: (dans la feuille de Panoramic)
Detection V:2, loaded:10218.73.247, site:7124, url:Bho-Speedbit3.

Avez-vous cela, quelqu'un a une idée?
Revenir en haut Aller en bas
Nardo26

Nardo26


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

[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 14:56


Je serai toi: je ferai une mise à jour de l'anti-virus puis je redemarerai le PC en mode sans echec sans connection réseau puis je lancerai une bonne analyse...
Neutral
Revenir en haut Aller en bas
http://nardo26.lescigales.org
Invité
Invité




[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre EmptyLun 17 Oct 2011 - 19:50

Merci, c'est fait. 2heures de scan
@+
Revenir en haut Aller en bas
Contenu sponsorisé





[Résolu] Un truc assez bizarre Empty
MessageSujet: Re: [Résolu] Un truc assez bizarre   [Résolu] Un truc assez bizarre Empty

Revenir en haut Aller en bas
 
[Résolu] Un truc assez bizarre
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» HEX$() suite et truc bizarre...
» Un petit truc bizarre...
» Bizarre bizarre est-ce un bug du langage ? (résolu)
» @ Jack et Klaus - Bizarre Bizarre, vous avez dit bizarre ?!
» version instantanée du 5 décembre 2009

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: