problemes avec mon text ... snif...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
chercheacomprendre
Messages : 72
Inscription : dim. 15/févr./2009 10:59

problemes avec mon text ... snif...

Message par chercheacomprendre »

bonjour, j'ai essayé de mettre du texte sur mes entrées de valeurs mais je n'y arrive pas ! ...
yves.

Code : Tout sélectionner

;*********************************** 
;*********************************** 
;*********************************** 
; Calcul de la valeur de la self à air 
; 
; du code de Ollivier le 15 fev 09
;*********************************** 
; (3/4) On programme le calcul 
;*********************************** 
;*********************************** 

;=================================== 
; INITIALISATION 
;=================================== 
#FenetreTest = 1 
#StyleStandard = $CF0001

Enumeration 
#Entree1 
#Entree2 
#Entree3
#Entree4
#Sortie1
#Text_0
#Text_1
#Text_2
#Text_3
#Text_4

EndEnumeration 

Define Event0.L 

Define a.D ; diametre du mandrin interieur en cm
Define c.D  ;diametre du fil émaillé en cm
Define b.D ; longueur de la self en cm
Define N .D  ; nombre de spires     a voir pour valeur entière ?
Define L.D ; valeur de la self en µH 
  
Define GadgetCurseurY.L 

;=================================== 
; DEMARRAGE 
;=================================== 
If OpenWindow(#FenetreTest, 0, 0, 450, 96, "calcul de self à air ", #StyleStandard) 

   GadgetCurseurY = 16 
   StringGadget(#Entree1, 350, GadgetCurseurY, 50, 24, "") 
   TextGadget (#Text_0,10,250,20,20 ," entrer la valeur du mandrin en mm = ")

   GadgetCurseurY + 32 
   StringGadget(#Entree2, 350, GadgetCurseurY, 50, 24, "") 
   TextGadget (#Text_1,50,16,20,20," entrer la valeur du diametre du fil émaillé en mm =")
   
   GadgetCurseurY + 32 
StringGadget(#Entree3, 350, GadgetCurseurY, 50, 24, "") 
TextGadget (#Text_2,50,16,20,20,"entrer la valeur de la longueur totale de la self en mm=")

GadgetCurseurY + 32 
StringGadget(#Entree4, 350, GadgetCurseurY, 50, 24, "") 
TextGadget (#Text_3,50,16,20,20,"entrer le nombre de spires totales =")


   GadgetCurseurY + 32 
   StringGadget(#Sortie1, 350, GadgetCurseurY, 50, 24, "") 
   TextGadget (#Text_4,50,16,20,20," La valeur de la self calculée en µH est de =")
   

   ResizeWindow(#FenetreTest, #PB_Ignore, #PB_Ignore, #PB_Ignore, 32 + GadgetCurseurY) 

EndIf 

;=================================== 
; BOUCLE PRINCIPALE 
;=================================== 
Repeat 


   ; On attend un événement système... 
   Event0 = WaitWindowEvent() ; ...stocké dans Event0 

    
     ; On récupère le diametre du mandrin en mm
     a = ValD(GetGadgetText(#Entree1) ) 
     ; On récupère le diametre du fil emaille en mm
     c = ValD(GetGadgetText(#Entree2) ) 
   
     ;On récupère la longueur de la self en mm
     b = ValD(GetGadgetText(#Entree3) )
     ;On récupère le nombre de spires 
     n = ValD(GetGadgetText(#Entree4) )
   
   ; conversion des cm en mm pour les entrées.
   a=a/10
   b=b/10
   c=c/10
   ; calcul de la valeur de la variable a en fonction du mandrin interieur.
   a=a+c
   
   
   ; On fait le calcul
   
   L=1.29*(a*a)*(n*n) / (7.62*a+22.86*b+25.4*c)
   
   
    
    
   ; On le place dans la zone de sortie 
   SetGadgetText(#Sortie1, StrD(L, 3) ) 


   ; On laisse le CPU se reposer un peu...    
   Delay(15) 

; Si l'événement système est une sortie (code 16)... 
Until Event0 = 16 

; ...On ne remonte pas à la ligne REPEAT (début de boucle) 
End
merci de me dire les erreurs ! ...
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

re edit ton message pour voir comment j'ai entouré ton code avec les balises "[ code ] et [/Code ]"

dorénavant tes codes devront être présentés ainsi ;)


bon lorsque je vois une code comme ça , je prends peur !!


1 évite les variables style "L,a,r"

on est pas sur une calculatrice , tu peuc utiliser des variables comme

Longueur.D=20.00 etc ....

"L" c'est pas parlant du tout !!
de plus definir le type en debut de listing, c'est bien
mais l'ideal c'est de le repeter dans le nom de la variable
comme ça lorsque dans 20.000 ans tu retombera sur ton code
au beau millieu tu lira L=X+R , enfin plutot Longueur.d = ecran_x.l + R.d

ce sera plus parlant, et tu n'aura pas a remonter en haut de ton listing pour savoir a quoi correspond ce put*** de L ;)

je regarde ton code pour voir ......
Dernière modification par Backup le lun. 16/févr./2009 18:19, modifié 1 fois.
Cls
Messages : 620
Inscription : mer. 22/juin/2005 8:51
Localisation : Nantes

Message par Cls »

Salut chercheacomprendre,

si tu regardes ton code, et notamment les lignes que tu as rajouté, ex :

Code : Tout sélectionner

TextGadget (#Text_0,10,250,20,20 ," entrer la valeur du mandrin en mm = ")
Tu verras que tout tes TextGadget sont au même endroit. Tu dois réutiliser la valeur de GadgetCurseurY de cette manière par exemple :

Code : Tout sélectionner

TextGadget (#Text_0,10,GadgetCurseurY ,20,20 ," entrer la valeur du mandrin en mm = ")
(non testé)
Avatar de l’utilisateur
MLD
Messages : 1124
Inscription : jeu. 05/févr./2009 17:58
Localisation : Bretagne

Message par MLD »

Bonjour chercheacomprendre
Tu dois être un grand débutant en programmation.
Alors en plus des conseils de Dobro
1° Réalise dabord l'interface visuel de ton logiciel
2° Ensuite programme les calculs et le résultat que tu veut obtenir.
3° Pas de calcul dans la boucle général, car ceux ci sont sans fin.
Commence doucement, et test a chacque étape.
Bon courage.
Backup
Messages : 14526
Inscription : lun. 26/avr./2004 0:40

Message par Backup »

voici comment aurai du être ton code

regarde bien , il te manquais la boucle des events
de la clarté dans tes constante, et tes variables


;{- Enumerations / DataSections
;{ Window
Declare .D calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)

Enumeration
     #Window_0
EndEnumeration
;}
;{ Gadgets
Enumeration
     #String_mandrin
     #titre
     #String_Diametre
     #String_Longueur_total
     #String_nbr_spire
     #String_Total
     #Text_6
     #Text_8
     #Text_9
     #Text_10
     #Text_11
EndEnumeration
;}
;{ Fonts
Enumeration
     #Font_titre
EndEnumeration
;}
Procedure OpenWindow_Window_0()
     If OpenWindow ( #Window_0 , 393, 109, 347, 306, "Window_0" , #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar )
         If CreateGadgetList ( WindowID ( #Window_0 ))
             StringGadget ( #String_mandrin , 285, 75, 60, 25, "000.000" , #PB_String_Numeric )
             TextGadget ( #titre , 60, 10, 220, 35, "Titre" , #PB_Text_Center )
             StringGadget ( #String_Diametre , 285, 110, 60, 25, "00.000" , #PB_String_Numeric )
             StringGadget ( #String_Longueur_total , 285, 145, 60, 25, "000.000" , #PB_String_Numeric )
             StringGadget ( #String_nbr_spire , 285, 180, 60, 25, "000.00" , #PB_String_Numeric )
             StringGadget ( #String_Total , 285, 240, 60, 25, "000.000" , #PB_String_Numeric )
             TextGadget ( #Text_6 , 100, 80, 180, 20, " entrer la valeur du mandrin en mm =" )
             TextGadget ( #Text_8 , 40, 115, 235, 20, "entrer la valeur du diametre du fil émaillé en mm =" )
             TextGadget ( #Text_9 , 15, 150, 260, 20, "entrer la valeur de la longueur totale de la self en mm =" )
             TextGadget ( #Text_10 , 105, 185, 170, 20, "entrer le nombre de spires totales =" )
             TextGadget ( #Text_11 , 65, 245, 210, 20, "La valeur de la self calculée en µH est de =" )
             ; Gadget Fonts
             SetGadgetFont ( #titre , LoadFont ( #Font_titre , "Comic Sans MS" , 18, 16))
            
             ; Your code here ...
            
             ;
          
         EndIf
     EndIf
EndProcedure

OpenWindow_Window_0()


;{- Event loop
Repeat
     ;: PureFORM:Loop:Start:
     Select WaitWindowEvent ()
             ; ///////////////////
         Case #PB_Event_Gadget
             Select EventGadget ()
                 Case #String_mandrin
                    diametre_du_mandrin_interieur_en_cm.D = ValD ( GetGadgetText ( #String_mandrin ) ) ; on recup la valeur des que l'utilisteur y touche
                    diametre_du_mandrin_interieur_en_cm.D=diametre_du_mandrin_interieur_en_cm.D/10
                    diametre_du_mandrin_interieur_en_cm.D=diametre_du_mandrin_interieur_en_cm.D+diametre_du_fil_emaille_en_cm.D
                     If diametre_du_mandrin_interieur_en_cm.D<>0
                         If nombre_de_spires.D<>0
                             If longueur_de_la_self_en_cm.D<>0
                                 If diametre_du_fil_emaille_en_cm.D<>0
                                    valeur_de_la_self_en_mh.D=calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)
                                     SetGadgetText ( #String_Total , StrD (valeur_de_la_self_en_mh.D, 3) )
                                 EndIf
                             EndIf
                         EndIf
                     EndIf
                 Case #titre
                 Case #String_Diametre
                    diametre_du_fil_emaille_en_cm.D = ValD ( GetGadgetText ( #String_Diametre ) )
                    diametre_du_fil_emaille_en_cm.D=diametre_du_fil_emaille_en_cm.D/10
                     If diametre_du_mandrin_interieur_en_cm.D<>0
                         If nombre_de_spires.D<>0
                             If longueur_de_la_self_en_cm.D<>0
                                 If diametre_du_fil_emaille_en_cm.D<>0
                                    valeur_de_la_self_en_mh.D= calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)
                                     SetGadgetText ( #String_Total , StrD (valeur_de_la_self_en_mh.D, 3) )
                                 EndIf
                             EndIf
                         EndIf
                     EndIf
                 Case #String_Longueur_total
                    longueur_de_la_self_en_cm.D = ValD ( GetGadgetText ( #String_Longueur_total ) )
                    longueur_de_la_self_en_cm.D=longueur_de_la_self_en_cm.D/10
                     If diametre_du_mandrin_interieur_en_cm.D<>0
                         If nombre_de_spires.D<>0
                             If longueur_de_la_self_en_cm.D<>0
                                 If diametre_du_fil_emaille_en_cm.D<>0
                                    valeur_de_la_self_en_mh.D=calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)
                                     SetGadgetText ( #String_Total , StrD (valeur_de_la_self_en_mh.D, 3) )
                                 EndIf
                             EndIf
                         EndIf
                     EndIf
                 Case #String_nbr_spire
                    nombre_de_spires.D = ValD ( GetGadgetText ( #String_nbr_spire ) )
                     If diametre_du_mandrin_interieur_en_cm.D<>0
                         If nombre_de_spires.D<>0
                             If longueur_de_la_self_en_cm.D<>0
                                 If diametre_du_fil_emaille_en_cm.D<>0
                                    valeur_de_la_self_en_mh.D=calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)
                                     SetGadgetText ( #String_Total , StrD (valeur_de_la_self_en_mh.D, 3) )
                                 EndIf
                             EndIf
                         EndIf
                     EndIf
                    
                 Case #String_Total
                    
                 Case #Text_6
                 Case #Text_8
                 Case #Text_9
                 Case #Text_10
                 Case #Text_11
             EndSelect
             ; ////////////////////////
         Case #PB_Event_CloseWindow
             Select EventWindow ()
                 Case #Window_0
                     CloseWindow ( #Window_0 )
                    Break
             EndSelect
     EndSelect

ForEver
     ;
     ;}
    
Procedure .D calcul(diametre_du_mandrin_interieur_en_cm.D,nombre_de_spires.D,longueur_de_la_self_en_cm.D,diametre_du_fil_emaille_en_cm.D)
    valeur_de_la_self_en_mh.D=1.29*(diametre_du_mandrin_interieur_en_cm.D*diametre_du_mandrin_interieur_en_cm.D)*(nombre_de_spires.D*nombre_de_spires.D) / (7.62*diametre_du_mandrin_interieur_en_cm.D+22.86*longueur_de_la_self_en_cm.D+25.4*diametre_du_fil_emaille_en_cm.D)
     ProcedureReturn valeur_de_la_self_en_mh.D
EndProcedure

Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

@Dobro

Attends, j'ai posté 5 codes hier! Et Chercheacomprendre s'est arrêté au 3ème visiblement.
A priori, il veut du "méga-bref". :D

Code : Tout sélectionner

Define L.D
Define A.D
Define B.D
Define C.D
Define N.D
Define AncienResultat.D
OpenWindow(-1, 0, 0, 400, 150, "Calcul de self à air", $CF0001)
TextGadget(11, 0, 5,   200, 30, "Diamètre du coil(cm)")
TextGadget(12, 0, 35,  200, 30, "Longueur du coil (cm)")
TextGadget(13, 0, 65,  200, 30, "Epaisseur du bobinage (cm)")
TextGadget(14, 0, 95,  200, 30, "Nombre de spires")
TextGadget(15, 0, 125, 200, 30, "Inductance (µH)")
StringGadget(1, 200, 0,   200, 30, "")
StringGadget(2, 200, 30,  200, 30, "")
StringGadget(3, 200, 60,  200, 30, "")
StringGadget(4, 200, 90,  200, 30, "")
StringGadget(5, 200, 120, 200, 30, "")
Repeat
   A = ValD(GetGadgetText(1) )
   B = ValD(GetGadgetText(2) )
   C = ValD(GetGadgetText(3) )
   N = ValD(GetGadgetText(4) )
   L = (1.29 * A * A * N * N) / (7.62 * A + 22.86 * B + 25.4 * C) 
   If L <> AncienResultat
      SetGadgetText(5, StrD(L) )
   EndIf
   AncienResultat = L   
Until WaitWindowEvent() = 16
Le Soldat Inconnu
Messages : 4312
Inscription : mer. 28/janv./2004 20:58
Localisation : Clermont ferrand OU Olsztyn
Contact :

Message par Le Soldat Inconnu »

oui mais la, c'est pas bon car ton calcul se fait tout le temps, même quand tu bouges la souris.

il faut tout de même faire le calcul que quand une valeur change

Code : Tout sélectionner

Define L.D 
Define A.D 
Define B.D 
Define C.D 
Define n.D 
Define AncienResultat.D 
OpenWindow(-1, 0, 0, 400, 150, "Calcul de self à air", $CF0001) 
TextGadget(11, 0, 5,   200, 30, "Diamètre du coil(cm)") 
TextGadget(12, 0, 35,  200, 30, "Longueur du coil (cm)") 
TextGadget(13, 0, 65,  200, 30, "Epaisseur du bobinage (cm)") 
TextGadget(14, 0, 95,  200, 30, "Nombre de spires") 
TextGadget(15, 0, 125, 200, 30, "Inductance (µH)") 
StringGadget(1, 200, 0,   200, 30, "") 
StringGadget(2, 200, 30,  200, 30, "") 
StringGadget(3, 200, 60,  200, 30, "") 
StringGadget(4, 200, 90,  200, 30, "") 
StringGadget(5, 200, 120, 200, 30, "", #PB_String_ReadOnly) 
Repeat 
  Event = WaitWindowEvent()
  Select Event
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 1, 2, 3, 4
          Select EventType()
            Case #PB_EventType_Change
              A = ValD(GetGadgetText(1)) 
              B = ValD(GetGadgetText(2)) 
              C = ValD(GetGadgetText(3)) 
              n = ValD(GetGadgetText(4)) 
              L = (1.29 * A * A * n * n) / (7.62 * A + 22.86 * B + 25.4 * C) 
              SetGadgetText(5, StrD(L) ) 
          EndSelect
      EndSelect
  EndSelect
Until Event = #PB_Event_CloseWindow
Je ne suis pas à moitié Polonais mais ma moitié est polonaise ... Vous avez suivi ?

[Intel quad core Q9400 2.66mhz, ATI 4870, 4Go Ram, XP (x86) / 7 (x64)]
Ollivier
Messages : 4197
Inscription : ven. 29/juin/2007 17:50
Localisation : Encore ?
Contact :

Message par Ollivier »

Oups, pardon! A faire trop simple, j'ai fait une boucle qui calcule mille fois trop en effet...
Répondre