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
» Logiciel de planétarium.
Conso-essence Emptypar Pedro Aujourd'hui à 10:37

» Un autre pense-bête...
Conso-essence Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Conso-essence Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Conso-essence Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Conso-essence Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Conso-essence Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Conso-essence Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Conso-essence Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Conso-essence Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Conso-essence Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Conso-essence Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Conso-essence Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Conso-essence Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Conso-essence Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Conso-essence Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
-38%
Le deal à ne pas rater :
Ecran PC gaming 23,8″ – ACER KG241Y P3bip à 99,99€
99.99 € 159.99 €
Voir le deal

 

 Conso-essence

Aller en bas 
4 participants
AuteurMessage
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Conso-essence Empty
MessageSujet: Conso-essence   Conso-essence EmptyLun 8 Avr 2019 - 17:13

Vous connaissez la nouvelle ?
J'ai une nouvelle voiture.
J'ai abandonné mon vieux char qui datait (au moins) de l'antiquité égyptienne,
et dont le compteur ne marchait même plus, les pièces de rechange n'existant plus...
Maintenant, j'en ai une qui se veut écolo, même si elle n'est pas électrique.
Alors, bien sûr, en bon écolo-responsable, je vais dorénavant calculer ma conso d'essence.
D'où le programme qui suit (et dont je vous fais bénéficier, si besoin est) :

Code:
rem ' Logiciel de calcul de la conso d'essence de la voiture - 07/04/2019 =====
  dim ECX% , ECY% : rem Emplacement du Curseur sur le grid en X et en Y
  dim IMG% : rem Indicateur de Modification du contenu du Grid
  dim IRN% : rem Indicateur du Rang du Nombre utilisé par la calculatrice
  dim IUE% : rem Indicateur d`Utilisation de la touche Egal
  dim NAU% : rem Nombre d`Années Utilisées
  dim NB$(2) : rem Nombres 1 et 2 de la calculatrice
  dim NBC$(16) : rem Nom des Boutons de la Calculatrice
  dim NDB$(6) : rem Nom Des Boutons
  dim OC% : rem Opération Choisie (1=+ 2=- 3=* 4=/)
  dim V1M% , V2M% : rem Variables à  utilisation multiple
  dim VP$ : rem Version du programme
  IRN%=1 : VP$="V.070419.1.4" : NAU%=25 : ' Changer NAU% pour utiliser l'outil plus longtemps
  label clac : rem Différenciation de l`on-click
  label clic : rem Redirection de tous les on-click
  label close : rem Gestion de l`on-close
  label key : rem Gestion des on-key-down
   
rem Form0 =====================================================================
  width 0,1365
  height 0,685
  caption 0,"  Consomation d'essence de la voiture - par jjn4 - "+VP$
  on_close 0,close
  for V1M% = 1 to 6 : read NDB$(V1M%) : next V1M%
  for V1M% = 1 to 16 : read NBC$(V1M%) : next V1M%

rem Affichage des éléments ====================================================
  list 100
      top 100,5
      width 100,75
      height 100,635
      if NAU%<26
        left 100,10
        width 100,65
        font_bold 100
      end_if
      font_size 100,16
      for V1M% = 2019 to 2018+NAU%-1
        item_add 100,V1M%
      next V1M%
      on_click 100,clic
  grid 200
      hide 200
      left 200,75
      top 200,5
      width 200,610
      height 200,635
      font_size 200,16
      font_name 200,"Terminal"
      grid_column 200,7
      grid_column_width 200,80
      grid_row 200,NAU%
      grid_one_column_width 200,1,110
      if grid_row(200)>25
        grid_one_column_width 200,5,72
        grid_one_column_width 200,7,72
      end_if
      on_click 200,clic
  edit 250
      left 250,695
      top 250,5
      width 250,95
      font_size 250,20
      set_focus 250
      on_key_down 250,key
  button 260
      left 260,795
      top 260,5
      width 260,80
      height 260,38
      font_bold 260
      font_size 260,20
      font_name 260,"Arial"
      caption 260,"Go"
      on_click 260,clic
      inactive 260
  rem Boutons de commande - Obj-syst n° 300 à 350 ----------------------------
      for V1M% = 1 to 6
        button V1M%*10+290
            left V1M%*10+290,695
            top V1M%*10+290,(V1M%-1)*100+46
            width V1M%*10+290,180
            height V1M%*10+290,96
            font_bold V1M%*10+290
            font_size V1M%*10+290,20
            font_name V1M%*10+290,"Arial"
            caption V1M%*10+290,NDB$(V1M%)
            on_click V1M%*10+290,clic
            inactive V1M%*10+290
      next V1M%
      active 340
      active 350
     
rem Calculette ================================================================
  panel 400
      left 400,885
      top 400,5
      width 400,380
      height 400,635
  edit 410
      parent 410,400
      left 410,10
      top 410,5
      width 410,360
      font_bold 410
      font_size 410,20
      font_name 410,"Arial"
  for V1M% = 1 to 4                          : rem Obj-Syst n°  510=7 520=8 530=9 540=/
      for V2M% = 1 to 4                        : rem Obj-Syst n°  550=4 560=5 570=6 580=x
        button (V1M%-1)*40+V2M%*10+500        : rem Obj-Syst n°  590=1 600=2 610=3 620=-
            parent (V1M%-1)*40+V2M%*10+500,400 : rem Obj-Syst n°  630=0 640=. 650=C 660=+
            left (V1M%-1)*40+V2M%*10+500,(V2M%-1)*90+10
            top (V1M%-1)*40+V2M%*10+500,(V1M%-1)*100+54
            width (V1M%-1)*40+V2M%*10+500,90
            height (V1M%-1)*40+V2M%*10+500,100
            font_bold (V1M%-1)*40+V2M%*10+500
            font_size (V1M%-1)*40+V2M%*10+500,30
            font_name (V1M%-1)*40+V2M%*10+500,"Arial"
            caption (V1M%-1)*40+V2M%*10+500,NBC$((V1M%-1)*4+V2M%)
            on_click (V1M%-1)*40+V2M%*10+500,clic
      next V2M%
    next V1M%
    button 670 : rem Touche =
      parent 670,400
      left 670,10
      top 670,455
      width 670,360
      height 670,100
      font_bold 670
      font_size 670,60
      font_name 670,"Arial"
      caption 670,"="
      on_click 670,clic
    switch1 680 : rem Switch entre calculatrice et clavier interne
      parent 680,400
      left 680,10
      top 680,560
      width 680,360
      height 680,70
      caption 680,"Mode calculatrice|Mode clavier virtuel"
      on_click 680,clic
       
end : ' Début des routines ====================================================

sub affiche() : rem Affiche les données initiales du grid =====================
  grid_write 200,1,1,"  Date"
  grid_write 200,1,2,"  Kms"
  grid_write 200,1,3,"Diff Km"
  grid_write 200,1,4,"Cumul Km"
  grid_write 200,1,5,"Litres"
  grid_write 200,1,6,"Cumul L"
  grid_write 200,1,7," Conso"
end_sub

sub aide() : rem Explications sur le fonctionnement du programme ==============
  dim_local v1ai$
  application_title "  Explications sur le fonctionnement du programme"
  v1ai$="  Comme son nom l'indique, Conso-essence sert à calculer la consommation"+chr$(13)
  v1ai$=v1ai$+"en essence de la voiture selon le kilométrage parcouru en ville et sur la route."+chr$(13)
  v1ai$=v1ai$+"Commencer d'abord par choisir une année, puis cliquer sur le bouton « Date »."+chr$(13)
  v1ai$=v1ai$+"Entrer ensuite les données (Kms et litres) dans la zone de dialogue, puis "+chr$(13)
  v1ai$=v1ai$+"cliquer sur « Go » ou taper sur la touche « Entrée » du clavier."+chr$(13)
  v1ai$=v1ai$+"Inutile d'entrer quoi que ce soit dans les colonnes de différence, de cumul ou de"+chr$(13)
  v1ai$=v1ai$+"conso, se contenter de cliquer sur « Go » et l'ordinateur se charge de faire le calcul."+chr$(13)
  v1ai$=v1ai$+"Pour connaître les totaux annuels, cliquer sur « Total »."+chr$(13)+chr$(13)
  v1ai$=v1ai$+"  Une calculette est utilisable à côté du tableau de calcul de la consommation,"+chr$(13)
  v1ai$=v1ai$+"ceci pour d'éventuels calculs parallèles autres. Mais il est aussi possible de se"+chr$(13)
  v1ai$=v1ai$+"servir de l'équipement de la calculatrice comme d'un clavier virtuel pour alimenter"+chr$(13)
  v1ai$=v1ai$+"en données le tableau de calcul de consommation d'essence. Pour cela, presser"+chr$(13)
  v1ai$=v1ai$+"l'interrupteur bleu-vert. On peut aussi transformer la date du jour en utilisant"+chr$(13)
  v1ai$=v1ai$+"la calculatrice et en y inscrivant par exemple : « 27.04.2019 »,"+chr$(13)
  v1ai$=v1ai$+"et en cliquant ensuite, comme de coutume, sur le bouton « Date »."
  message v1ai$
end_sub

sub chiffre() : rem Ajouter un chiffre ========================================
  if IUE%=1
      vide()
      IUE%=0
  end_if
  set_focus 410
  text 410,text$(410)+NBC$((number_click-500)/10)
  NB$(IRN%)=NB$(IRN%)+NBC$((number_click-500)/10)
end_sub

sub choix() : rem Choix de l`année ============================================
  dim_local v1ch%
  if IMG%=1
      v1ch%=message_confirmation_yes_no("Voulez-vous enregistrer vos modifications ?")
      if v1ch%=1
        enreg()
      else
        IMG%=0
      end_if
  end_if
  grid_clear 200,grid_row(200),7
  affiche()
  if file_exists("CE-"+item_index$(100)+".txt")=1
      grid_load 200,"CE-"+item_index$(100)+".txt"
  end_if
  show 200
  for v1ch% = 1 to 4
      active v1ch%*10+290
  next v1ch%
  localise()
  set_focus 250
end_sub

clac: : rem Modification des on-click =========================================
  select number_click
      case 260 : egal()
      case 670 : go()
  end_select
return

clic: : rem Redirection de tous les on-click ==================================
  select number_click
      case 100 : choix()
      case 200 : repere()
      case 260 : go()
      case 300 : date()
      case 310 : total()
      case 320 : enreg()
      case 330 : imprim()
      case 340 : aide()
      case 350 : quitter()
      case 510 : chiffre()
      case 520 : chiffre()
      case 530 : chiffre()
      case 540 : divise()
      case 550 : chiffre()
      case 560 : chiffre()
      case 570 : chiffre()
      case 580 : multi()
      case 590 : chiffre()
      case 600 : chiffre()
      case 610 : chiffre()
      case 620 : moins()
      case 630 : chiffre()
      case 640 : point()
      case 650 : vide()
      case 660 : plus()
      case 670 : egal()
      case 680 : switch()
  end_select
return

close: : rem Gestion de l`on-close ============================================
  if IMG%=1
      V1M%=message_confirmation_yes_no("Voulez-vous enregistrer avant de quitter ?")
      if V1M%=1
        enreg()
      end_if
  end_if
return

sub cumul() : rem Cumule les résultats en NB$(1) ==============================
  if NB$(2)<>""
      select OC%
        case 1 : NB$(1)=str$(val(NB$(1))+val(NB$(2)))
        case 2 : NB$(1)=str$(val(NB$(1))-val(NB$(2)))
        case 3 : NB$(1)=str$(val(NB$(1))*val(NB$(2)))
        case 4     
            if val(NB$(2))<>0
              NB$(1)=str$(val(NB$(1))/val(NB$(2)))
            end_if
      end_select
  end_if
  NB$(2)=""
end_sub

rem Datas =====================================================================
  data "Date" , "Total" , "Enreg" , "Imprim" , "Aide" , "Quitter"
  data "7" , "8" , "9" , "÷" , "4" , "5" , "6" , "×"
  data "1" , "2" , "3" , "_" , "0" , "," , "C" , "+"
rem Fin des datas

sub date() : rem Affichage de la date du jour =================================
  if len(text$(410))=10 and mid$(text$(410),3,1)="." and mid$(text$(410),6,1)="."
      grid_write 200,ECY%,ECX%,left$(text$(410),2)+"/"+mid$(text$(410),4,2)+"/"+right$(text$(410),4)
  else
      grid_write 200,ECY%,ECX%,date$
  end_if
  ECX%=ECX%+1
  grid_write 200,ECY%,ECX%,chr$(219)
  active 260
  if caption$(670)="Go"
      active 670
  end_if
  set_focus 250
  text 410,""
end_sub

sub divise() : rem Opération de division ======================================
  if NB$(2)<>""
      cumul()
  end_if
  OC%=4
  IRN%=2
  text 410,""
  IUE%=0
end_sub

sub egal() : rem Calcule le résultat de l`opération ===========================
  dim_local v1eg% , v2eg% , v3eg%
  for v1eg% = 1 to len(NB$(1))
      if mid$(NB$(1),v1eg%,1)="."
        v2eg%=v2eg%+1
      end_if
      if asc(mid$(NB$(1),v1eg%,1))<46 or asc(mid$(NB$(1),v1eg%,1))=47
        v3eg%=1
      end_if
  next v1eg%
  if v2eg%>1
      v3eg%=1
  end_if
  v2eg%=0
  for v1eg% = 1 to len(NB$(2))
      if mid$(NB$(2),v1eg%,1)="."
        v2eg%=v2eg%+1
      end_if
      if asc(mid$(NB$(2),v1eg%,1))>57
        v3eg%=1
      end_if
  next v1eg%
  if v2eg%>1
      v3eg%=1
  end_if
  if v3eg%=0
      if NB$(2)<>""
        select OC%
            case 1 : text 410,str$(val(NB$(1))+val(NB$(2)))
            case 2 : text 410,str$(val(NB$(1))-val(NB$(2)))
            case 3 : text 410,str$(val(NB$(1))*val(NB$(2)))
            case 4 
              if val(NB$(2))<>0
                  text 410,str$(val(NB$(1))/val(NB$(2)))
              end_if
        end_select
      end_if
      NB$(1)=text$(410)
      NB$(2)=""
      IUE%=1
  end_if
end_sub

sub enreg() : rem Enregistre les données ======================================
  dim_local v1en% , v2en%
  for v1en% = 2 to grid_row(200)
      for v2en% = 1 to 7
        if grid_read$(200,v1en%,v2en%)=chr$(219)
            grid_write 200,v1en%,v2en%,""
        end_if
      next v2en%
  next v1en%
  for v1en% = grid_row(200)-1 to 2 step -1
      if grid_read$(200,v1en%,2)<>""
        if numeric(grid_read$(200,v1en%,2))=1
            file_open_write 1,"CE-Km.txt"
              file_writeln 1,grid_read$(200,v1en%,2)
            file_close 1
            exit_for
        end_if
      end_if
  next v1en%
  grid_save 200,grid_row(200),7,"CE-"+item_index$(100)+".txt"
  hide 200
  IMG%=0
end_sub

sub go() : rem Faire passer le chiffre entré vers le grid =====================
  dim_local dk , ck , cl , cv : rem Diff-Km/Cumul-Km/Cumul-L/Conso-Voiture
  dim_local v1go% , v2go$
  if text$(250)<>""
      for v1go% = 1 to len(text$(250))
        if mid$(text$(250),v1go%,1)=","
            text 250,left$(text$(250),v1go%-1)+"."+right_pos$(text$(250),v1go%+1)
        end_if
      next v1go%
  else
      text 250,"0"
  end_if
  if ECX%=3
      if numeric(grid_read$(200,ECY%-1,ECX%-1))=1 and numeric(grid_read$(200,ECY%,ECX%-1))=1
        dk=val(grid_read$(200,ECY%,ECX%-1))-val(grid_read$(200,ECY%-1,ECX%-1))
      else
        if file_exists("CE-Km.txt")=1
            file_open_read 1,"CE-Km.txt"
              file_readln 1,v1go%
            file_close 1
            dk=val(grid_read$(200,ECY%,ECX%-1))-v1go%
        end_if
      end_if
  end_if
  if ECX%=4
      for v1go% = 2 to ECY%
        if numeric(grid_read$(200,v1go%,ECX%-1))=1
            ck=ck+val(grid_read$(200,v1go%,ECX%-1))
        end_if
      next v1go%
  end_if
  if ECX%=6
      for v1go% = 2 to ECY%
        if numeric(grid_read$(200,v1go%,ECX%-1))=1
            cl=cl+val(grid_read$(200,v1go%,ECX%-1))
        end_if
      next v1go%
  end_if
  if ECX%=7
      if numeric(grid_read$(200,ECY%,5))=1 and numeric(grid_read$(200,ECY%,3))=1 and grid_read$(200,ECY%,3)<>"0"
        cv=(val(grid_read$(200,ECY%,5))/val(grid_read$(200,ECY%,3)))*100
      end_if
  end_if
  if caption$(670)="Go"
      v2go$=text$(410)
  else
      v2go$=text$(250)
  end_if
  select ECX%
      case 2 : grid_write 200,ECY%,ECX%,v2go$
      case 3 : grid_write 200,ECY%,ECX%,int(dk*100)/100
      case 4 : grid_write 200,ECY%,ECX%,int(ck*100)/100
      case 5 : grid_write 200,ECY%,ECX%,v2go$
      case 6 : grid_write 200,ECY%,ECX%,int(cl*100)/100
      case 7 : grid_write 200,ECY%,ECX%,int(cv*100)/100
  end_select
  ECX%=ECX%+1
  if ECX%>7
      ECX%=1
      ECY%=ECY%+1
      inactive 260
      if caption$(670)="Go"
        inactive 670
      end_if
  end_if
  if grid_read$(200,ECY%,ECX%)=""
      grid_write 200,ECY%,ECX%,chr$(219)
  else
      if ECX%>1
        grid_write 200,ECY%,ECX%,grid_read$(200,ECY%,ECX%)+chr$(219)
      end_if
  end_if
  text 250,""
  text 410,""
  set_focus 250
  IMG%=1
end_sub

sub imprim() : rem Imprimer la page affichée ==================================
  dim_local v1im%
  v1im%=message_confirmation_yes_no("Voulez-vous réellement imprimer cette page ?")
  if v1im%=1
      enreg()
      execute_wait "write.exe|/p CE-"+item_index$(100)+".txt"
  end_if
end_sub

key: : rem Gestion des on-key-down ============================================
  if key_down_code=13
      trigger_click 260
  end_if
return     

sub localise() : rem Localise la première ligne disponible ====================
  dim_local v1lo%
  for v1lo% = 2 to grid_row(200)
      if grid_read$(200,v1lo%,1)=""
        ECY%=v1lo%
        exit_for
      end_if
  next v1lo%
  ECX%=1
  grid_write 200,ECY%,ECX%,chr$(219)
end_sub

sub moins() : rem Opération de soustraction ===================================
  if NB$(2)<>""
      cumul()
  end_if
  OC%=2
  IRN%=2
  text 410,""
  IUE%=0
end_sub

sub multi() : rem Opération de multiplication =================================
  if NB$(2)<>""
      cumul()
  end_if
  OC%=3
  IRN%=2
  text 410,""
  IUE%=0
end_sub

sub plus() : rem Opération d`addition =========================================
  if NB$(2)<>""
      cumul()
  end_if
  OC%=1
  IRN%=2
  text 410,""
  IUE%=0
end_sub

sub point() : rem Ajoute une virgule au nombre ================================
  if IUE%=1
      vide()
      IUE%=0
  end_if
  set_focus 410
  text 410,text$(410)+"."
  NB$(IRN%)=NB$(IRN%)+"."
end_sub

sub quitter() : rem Quitter le programme ======================================
  dim_local v1qu%
  if IMG%=1
      v1qu%=message_confirmation_yes_no("Voulez-vous enregistrer vos modifications ?")
      if v1qu%=1
        enreg()
      end_if
  end_if
  v1qu%=message_confirmation_yes_no("Voulez-vous réellement quitter ce programme ?")
  if v1qu%=1
      terminate
  end_if
end_sub

sub repere() : rem Repère l`emplacement du curseur sur le grid ================
  dim_local v1re% , v2re%
  ECX%=grid_x_to_column(200,mouse_x_position(200))
  ECY%=grid_y_to_row(200,mouse_y_position(200))
  for v1re% = 2 to grid_row(200)
      for v2re% = 1 to 7
        if right$(grid_read$(200,v1re%,v2re%),1)=chr$(219)
            grid_write 200,v1re%,v2re%,left$(grid_read$(200,v1re%,v2re%),len(grid_read$(200,v1re%,v2re%))-1)
        end_if
      next v2re%
  next v1re%
  text 250,grid_read$(200,ECY%,ECX%)
  grid_write 200,ECY%,ECX%,grid_read$(200,ECY%,ECX%)+chr$(219)
  set_focus 250
  active 260
  if caption$(670)="Go"
      active 670
  end_if
end_sub

sub switch() : rem Passage du mode calculette à clavier tactile ===============
  if checked(680)=1
      caption 670,"="
      active 670
      on_click 670,clic
      vide()
      set_focus 250
  else
      caption 670,"Go"
      if active(260)=1
        active 670
      else
        inactive 670
      end_if
      on_click 670,clac
  end_if
end_sub

sub total() : rem Totalise les kms litres et conso ============================
  dim_local v1to%
  dim_local tk , tl , tc : rem Total Kilomètres/Total Litres/Total consommation
  for v1to% = grid_row(200)-1 to 2 step -1
      if grid_read$(200,v1to%,4)<>""
        if numeric(grid_read$(200,v1to%,4))=1
            tk=val(grid_read$(200,v1to%,4))
            exit_for
        end_if
      end_if
  next v1to%
  for v1to% = grid_row(200)-1 to 2 step -1
      if grid_read$(200,v1to%,6)<>""
        if numeric(grid_read$(200,v1to%,6))=1
            tl=val(grid_read$(200,v1to%,6))
            exit_for
        end_if
      end_if
  next v1to%
  grid_write 200,grid_row(200),1," Totaux ="
  grid_write 200,grid_row(200),4,tk
  grid_write 200,grid_row(200),6,tl
  if tk>0
      tc=(tl/tk)*100
      grid_write 200,grid_row(200),7,int(tc*100)/100
  end_if
end_sub

sub vide() : rem Vide l`écran de la calculatrice et les réserves ==============
  NB$(1)=""
  NB$(2)=""
  IRN%=1
  text 410,""
  set_focus 410
end_sub

Dites-moi si vous voyez des erreurs...
D'autant que j'en ai profité pour improviser une calculatrice-maison qui peut toujours servir,
et qui a peut-être encore des imperfections...
Merci d'avance.
cyclops <--- Observez que le clignotant fonctionne aussi !


Dernière édition par jjn4 le Jeu 11 Avr 2019 - 18:03, édité 3 fois
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptyLun 8 Avr 2019 - 19:09

Salut à tous !

@Jjn4
Très sympa ton programme !  cheers
Et j'aime bien ton bouton à bascule ! Very Happy

Il manquerait quelques contrôles de saisie si tu souhaites diffuser ton programme.

En tout cas, bravo !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Conso-essence Empty
MessageSujet: Conso-essence   Conso-essence EmptyMar 9 Avr 2019 - 14:34

On en est déjà à la version 1.2
(pour ceux qui ont téléchargé les versions précédentes)
Il restait quelques petits oublis et bugs...
scratch
Merci Marc !
cheers
Marc a écrit:
Il manquerait quelques contrôles de saisie
Quels contrôles, par exemple ?
scratch
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptyMar 9 Avr 2019 - 15:02

Salut Jjn4 !

Je n'ai pas essayé ta nouvelle version, mais je le ferai ce soir.

De mémoire, dans ta première version, la croix rouge du FORM 0 quittait le programme brutalement sans prévenir qu'il fallait sauvegarder.
Les zones de saisie n'étaient pas sécurisées : possibilité de mettre 2 virgules dans la machine à calculer,
division par zéro plante le programme...

Si c'est un programme que pour toi, pas de problème, tu sais ce qu'il ne faut pas faire. Mais si c'est un programme destiné à être partagé, l'utilisateur lambda ne doit pas pouvoir planter le programme par des saisies inappropriées.

Autrement, le nombre de lignes à l'année m'a paru trop limité. Toujours de mémoire, je crois que tu as prévu "que" 23 passages à la pompe dans l'année.

Bref, j'approfondirai ce soir si tu le souhaites.

Bonne programmation !
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Conso-essence Empty
MessageSujet: Conso-essence   Conso-essence EmptyMer 10 Avr 2019 - 16:48

Salut Marc et merci pour tes remarques.
C'est vrai que j'ai fait le programme d'abord pour moi
et sur le mini-ordi de rechange en attendant que l'autre soit réparé.
Et après, j'ai eu l'idée de le socialiser pour en faire profiter d'autres.
De ce fait, il est quand même un peu vite fait.

La croix rouge à sécuriser ne me semblait pas utile pour inscrire une donnée tous les 3 mois (hors vacances), mais tu as raison, autant qu'il soit ++
Alors, c'est fait, c'est sécurisé. La division par zéro aussi.
La possibilité de mettre + d'une virgule n'est plus possible.

Le nombre d'entrée est limité à 23, c'est vrai, pour moi qui est à la retraite
et avec une voiture super économique, hors vacances, cela devrait suffire.
Mais pour ceux qui roulent beaucoup, il y a la possibilité prévue
de modifier la variable NAU% (ligne 13) et d'y mettre des centaines de
lignes d'entrée de carburant dans l'année pour des centaines d'années…
(pour ceux qui roulent beaucoup et ont une confiance
dans leur espérance de vie absolument increvable)
lol!
N'hésite pas à me dire si tu vois autre chose !
(car avec une voiture tellement économique, je ne vais pas m'en servir bp)
Laughing
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
RMont




Nombre de messages : 233
Age : 82
Localisation : charente maritime
Date d'inscription : 29/12/2008

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptyMer 10 Avr 2019 - 18:56


bonjour a tous.
je vais pouvoir passer une image car mon problème d'hebergement est résolu.
concernant la conso -essence j'aimerai vous montrer deux images de ma conso-essence.
yannick va être content car c'est un début de mon code modifié par lui et que j'ai adapté pour moi qui donne ceci.
Conso-essence 2019-015

Conso-essence 2019-016

je vais faire un petit texte explicatif ensuite


Revenir en haut Aller en bas
Marc

Marc


Nombre de messages : 2466
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptyMer 10 Avr 2019 - 23:22

Bonsoir Jjn4 !
Bonsoir RMont !
Bonsoir à tous !

@Jjn4
Merci pour les explications.
J’ai remarqué qu’un double "=" après une opération quelconque plante le programme.
Par exemple :
Je clique sur 1
Je clique sur +
Je clique sur 2
Je clique sur =
Je clique sur =
et là :
Conso-essence 164


Autres remarques :
Lors du lancement du programme, le commutateur est sur Mode Calculatrice. Les entrées du clavier du PC  sont dirigées vers l’EDIT 250. Si je bascule sur Mode Clavier Virtuel et que je reviens sur Mode Calculatrice, les entrées du clavier du PC sont maintenant dirigées vers l’afficheur de la calculatrice (EDIT 410). scratch

Je n’ai pas réussi à faire fonctionner la calculatrice avec le clavier du PC.

=> Mais est-ce un programme qui autorisera l’utilisation du clavier du PC ?
Peut-être souhaites-tu n’autoriser le fonctionnement qu’avec le clavier virtuel ?

Juste une remarque hors sujet pour RMont : bravo pour ton programme ! La représentation graphique de la conso apporte une touche très pro.

Bonne continuation !
Revenir en haut Aller en bas
RMont




Nombre de messages : 233
Age : 82
Localisation : charente maritime
Date d'inscription : 29/12/2008

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptyJeu 11 Avr 2019 - 18:04


bonjour a tous.
conso-essence :si cela peu vous interesser voici le code
Code:

' dépense,conso et moyenne pour ma Citroen c4
'  
error_french

variables()      :' en ligne 14
labels()         :' en ligne 66
gui()            :' en ligne 72
init()           :' en ligne 229

end

' -----------------------------------------------------------------------------

sub variables()    :' vient de 5
  dim_local i%

  dim Path$  : Path$=dir_current$     :' retourne le repertoire courant
  if right$(Path$,1)="\" : Path$=left$(Path$,len(Path$)-1) : end_if
  Path$=Path$+"\"
  dim Param$  : Param$= Path$+"Param.inf"
  dim ListeV$ : ListeV$=Path$+"ListeV.txt"    :' pour villes
  dim ListeC$ : ListeC$=Path$+"ListeC.txt"    :' pour citroen C4
  dim Histo$  : Histo$ =Path$+"Histo.txt"
  dim PathCar$: PathCar$=Path$+"Vehicules\"

  dim KGF$

  dim no%       :' no% ---> pour numéroter ,incrémenter les objets
  dim Mm%     : no%=no%+1 : Mm%=no%     :' donc main menu  = 1
  dim Sm%(11) : for i%=1 to 11 : no%=no%+1 : Sm%(i%)=no%  : next i%    :' sous/menu de Main menu  donc objets 2 a 12
  dim Pan%(4) : for i%=0 to 4  : no%=no%+1 : Pan%(i%)=no% : next i%    :' panels de récup des dimensions de travail du form 0: donc objets 13 a 17

  dim Alph%(7)   : for i%=1 to 7  : no%=no%+1 : Alph%(i%)=no%: next i%       :' pour alpha    donc objets 18 a 24
  dim Edi%(6)    : for i%=1 to 6  : no%=no%+1 : Edi%(i%)=no% : next i%       :' pour edit     donc objets 25 a 30
  dim Comb%      : no%=no%+1 : Comb%=no%                                     :' pour combo    donc objet 31
  dim BtnCpt%    : no%=no%+1 : BtnCpt%=no%                                   :' pour bouton   donc objet 32
  dim Btn%       : no%=no%+1 : Btn%=no%                                      :' pour button   donc objets 33
  dim Gril%      : no%=no%+1 : Gril%=no%                                     :' pour          donc objet 34
  dim Mem%       : no%=no%+1 : Mem%=no%                                      :' pour          donc objet 35
  dim MemV%      : no%=no%+1 : MemV%=no%                                     :' pour          donc objet 36
  dim ApanTtl%(4): for i%=1 to 4  : no%=no%+1 : ApanTtl%(i%)=no% : next i%   :' pour          donc objets  37 a 41

 dim Odial%  : no%=no%+1 : Odial%=no%                                        :' pour Open dialogue    objet 42

 dim F_OW%  : no%=no%+1 : F_OW%=no%                                          :' pour File_open_write   objet 43
 dim F_OR%  : no%=no%+1 : F_OR%=no%                                          :' pour File_open_read    objet 44

  dim NbreR%       :' nombre de lignes du grid
  dim NbreC%       :' nombre de colonnes du grid
  dim Car$

  dim distparcourue
  dim TotalKm       : TotalKm = 0         :' pour compteur total
  dim dist
  dim conso
  dim conso100
  dim consototale
  dim TotalEuro     : TotalEuro = 0
  dim prixlit
  dim moyengene
  dim Minter        : ' =  moyenne intermediaire
end_sub

' ------------------------------------------------------------------------------

sub labels()    :' vient de 6
 label clic , close , affichage
end_sub

' -------------------------------------------------------

sub gui()        :' vient de 7
  dim_local h%,w%,t%,a$,i%,l%,b$

  height 0,665    
  width 0,1330
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  caption 0,"CONSOMMATION  CARBURANT de ma  "
  on_close 0,close

  main_menu Mm%
  ' menu n°1
  sub_menu Sm%(1) : parent Sm%(1),Mm% : caption Sm%(1),"Véhicule"      :' objet n°1
  sub_menu Sm%(2) : parent Sm%(2),Sm%(1): caption Sm%(2),"Nouveau"     : on_click Sm%(2),clic   :' objet n°2  lignes 294
  sub_menu Sm%(3) : parent Sm%(3),Sm%(1): caption Sm%(3),"Ouvrir"      : on_click Sm%(3),clic   :' objet n°3  lignes 299
  sub_menu Sm%(4) : parent Sm%(4),Sm%(1): caption Sm%(4),"Enregistrer" : on_click Sm%(4),clic   :' objet n°4  lignes 304
  sub_menu Sm%(5) : parent Sm%(5),Sm%(1): caption Sm%(5),"-"                                    :' objet n°5
  sub_menu Sm%(6) : parent Sm%(6),Sm%(1): caption Sm%(6),"Quitter"     : on_click Sm%(6),clic   :' objet n°6  lignes 309
  ' menu 2
  sub_menu Sm%(7) : parent Sm%(7),Mm% : caption Sm%(7),"Affichage"                                               :' objet 8
  sub_menu Sm%(8) : parent Sm%(8),Sm%(7): caption Sm%(8),"Table"      : mark_on Sm%(8) : on_click Sm%(8),clic    :' objet 9   ligne 314
  sub_menu Sm%(9) : parent Sm%(9),Sm%(7): caption Sm%(9),"Graphique"  : mark_off Sm%(9): on_click Sm%(9),clic    :' objet 10   ligne 322
  ' menu n°3
  sub_menu Sm%(10) : parent Sm%(10),Mm% : caption Sm%(10),"Paramètres"                                         :' objet n°10  
  sub_menu Sm%(11) : parent Sm%(11),Sm%(10): caption Sm%(11),"KGF.dll - Rechercher sur PC"    : on_click Sm%(11),clic  :' objet n°11  lignes 335

  panel Pan%(0)          :' objet 12
  full_space Pan%(0)
  h%=height(Pan%(0))
  w%=width(Pan%(0))

  panel Pan%(1)          :' objet 13  , c'est la partie gauche là ou est le questionnaire
  parent Pan%(1),Pan%(0)
  height Pan%(1),h%-24
  width Pan%(1),270
  top Pan%(1),0
  left Pan%(1),0
  color Pan%(1),251,208,175
  
  a$=" DATE, LIEU, QUANTITE MISE, MONTANT €, COMPTEUR KM TOTAL, "
  t%=-30
  for i%=1 to 5
    t%=t%+50
    alpha Alph%(i%)
    parent Alph%(i%),Pan%(1)
    top Alph%(i%),t%
    left Alph%(i%),10
    caption Alph%(i%),left$(a$,instr(a$,",")-1)
    if i%<5
      a$=right$(a$,len(a$)-instr(a$,","))
    end_if
    font_name Alph%(i%),"Times new roman"
    font_bold Alph%(i%)
  next i%

  t%=-15
  for i%=1 to 4      :' 4 éléments on saute le combo pour le " lieu "
    edit Edi%(i%)
    parent Edi%(i%),Pan%(1)
    color Edi%(i%),254,240,205
    if i%=2
      t%=t%+100
    else
      t%=t%+50
        if i%=1 or i%=4 or i%=5
          width Edi%(i%),90
        end_if
    end_if
      top Edi%(i%),t%
      left Edi%(i%),10
      font_name Edi%(i%),"Arial"
  next i%

  combo Comb%                :' c'est le 5em élément qui correspond a " lieu "
  parent Comb%,Pan%(1)
  top Comb%,85
  left Comb%,10
  width Comb%,250
  font_name Comb%,"Arial"
  font_size Comb%,10
  color Comb%,254,240,205
  if file_exists(ListeV$)=1 : file_load Comb%,ListeV$ : end_if
  
  l%=width(Pan%(1))-151
  a$="<,"
  b$="Enregistrer les données," :'  formulaire,"
  button Btn% :' objets 32
  parent Btn%,Pan%(1)
  height Btn%,42
  width Btn%,42
  top Btn%,height(Pan%(1))-47
  left Btn%,l%
  font_name Btn%,"Wingdings"
  font_size Btn%,12
  caption Btn%,a$
  hint Btn%,b$
  cursor_point Btn%
  on_click Btn%,clic

  panel Pan%(2)                :' objet 15
  parent Pan%(2),Pan%(0)
  height Pan%(2),h%-24
  width Pan%(2),w%-270
  top Pan%(2),0
  left Pan%(2),270
  color Pan%(2),251,108,105

  Grid Gril%                   :' objet 35
  parent Gril%,Pan%(2)
  height Gril%,height(Pan%(2))-20
  width Gril%,width(Pan%(2))-20
  top Gril%,10
  left Gril%,10
  font_name Gril%,"Arial"
  NbreR% =2
  NbreC% =8
  InitialiseGrid(NbreR%,NbreC%)  :' en ligne 266
  color Gril%,254,240,205
  inactive Gril%

  panel Pan%(3)                  :' objet 16
  parent Pan%(3),Pan%(0)
  height Pan%(3),24
  width Pan%(3),w%
  top Pan%(3),h%-24
  left Pan%(3),0
  color Pan%(3),51,208,105

  l%=-230
  for i%=1 to 4
    l%=l%+300
    Alpha ApanTtl%(i%)
    parent ApanTtl%(i%),Pan%(3)
    top ApanTtl%(i%),5
    left ApanTtl%(i%),l%
    font_name ApanTtl%(i%),"Arial"
    font_size ApanTtl%(i%),10
    font_bold ApanTtl%(i%)
  next i%
  
 Create_hide
 
  panel Pan%(4)              :' objet 17 pour le graphique
  parent Pan%(4),Pan%(0)
  height Pan%(4),h%-24
  width Pan%(4),w%-270
  top Pan%(4),0
  left Pan%(4),270
  color Pan%(4),255,255,255

  dlist Mem%
  dlist MemV%
  if file_exists(ListeV$)=1 : file_load Comb%,ListeV$ : end_if
end_sub

' ------------------------------------------------------------------------------

sub init()       :' vient de 8
dim_local a$

  if dir_exists(PathCar$)=0 then dir_make PathCar$
  if file_exists(ListeC$)=1 : file_load Mem%,ListeC$ : end_if

  if file_exists(Param$)=0
    if file_exists(Kgf$)=0
      if message_warning_yes_no("La dll KGF.dll n' a pas été trouvée !"+Chr$(13)+"Voulez vous indiquer son emplacement sur votre ordinateur ?")=1
        Open_dialog Odial%
        dir_dialog Odial%,"C:\"
        filter Odial%,"*.dll|*.dll"
        a$=file_name$(Odial%)
        delete Odial%

        if a$<>"_"
          KGF$=a$
          file_open_write F_OW%,Param$
          file_writeln F_OW%,KGF$
          file_close F_OW%
        else
          Message "Vous ne disposez pas de cette dll."+chr$(13)+"Vous pouvez la télécharger à cette adresse :"+chr$(13)+"http://klauspanoramic.comxa.com/versions/KGF.zip"
          inactive Sm%(9)
        end_if
        else
          inactive Sm%(9)
      end_if
    end_if
    else
      File_open_read F_OR%,Param$
      file_readln F_OR%,KGF$
      file_close F_OR%
  end_if
end_sub

' ------------------------------------------------------------------------------

sub InitialiseGrid(R%,C%)     :' vient de  188 -
  dim_local i%,a$
  
  a$=" DATE, LIEU, QUANTITE MISE, MONTANT €, COMPTEUR KM TOTAL, PRIX € / L, DIST PARCOURUE , MOYENNE /100, "

  grid_row_fixed Gril%,1
  grid_column_fixed Gril%,0
  grid_row Gril%,R%       :' 2 lignes
  grid_column Gril%,C%    :' 8 colonnes
  grid_one_column_width Gril%,1,100       :' pour date
  grid_one_column_width Gril%,2,190       :' pour lieu
  grid_one_column_width Gril%,3,120       :' pour quantité mise
  grid_one_column_width Gril%,4,90        :' pour montant
  grid_one_column_width Gril%,5,160       :' compteur km total
  grid_one_column_width Gril%,6,80        :' pour prix au litre
  grid_one_column_width Gril%,7,140       :' pour distance parcourue
  grid_one_column_width gril%,8,130       :' moyenne aux 100
  for i%=1 to 8
    grid_write Gril%,1,i%,left$(a$,instr(a$,",")-1)
      if i%<8
        a$=right$(a$,len(a$)-instr(a$,","))
      end_if
  next i%
end_sub

' -----------------------------------------------------------------------------

clic:     :' vient de 85,86,87,89,92,93,96
  if number_click = Sm%(2):' vient de 85
    NewCar()                 :' ligne 348 ---> pour moi Citroen C4
    return
  end_if

  if number_click = Sm%(3)    :' vient de 86
    OpenCar()                 :' en ligne  586 * --->  ma C4
    return
  end_if

  if number_click = Sm%(4)    :' vient de 87
    SaveCar()                 :' en ligne 578     ---> ma C4
    return
  end_if

  if number_click = Sm%(6)   :' vient de 89
    Quitter()                :' en ligne 589
    return
  end_if

  if number_click = Sm%(8)   :' vient de 92
    mark_on Sm%(8)
    mark_off Sm%(9)
    hide Pan%(4)
    show Pan%(2)
    return
  end_if

  if number_click = Sm%(9)    :' vient de 93
    if Car$<>""
    mark_on Sm%(9)
    mark_off Sm%(8)
    hide Pan%(2)
    show Pan%(4)
    Histogramme()             :' en ligne 666
  else
    message "Vous devez ouvrir ou créer un fichier !"
  end_if
  return
  end_if

  if number_click = Sm%(11)   :' vient de 96
    FindKgfdll()              :' en ligne 718
    return
  end_if

  if number_click = Btn%
    SaveFormulaire()      :' en ligne 385
    return
  end_if
return

' -----------------------------------------------------------------------

sub NewCar()      :' vient 295

  dim_local a$,b$,v%,i%

  if message_input("Nouveau véhicule","Marque , Modèle","")=1  :' ****
  a$=message_text$                                             :'    *
                                                               :'    *
  if a$<>""    :' ***************************************            *
    Car$=a$                                        :'   *            *
    Car$=upper$(Car$)                              :'   *            *
      if count(Mem%)>0   :' ******************          *            *
        for i%=1 to count(Mem%)          :'  *          *            *
          b$=item_read$(Mem%,i%)         :'  *          *            *
            if b$=Car$  :' *****             *          *            *
              v%=1      :'     *             *          *            *
              exit_for  :'     *             *          *            *
            end_if      :' *****             *          *            *
        next i%                          :'  *          *            *
        if v%=0         :' ************      *          *            *
          item_add Mem%,Car$      :'  *      *          *            *
          file_save Mem%,ListeC$  :'  *      *          *            *
        end_if          :' ************      *          *            *
        else                            :'   *          *            *
        item_add Mem%,Car$              :'   *          *            *
        file_save Mem%,ListeC$          :'   *          *            *
        end_if         :' ********************          *            *
  end_if       :' ***************************************            *
                                                              :'     *
        caption 0,"CONSOMMATION  CARBURANT de ma  "+Car$      :'     *
          active Btn%                                         :'     *
          active Gril%                                        :'     *
                                                              :'     *
  end_if   :' ********************************************************
end_sub

' -----------------------------------------------------------------------------

sub SaveFormulaire()        :' vient de 341
  dim_local i%,a$,v%,mes$,M$,prixlit$

  mes$="Format de date invalide ! (jj/mm/aaaa)"
  '  verif du format de la date
  if text$(Edi%(1))<>""
    if numeric(left$(text$(Edi%(1)),2))=0  or numeric(mid$(text$(Edi%(1)),4,2))=0  or numeric(right$(text$(Edi%(1)),4))=0
            message mes$
            exit_sub
      else
        if mid$(text$(Edi%(1)),3,1)<>"/" or mid$(text$(Edi%(1)),6,1)<>"/"
                message mes$
                exit_sub
        end_if
    end_if
  else
    message mes$
    exit_sub
  end_if

  '  ajout d' une ville dans la liste
  if count(MemV%)>0
    v%=0
      for i%=1 to count(MemV%)
        a$=item_read$(MemV%,i%)
          if a$=text$(Comb%)
            v%=1
            exit_for
          end_if
      next i%
      if v%=0
        item_add MemV%,text$(Comb%)
        file_save MemV%,ListeV$
        file_load Comb%,ListeV$
      end_if
  else
    item_add MemV%,text$(Comb%)
    file_save MemV%,ListeV$
    file_load Comb%,ListeV$
  end_if

  '  validité compteur km, quantité mise, montant, prix/l
  for i%=2 to 4
    if text$(Edi%(i%))=""
      Message "Vous n'avez pas renseigner le champ "+caption$(alph%(i%+1))+chr$(13)+"Les calculs sont impossibles."
      exit_sub
    end_if
  next i%

  '  calcul Moy au 100 intermédiaire
  
    if len(grid_read$(Gril%,2,1))>0
          NbreR%=NbreR%+1
          grid_row_insert Gril%,NbreR%
      end_if
      
  ConsoMoyenInter()       :' en ligne 459

  if Minter <> 0 : M$=str$(Minter) : else : M$="" : end_if   :' m$ pour la moyenne de la conso
  if prixlit <> 0     : prixlit$=str$(prixlit)    : else : prixlit$="" : end_if  :' prixlit= prix au litre

  grid_write Gril%,NbreR%,1,text$(Edi%(1))     :' date
  grid_write Gril%,NbreR%,2,text$(Comb%)       :' lieu du complément
  grid_write Gril%,NbreR%,3,text$(Edi%(2))     :' quantité mise
  grid_write Gril%,NbreR%,4,text$(Edi%(3))     :' montant €
  grid_write Gril%,NbreR%,5,text$(Edi%(4))     :' compteur km total
  grid_write Gril%,NbreR%,6,prixlit$           :' prix au litre
  grid_write Gril%,NbreR%,7,distparcourue      :' distance parcourue
  grid_write Gril%,NbreR%,8,M$                 :' pour la conso moyenne au 100

  Calculer()     :' en ligne 520

 end_sub

' ------------------------------------------------------------------------------

sub ConsoMoyenInter()   :' vient de 439

  if NbreR% = 2     :' c'est le 1er enregistrement
     message " Citroen a mis pour 35€ d'essence ce qui correspond a 30 litres environ "
     conso = val(text$(edi%(2)))
     consototale=consototale+conso
     totaleuro=val(text$(edi%(3)))
     prixlit = val(text$(edi%(3)))/conso
     prixlit=prixlit*1000 : prixlit=int(prixlit)/1000
     gosub affichage
  end_if
  
  if NbreR% = 3     :' 2em enregistrement
     message " garage citroen --->leclerc pour complèment de plein.j'ai mis 28,36 litres pour 34 euros"
      conso = val(text$(edi%(2)))
      prixlit=val(text$(edi%(3)))/conso
      prixlit=prixlit*1000 : prixlit=int(prixlit)/1000
      consototale=consototale+conso
      totaleuro=totaleuro+val(text$(edi%(3)))
      gosub affichage
  end_if
  
  if NbreR% =4   :  ' debut des vrais calculs
    distparcourue = val(text$(Edi%(4)))
    totalkm =  val(text$(Edi%(4)))
    dist =  val(text$(Edi%(4)))
    ' ---
    conso = val(text$(edi%(2)))    :' correspond à qté mise entre 2 complèments de plein
    consototale=consototale+conso
    ' ----
    totaleuro=totaleuro+val(text$(edi%(3)))
    prixlit=val(text$(edi%(3)))/conso
    prixlit=prixlit*1000 : prixlit=int(prixlit)/1000
    ' ---
    Minter = (conso/distparcourue)*100      :' corespond à la moyenne
    Minter=Minter*100 : Minter=int(Minter)/100
    gosub affichage     :' en ligne 576
  end_if
  ' -------------------------------------------

  if NbreR% =>5
    ' kilometrage total et parcourue entre 2 pleins
     totalkm = val(text$(Edi%(4)))
     distparcourue = totalkm - val(grid_read$(gril%,NbreR%-1,5))
    ' prix au litre et conso intermediaire et totale
    conso =val(text$(edi%(2)))
    consototale=consototale+conso
    prixlit=val(text$(edi%(3)))/conso
    ' ----
    Minter =(conso/distparcourue)*100
  ' -----
   Minter=Minter*100 : Minter=int(Minter)/100
   prixlit=prixlit*1000 : prixlit=int(prixlit)/1000
   end_if
gosub affichage
end_sub

' --------------------------------------------------

sub calculer()      :' vient de 455
  dim_local a$,b$,c$,d$,i%
  
    if nbrer%=2
      b$ = grid_read$(gril%,2,3)    :' lecture de quatité mise
      consototale = val(b$)         :' pour affichage dans barre inferieure
      c$ = grid_read$(gril%,2,4)    :' lecture de montant en euros
      totaleuro = val(c$)           :' pour affichage dans barre inferieure
      gosub affichage
    end_if
  
    if NbreR%=3
      b$ = grid_read$(gril%,3,3)
      conso=val(b$)
      consototale=val(b$)+val(grid_read$(gril%,NbreR%-1,3))
      c$ = grid_read$(gril%,3,4)
      totaleuro = val(c$)+val(grid_read$(gril%,NbreR%-1,4))
      gosub affichage
    end_if
  ' ---------------------------------------------------
 if NbreR%=>4
'   nombre total de km parcourus
    totalkm=val(grid_read$(gril%,NbreR%,5))    
'    conso essence sur parcours intermédiaire
      b$ = grid_read$(Gril%,nbrer%,3)  :' qté mise
      conso=val(b$)            
'    dépense en euros et consommation totale
      totaleuro = 0   : consototale = 0
     for i%= 2 to NbreR%
       b$ = grid_read$(gril%,i%,4)
       totaleuro=totaleuro+val (b$)
       c$ = grid_read$(gril%,i%,3)
       consototale = (consototale)+val(c$)
     next i%
     consototale=consototale-58.36
     ' moyenne générale
      Conso100 = (Conso /TotalKm)*100
      Conso100 = Conso100*100
      Conso100 = int(Conso100)/100
      moyengene=(consototale/totalkm)*100
      moyengene=moyengene*100
      moyengene=int(moyengene)/100
      gosub affichage
  end_if
end_sub

' ------------------------------------------------------------------------------

affichage:

  caption ApanTtl%(1),"Kilomètrage total : "+str$(TotalKm)+" Km"
  caption ApanTtl%(2),"Dépense totale : "+str$(TotalEuro)+" €"
  caption ApanTtl%(3),"Consommation totale : "+str$(consototale)+" L"
  caption ApanTtl%(4),"Moyenne générale : "+str$(moyengene)+" L/100 km"
return

' -------------------------------------------------------------------

close:         :' vient de fermeture croix
  if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
    grid_save Gril%,NbreR%,NbreC%,PathCar$+Car$+".car"
  end_if
return

' ------------------------------------------------------------------------------

sub OpenCar()        :' vient de 300
  dim_local a$,f$,r$,c$ ,dist
  
  Open_dialog Odial%
  dir_dialog Odial%,PathCar$
  filter Odial%,"*.car|*.car"       :'  filter Odial%,"*.car|*.txt" oté le .txt le 02/10/17  remplacé par car
  a$=file_name$(Odial%)
  delete Odial%

  if a$<>"_"
    f$=a$
    Car$=file_extract_name$(a$)
    Car$=left$(Car$,len(Car$)-4)
    file_open_read F_OR%,f$
    file_readln F_OR%,r$
    NbreR%=val(r$)      :' c'est a dire  2
'    NbreR% = NbreR%+1   :' rajouté le 20/01
    file_readln F_OR%,c$
    NbreC%=val(c$)
    file_close F_OR%
    InitialiseGrid(NbreR%,NbreC%)
    grid_load Gril%,f$
    caption 0,"CONSOMMATION  CARBURANT de ma  "+" - "+Car$
    active Btn%
    active Gril%

      calculer()     :' en ligne  49
  end_if
end_sub

' ------------------------------------------------------------------------------

sub SaveCar()     :' vient de 305,641
  dim_local f$
  if Car$<>""
    f$= PathCar$+Car$+".car"
    grid_save Gril%,NbreR%,NbreC%,f$
  end_if
  '  initialisation du formulaire
  ClearFormulaire()        :' en ligne

end_sub

' -----------------------------------------------------------------

sub ClearFormulaire()     :' vient de
  dim_local i%
  for i%=1 to 4 : text Edi%(i%),"" : next i%
  text comb%,""
end_sub

' ----------------------------------------------------------------------------

sub Quitter()      :' vient de 310
    if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
      SaveCar()     :' en ligne 618
    end_if
  Terminate
end_sub

' ------------------------------------------------------------

sub Histogramme()   :' vient de 328
  dim_local res%
  CreateHistoFile()
  dll_on kgf$
  res% = dll_call2("Histogramme",adr(Histo$),handle(Pan%(4)))
  dll_off
  file_delete Histo$
end_sub

' -----------------------------------------------------------------------

sub CreateHistoFile()
  dim_local i%,a$,v%
  ' message " je suis dans créatehistofile "
  file_open_write F_OW%,Histo$
  file_writeln F_OW%,"#Type=LINE"
  file_writeln F_OW%,"#Bord droit=17"
  file_writeln F_OW%,"#Bord bas=38"
  file_writeln F_OW%,"#Largeur fenêtre="+str$(width(Pan%(4))-50)
  file_writeln F_OW%,"#Hauteur fenêtre="+str$(height(Pan%(4))-50)
  file_writeln F_OW%,"#Style=2D"
  file_writeln F_OW%,"#Grille=H"
  '  file_writeln F_OW%,"#Légendes"
  file_writeln F_OW%,"#Largeur=1"
  file_writeln F_OW%,"#Séries=1"
  file_writeln F_OW%,"#Valeurs="+str$(NbreR%-1)
  file_writeln F_OW%,"#Données=1"
  for i%=2 to NbreR%
    a$=grid_read$(Gril%,i%,8)
      if a$="" then a$="0"
        v%=val(a$)*100
        separator_is_comma
        a$=str$(int(v%)/100)
        file_writeln F_OW%,a$
        separator_is_point
  next i%
  file_writeln F_OW%,"#Minimum Y=0"
  file_writeln F_OW%,"#Maximum Y=10"   :' 30
  file_writeln F_OW%,"#Ecart Y=1"
  file_writeln F_OW%,"#Légende Y=0"
  file_writeln F_OW%,"#Titres"
  file_writeln F_OW%,"Haut=Evolution de la consommation"
  file_writeln F_OW%,"Gauche=Conso. en Litres / 100 Km"
  file_writeln F_OW%,"Bas=Relevés"
  '  file_writeln F_OW%,"Droite=Divers"
  file_writeln F_OW%,"#Légendes séries"
  file_writeln F_OW%,"Carburant"
  file_close F_OW%
end_sub












Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Conso-essence Empty
MessageSujet: Conso-essence   Conso-essence EmptyJeu 11 Avr 2019 - 18:08

Merci Marc pour toutes ces remarques pointues.
Voici (plus haut) une version 1.4 qui corrige tout cela
(sauf le fonctionnement de la calculette qui est prévue pour du tactile).
flower
@RMont :
Joli, le programme de conso essence !
Ca, c'est pour ceux qui se servent beaucoup de leur voiture !
Laughing
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Conso-essence Empty
MessageSujet: re   Conso-essence EmptyVen 12 Avr 2019 - 23:01

Petite remarque... Laughing

Il est possible d' entrer et d'enregistrer des valeurs dans le tableau sans même avoir ouvert un fichier ou en avoir créé un. Embarassed
- Il serait judicieux que le fonctionnement du bouton d' enregistrement soit conditionné à l'ouverture ou la création
d'un fichier voiture ainsi que celui d'enregistrement dans le menu.
Revenir en haut Aller en bas
jjn4

jjn4


Nombre de messages : 2747
Date d'inscription : 13/09/2009

Conso-essence Empty
MessageSujet: +++   Conso-essence EmptySam 13 Avr 2019 - 17:49

Yannick a écrit:
Il serait judicieux que le fonctionnement du bouton d' enregistrement soit conditionné à l'ouverture ou la création
d'un fichier voiture ainsi que celui d'enregistrement dans le menu
C'est automatique, tu entre le kilométrage de départ et rien d'autre et le fichier se formate.
Et ensuite, tu ajoutes tes consos d'essence.
Ah, évidemment, il y a le cas où tu voudrais différencier plusieurs voitures :
dans ce cas, prend le programme de RMont qui est plus pointu.
king
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
RMont




Nombre de messages : 233
Age : 82
Localisation : charente maritime
Date d'inscription : 29/12/2008

Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence EmptySam 13 Avr 2019 - 18:17


bonjour a tous
et pour Yannick
avant toute chose je voudrai dire que l'idée de départ de ce projet remonte au 15 sept 2016.
ily y a eu plusieurs réponses dont celles de yannick qui a repris et grandement amélioré mon ébauche de code (voir 17,26,27 sept 2016).
ce code (de yannick ),e l'ai repris et mis ensuite a mon gout.
pour l'instant je m'en sert tel quel .
si cela intéresse  je peu vous dire comment enregistrer les 2 premieres données;ensuite les calculs se font automatiquement
Revenir en haut Aller en bas
Contenu sponsorisé





Conso-essence Empty
MessageSujet: Re: Conso-essence   Conso-essence Empty

Revenir en haut Aller en bas
 
Conso-essence
Revenir en haut 
Page 1 sur 1

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: