Heure en Min et Min en heure

Programmation d'applications complexes
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Heure en Min et Min en heure

Message par Ar-S »

Voilà un petit code tout simple permettant la conversion d'heure en minute et vice versa.

Code : Tout sélectionner

; PB 4.30 // By Ar-S 2008
Enumeration
  #BT_HtM
  #AFF
  #BT_MtoH
EndEnumeration

Global M,H,H$,M$,newH,ResteMin

Procedure HtoM(numGadgetHeure,NumgadgetMin)
  H$=GetGadgetText(numGadgetHeure)
  H=60*Val(H$)
  M$=GetGadgetText(NumgadgetMin)
  M=Val(M$)+H
  ;ProcedureReturn M
EndProcedure

Procedure MtoH(numGadgetHeure,NumgadgetMin)
  H$=GetGadgetText(numGadgetHeure)
  If H$=""
    H$="0"
  EndIf
  M$=GetGadgetText(NumgadgetMin)
  H=Val(GetGadgetText(numGadgetHeure))
  M=Val(GetGadgetText(NumgadgetMin))
  
  ResteMin=M % 60
  newH=M/60+H
EndProcedure

Procedure OpenWindow_Window_0()
  If OpenWindow(0, 450, 200, 312, 135, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
    StringGadget(1, 5, 5, 130, 25, "Heures", #PB_String_Numeric)
    StringGadget(2, 150, 5, 160, 25, "Min", #PB_String_Numeric)
    ButtonGadget(3, 0, 35, 310, 25, "HourTo Min")
    EditorGadget(5, 1, 100, 310, 30, #PB_Editor_ReadOnly)
    ButtonGadget(4, 0, 70, 310, 25, "Min to hour")
  EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
  Select WaitWindowEvent()
    Case #PB_Event_Gadget
      Select EventGadget()
        Case 3
          HtoM(1,2)
          SetGadgetText(5," Conversion en minute(s) : "+Str(M)+" Minutes")
        Case 4
          MtoH(1,2)
          SetGadgetText(5,"Conversion en heure(s) : "+Str(newH)+" heures et "+Str(ResteMin)+" minutes.")
      EndSelect

    Case #PB_Event_CloseWindow
      Select EventWindow()
        Case 0
          End
      EndSelect
  EndSelect
ForEver
;
;}
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Geo Trouvpatou
Messages : 471
Inscription : dim. 23/déc./2007 18:10

Message par Geo Trouvpatou »

Salut.

Ou alors pour éviter de globaliser toutes les variables :

Code : Tout sélectionner

; PB 4.30 // By Geo Trouvpatou 2009

EnableExplicit
Structure s_Temps
    heures.l
    minutes.l
    total.l
    minutesRestantes.l
EndStructure

Procedure HtoM(*duree.s_Temps)
    Protected tot_HToM.l
    
    With *duree
        tot_HToM = 60 * \heures
        \total = tot_HToM + \minutes
    EndWith
EndProcedure

Procedure MtoH(*duree.s_Temps)
    Protected tot_Heures.l
    
    With *duree
        tot_Heures = \minutes / 60
        \minutesRestantes = \minutes % 60 
        \total = \heures + tot_Heures
    EndWith 
EndProcedure

Define.s_Temps convDuree

Procedure OpenWindow_Window_0()
    If OpenWindow(0, 450, 200, 328, 135, "Window_0", #PB_Window_SystemMenu|#PB_Window_SizeGadget|#PB_Window_MinimizeGadget|#PB_Window_TitleBar)
        StringGadget(1, 5, 5, 130, 25, "Heures", #PB_String_Numeric)
        StringGadget(2, 150, 5, 160, 25, "Min", #PB_String_Numeric)
        ButtonGadget(3, 0, 35, 310, 25, "HourTo Min")
        ButtonGadget(4, 0, 70, 310, 25, "Min to hour")
        EditorGadget(5, 1, 100, 326, 40, #PB_Editor_ReadOnly)
        
    EndIf
EndProcedure

OpenWindow_Window_0()

;{- Event loop
Repeat
    Select WaitWindowEvent()
        Case #PB_Event_Gadget
            Select EventGadget()
                Case 3
                    convDuree\heures = Val(GetGadgetText(1)) 
                    convDuree\minutes = Val(GetGadgetText(2))
                    HtoM(@convDuree)
                    SetGadgetText(5," Conversion en minute(s) : "+Str(convDuree\total)+" Minutes")
                    
                Case 4
                    convDuree\heures = Val(GetGadgetText(1)) 
                    convDuree\minutes = Val(GetGadgetText(2))
                    MtoH(@convDuree)
                    SetGadgetText(5,"Conversion en heure(s) : "+Str(convDuree\total)+" heures et "+Str(convDuree\minutesRestantes)+" minutes.") 
            EndSelect
            
        Case #PB_Event_CloseWindow
            Select EventWindow()
                Case 0
                    End
            EndSelect
    EndSelect
ForEver
Bye.
Avatar de l’utilisateur
Ar-S
Messages : 9540
Inscription : dim. 09/oct./2005 16:51
Contact :

Re: Heure en Min et Min en heure

Message par Ar-S »

Autre version avec les secondes en plus.

Code : Tout sélectionner

; Conversion Secondes / Minutes / Heures
; by Ar-S // may 2013 

Declare Min2Sec(minutes)
Declare Hour2Sec(heures)
Declare Hour2Min(heures)

Declare.s Sec2Min(secondes)
Declare.s Min2Hour(minutes)
Declare.s Sec2Hour(secondes)



Procedure Min2Sec(minutes)
Protected Seconde

      If Minutes < 1
            Seconde = 0
      Else
            Seconde = Minutes * 60
      EndIf

      ProcedureReturn Seconde
EndProcedure


Procedure.s Min2Hour(minutes)
Protected Heure, R.s

If minutes < 60
      ProcedureReturn "0"
Else 
      Heure = minutes / 60
      reste = minutes % 60 
      If reste <> 0
            R.s = Str(reste)
            If reste < 10 :    R.s = "0"+Str(reste) : EndIf
            
            ProcedureReturn Str(Heure)+"h "+R.s+"m"
      Else
            ProcedureReturn Str(Heure)
      EndIf
EndIf       
EndProcedure


Procedure Hour2Sec(heures)

If heures < 1
      ProcedureReturn 0
      Else
      ProcedureReturn  heures * 3600
EndIf      

EndProcedure


Procedure Hour2Min(heures)

      If heures < 1
            ProcedureReturn 0
      Else
            ProcedureReturn  heures * 60
      EndIf      

EndProcedure


Procedure.s Sec2Hour(secondes)
      Protected Heure, R.s
      
      If secondes < 3600
            ProcedureReturn "0"
      Else 
            Heure = secondes / 3600
            reste = secondes % 3600 
            If reste <> 0
                  R.s = Sec2Min(reste)
                   If reste < 10 :    R.s = "0"+Str(reste) : EndIf
                        
                  ProcedureReturn Str(Heure)+"h "+R.s
            Else
                  ProcedureReturn Str(Heure)
            EndIf
EndIf 
      
EndProcedure



Procedure.s Sec2Min(secondes)
      Protected Minute, R.s
      
      If secondes < 60
            ProcedureReturn "0"
      Else
            Minute = secondes / 60
            reste = secondes % 60
            If reste <> 0
                  R.s = Str(reste)
                  If reste < 10 :    R.s = "0"+Str(reste) : EndIf
                  
                  ProcedureReturn Str(Minute)+"m "+R.s+"s"
                  
             Else
                  ProcedureReturn Str(Minute)
            EndIf      
      EndIf                         

EndProcedure

Debug "Min2Sec(60) : " + Str(Min2Sec(60)) ; Affichera 3600

Debug ""
Debug "Min2Hour(186) : " + Min2Hour(186) ; Affichera 3h 06m

Debug ""
Debug "Hour2Sec(2) : " + Str(Hour2Sec(2)) ; Affichera 7200

Debug ""
Debug "Hour2Min(3) : " + Str(Hour2Min(3)) ; Affichera 180


Debug ""
Debug "Sec2Hour(3600) " + Sec2Hour(3600) ; Affichera 1
Debug "Sec2Hour(3665) " + Sec2Hour(3660) ; Affichera 1h 1
Debug  "Sec2Hour(3665)" + Sec2Hour(3665) ; Affichera 1h 1m 05s

Debug ""
Debug "Sec2Min(7221) " + Sec2Min(7221) ; Affichera 120m 21s

~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Répondre