FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Mah-Jong européen new-look
par jjn4 Aujourd'hui à 15:48

» KGF.dll - demandes ou suggestions de modifications ou ajouts
par pascal10000 Aujourd'hui à 13:46

» a l'aide klaus
par Minibug Aujourd'hui à 11:42

» KGF_dll - nouvelles versions
par Minibug Aujourd'hui à 1:48

» bug SYNEDIT_TARGET_IS_OBJECT
par Jack Aujourd'hui à 0:16

» Jukebox : Serge Reggiani
par papydall Sam 9 Déc 2017 - 5:58

» Ecouter la radio fm sur votre pc
par pascal10000 Sam 9 Déc 2017 - 3:42

» anomalie
par Klaus Sam 9 Déc 2017 - 3:21

» hommage
par Jicehel Ven 8 Déc 2017 - 11:29

» Logiciel de soutien scolaire en langues.
par Pedro Alvarez Ven 8 Déc 2017 - 10:43

» carte son
par Klaus Ven 8 Déc 2017 - 2:37

» API Windows
par Klaus Jeu 7 Déc 2017 - 21:03

» mise a jour calculatrice
par joeeee2017 Mer 6 Déc 2017 - 22:19

» j'ai un petit problème
par JL35 Mer 6 Déc 2017 - 21:58

» source vumetre avec delphi
par Klaus Mar 5 Déc 2017 - 23:22

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Décembre 2017
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
25262728293031
CalendrierCalendrier

Partagez | 
 

 pourquoi cette erreur?

Voir le sujet précédent Voir le sujet suivant Aller en bas 
AuteurMessage
RMont



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

MessageSujet: pourquoi cette erreur?   Jeu 15 Sep 2016 - 10:35


bonjour a tous.
je commence par montrer l'erreur

et maintenant je pose la question:que veux dire exactement cette erreur "numéro d'objet hors limite en ligne 146" ?.
j'ai mis row% car j'ajoute une ligne a chaque fois que je rentre les valeurs correspondantes a
un nouveau complèment de plein d'essence ( environ 2 a 3 semaines) donc pour commencer j'ai mis row% a 1 pour la 1ere sauvegarde.
pour le chargement du fichier en ligne 147 je rajoute donc une ligne a remplir row%+1.
je précise ,le fichier "consoessence" est bien sauvegardé avec comme valeur en tête 1 et 9
avec toutes les valeurs correspondantes des 9 colonnes.

donc pourquoi cette erreur qui m'empêche de continuer ?

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 11:03

Bonjour RMont,

Dans le sous-programme loadfichier, inverses les 2 lignes.
Je pense que tu devrais ajouter la ligne au grid avant de charger le fichier.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Pedro Alvarez

avatar

Nombre de messages : 881
Date d'inscription : 19/01/2014

MessageSujet: Objet Grid.   Jeu 15 Sep 2016 - 11:05

Bonjour.

Personnellement, je remplacerais la commande INSERT par WRITE.

Bonne continuation.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 11:23

Bonjour à tous

@Rmont
Cette erreur survient quand tu essayes de charger un fichier dans un grid qui n'exite pas. La commande 'grid_load' ne cré pas de grid, elle le rempli!
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 12:54


merci pour ces premieres réponses
le grid en question est crée en début de programme
mais effectivement je me posai cette question :ou est ce grid
alors si je poste mon projet ,est-ce qu'il serai de me montrer ou cela "pèche" ,car je ne voi pas comment recuperer ce grid si je me sert de la cde "ouvrir" que me servira a entrer des novelles données
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 13:21

@Rmont
oui, bien sur tu peux poster ton projet, ça sera plus facile de voir ou est le pb.

Sinon essaye d'ajouter cette ligne dans 'loadfichier:'
if object_exists(100)=0 then grid 100
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 14:46


a silverman
je prefere poster mon projet
Code:

' grid vervion 16 ter du 14/09/16
' version en élaboration
error_french

variables()
labels()

height 0,850 : width 0,1600

main_menu 20
  sub_menu 22:caption 22,"Fichier"
  parent 22,20
 
  sub_menu 24:caption 24,"Nouveau"    :' en ligne 41
  parent 24,22
  on_click 24,nouveau

  sub_menu 26:caption 26,"Ouvrir"
  parent 26,22
  on_click 26,loadfichier          :' en ligne 145

  sub_menu 28:caption 28,"  "
  parent 28,22

  sub_menu 30:caption 30,"Quitter"  :' en ligne 162
  parent 30,22
  on_click 30,quitter
 

  sub_menu 32:caption 32,"Aide"
  parent 32,20

  sub_menu 34:caption 34,"A lire"
  parent 34,32
  on_click 34,alire              :' en ligne 150
 


end

nouveau:
picture 50: width 50, 1600: height 50, 400
color 50, 241,239,255
2D_target_is 50
2D_fill_color 0,255,0

print_target_is 50 : font_name 50, "Consolas" : font_size 50, 12

2d_rectangle x,y,x+l-1,y+h-1  : PRINT_LOCATE x+30,y+15: print "Date" : x=x+l
2d_rectangle x,y,x+240-1,y+h-1 : PRINT_LOCATE x+100,y+15 : print "Lieu" : x=x+240
2d_rectangle x,y,x+120-1,y+h-1 : print_LOCATE x+15,y+15 : print "Qté d'ess" : x=x+120
2d_rectangle x,y,x+130-1,y+h-1 : print_LOCATE x+13,y+15 : print "Pour X Kms" : x=x+130
2d_rectangle x,y,x+140-1,y+h-1 : print_LOCATE x+13,y+15 : print "Prix total" : x=x+140
2d_rectangle x,y,x+130-1,y+h-1 : print_LOCATE x+11,y+15 : print "Prix_litre" : x=x+130
2d_rectangle x,y,x+170-1,y+h-1 : print_LOCATE x+5,y+15 : print "Total compteur" : x=x+170
2d_rectangle x,y,x+180-1,y+h-1 : print_LOCATE x+13,y+15 : print "Moyenne au 100" : x=x+180
2d_rectangle x,y,x+200-1,y+h-1 : print_locate x+5,y+15 : print "Moyenne  générale" : x=x+130

' création d'un GRID
 grid 100
'  hide 100
  top 100,90 : left 100,60 : height 100,700 : width 100,1470
  grid_row 100,row%    : ' 1 rangée pour commencer
  grid_row_height 100,25  :' hauteur des lignes
  grid_column 100,9      :' grid à 9 colonnes
  font_name 100,"consolas" :font_size 100,11

  grid_one_column_width 100,1,107    :' date
  grid_one_column_width 100,2,239    :' lieu
  grid_one_column_width 100,3,120    :' qte d'ess
  grid_one_column_width 100,4,129    :' pour x kms
  grid_one_column_width 100,5,139    :' prix total
  grid_one_column_width 100,6,128    :' prix au litre
  grid_one_column_width 100,7,169    :' total compteur
  grid_one_column_width 100,8,179    :' moyenne au 100
  grid_one_column_width 100,9,199    :' moyenne générale
  questionnaire()
return

sub questionnaire()
  form 200
  width 200,350 : left 200,570 :  height 200,350 : top 200,(screen_y-210)/2
  caption 200,"Remplir ce questionnaire"
  color 200,0,0,0          :' blanc
  command_target_is 200
    edit 201:left 201,110:top 201,15:width 201,180 :font_color 201,0,0,0  :set_focus 201:' dat$
    edit 202:left 202,110:top 202,45:width 202,180 :font_color 202,0,0,0  :' lieu$
    edit 203:left 203,110:top 203,75:width 203,180 :font_color 203,0,0,0  :' qtess
    edit 204:left 204,110:top 204,105:width 204,180:font_color 204,0,0,0  :' xkms
    edit 205:left 205,110:top 205,135:width 205,180:font_color 205,0,0,0  :' ptot
    edit 206:left 206,110:top 206,165:width 206,180:font_color 206,0,0,0  :' plit
    edit 207:left 207,110:top 207,195:width 207,180:font_color 207,0,0,0  :' kmstot%

  print_target_is 200
    font_color 200,255,255,255      :' blanc
    print_locate 0,20  :  print "      Date        : "
    print_locate 0,50  :  print "      Lieu        : "
    print_locate 0,80  :  print "      Qté d'ess  : "
    print_locate 0,110 :  print "      Pour X kms  : "
    print_locate 0,140 : print "      Prix total    : "
    print_locate 0,170 : print "      Prix_litre    : "
    print_locate 0,200 : print "      Kilom total  : "
    button 210 : left 210,(width(200)-width(200))/2+150:top 210,250 : caption 210,"Calcul"
    on_click 210 , calcul
end_sub

calcul:
 ' ci-dessous récupération des données
  dat$=text$(201)
  modat()                        :' modif date en xx/xx/xx
  lieu$ =text$(202)
  qtess=val(text$(203))
  xkms=val(text$(204))
  ptot=val(text$(205))
  plit=val(text$(206))
  kmstot%=val(text$(207))
 ' ci_dessous calcul des moyennes
  moycent=qtess*100/xkms        :' moyenne au 100 kms
  qtal=qtal+qtess              :' quantité totale pleins + pleins
  moygen = qtal*100/kmstot%    :' moyenne générale depuis début

  hide 200
  show 100

  grid_write 100,row%,1,dat$
  grid_write 100,row%,2,lieu$
  grid_write 100,row%,3,qtess
  grid_write 100,row%,4,xkms
  grid_write 100,row%,5,ptot
  grid_write 100,row%,6,plit
  grid_write 100,row%,7,kmstot%
  grid_write 100,row%,8,moycent
  grid_write 100,row%,9,moygen
  grid_save 100,row%,9,"consoessence.txt"
return

sub modat()
  dim_local b$,c$,d$
  b$=left$(dat$,2)
  c$=mid$(dat$,3,2)
  d$=right$(dat$,2)
  dat$=b$+"/"+c$+"/"+d$
end_sub

loadfichier:
grid_load 100,"consoessence.txt"
 grid_row_insert 100,row%+1
return

alire:
dim t$
t$="il faut rentrer la date sous cette forme : exemple 150916 (15 septembre 2016)."+chr$(13)
t$=t$+"le programme se chargera  de mettre la date sous cette forme : 15/09/16."+chr$(13)
t$=t$+"  "+chr$(13)
t$ =t$+" le but de ce code est de connaitre la consommation moyenne d'essence aux 100 kms de ma citroen c4 ,"+chr$(13)
t$=t$+" je veux savoir aussi combien d'argent , pour de l'essence , j'ai investit dans ce véhicule."

alpha 10 : top 10,20 :left 10,350 :font_bold 10 : font_size 10,12
caption 10,t$
return

quitter:
if message_confirmation_yes_no ("fermeture du programme ? ")=1 then grid_save 100,row%,9,"consoessence.txt"
terminate
return


sub variables()
  dim qtess :' quantité d' essence mise
  dim ptot :' prix payé
  dim plit :' prix au litre
  dim xkms :' correspond au compteur jounalier sur pluieurs jours
  dim kmstot% :' compteur total
  dim lieu$  :' lieu du complément
  dim moycent :' moyenne au 100 kms
  dim qtal :' addition de tous les pleins
  dim moygen :' moyenne générale depuis debut
  dim dat$  :' coorespond à la date du plein
  dim row% : row%=1  :' row%  =une ligne de plus
  dim x,y,l,h
  ' x1,y1,al
  x = 60: y = 50: l = 110: h = 45
end_sub


sub labels()
 label nouveau
 label calcul
 label loadfichier
 label alire
 label quitter
end_sub

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Jeu 15 Sep 2016 - 14:52

Code:
quitter:
if message_confirmation_yes_no ("fermeture du programme ? ")=1
   if object_exists(100)=1
      grid_save 100,row%,9,"consoessence.txt"
   end_if
end_if
terminate
return


Pour éviter une horreur, heu...une erreur lorsque l' on veut quitter sans être passé par l' étape "Nouveau"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
silverman

avatar

Nombre de messages : 475
Age : 45
Localisation : Picardie
Date d'inscription : 19/03/2015

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 15:47

@Rmont

C'est bien ce que je pensais, quand tu cliques sur "ouvrir", tu essayes de remplir un grid qui n'existe pas. En fait, ton grid est créé seulement quand tu cliques sur "nouveau".
c'est juste logique, regarde:
-juste après le menu, cré le grid 100 et cache le
-si click sur "ouvrir" --->plus de pb
-si click sur "nouveau", alors supprime le(il est peut être rempli, mais on en plus besoin) et recré le caché
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 19:53

Le problème Rmont, c'est que tu crées des OBJETS après le END.

J'ai rangé ton code pour que les objets soit tous crées avant END dans la SUB obj().
Si un objet ne doit pas être visible ou actif au départ tu utilise HIDE N et INACTIVE n.
Ensuite tu peux toujours remettre ces objets en service avec SHOW N et ACTIVE n.

voici ton code:
Code:

' grid vervion 16 ter du 14/09/16
' version en élaboration
error_french

variables()
labels()
obj()

END
rem ============================================================================
nouveau:
  2D_target_is 50
  2D_fill_color 0,255,0

print_target_is 50 : font_name 50, "Consolas" : font_size 50, 12

2d_rectangle x,y,x+l-1,y+h-1  : PRINT_LOCATE x+30,y+15: print "Date" : x=x+l
2d_rectangle x,y,x+240-1,y+h-1 : PRINT_LOCATE x+100,y+15 : print "Lieu" : x=x+240
2d_rectangle x,y,x+120-1,y+h-1 : print_LOCATE x+15,y+15 : print "Qté d'ess" : x=x+120
2d_rectangle x,y,x+130-1,y+h-1 : print_LOCATE x+13,y+15 : print "Pour X Kms" : x=x+130
2d_rectangle x,y,x+140-1,y+h-1 : print_LOCATE x+13,y+15 : print "Prix total" : x=x+140
2d_rectangle x,y,x+130-1,y+h-1 : print_LOCATE x+11,y+15 : print "Prix_litre" : x=x+130
2d_rectangle x,y,x+170-1,y+h-1 : print_LOCATE x+5,y+15 : print "Total compteur" : x=x+170
2d_rectangle x,y,x+180-1,y+h-1 : print_LOCATE x+13,y+15 : print "Moyenne au 100" : x=x+180
2d_rectangle x,y,x+200-1,y+h-1 : print_locate x+5,y+15 : print "Moyenne  générale" : x=x+130

  questionnaire()
RETURN

rem ============================================================================

SUB questionnaire()
  form 200
  width 200,350 : left 200,570 :  height 200,350 : top 200,(screen_y-210)/2
  caption 200,"Remplir ce questionnaire"
  color 200,0,0,0          :' blanc
  command_target_is 200
    edit 201:left 201,110:top 201,15:width 201,180 :font_color 201,0,0,0  :set_focus 201:' dat$
    edit 202:left 202,110:top 202,45:width 202,180 :font_color 202,0,0,0  :' lieu$
    edit 203:left 203,110:top 203,75:width 203,180 :font_color 203,0,0,0  :' qtess
    edit 204:left 204,110:top 204,105:width 204,180:font_color 204,0,0,0  :' xkms
    edit 205:left 205,110:top 205,135:width 205,180:font_color 205,0,0,0  :' ptot
    edit 206:left 206,110:top 206,165:width 206,180:font_color 206,0,0,0  :' plit
    edit 207:left 207,110:top 207,195:width 207,180:font_color 207,0,0,0  :' kmstot%

  print_target_is 200
    font_color 200,255,255,255      :' blanc
    print_locate 0,20  :  print "      Date        : "
    print_locate 0,50  :  print "      Lieu        : "
    print_locate 0,80  :  print "      Qté d'ess  : "
    print_locate 0,110 :  print "      Pour X kms  : "
    print_locate 0,140 : print "      Prix total    : "
    print_locate 0,170 : print "      Prix_litre    : "
    print_locate 0,200 : print "      Kilom total  : "
    button 210 : left 210,(width(200)-width(200))/2+150:top 210,250 : caption 210,"Calcul"
    on_click 210 , calcul
END_SUB

rem ============================================================================

calcul:
 ' ci-dessous récupération des données
  dat$=text$(201)
  modat()                        :' modif date en xx/xx/xx
  lieu$ =text$(202)
  qtess=val(text$(203))
  xkms=val(text$(204))
  ptot=val(text$(205))
  plit=val(text$(206))
  kmstot%=val(text$(207))
 ' ci_dessous calcul des moyennes
  moycent=qtess*100/xkms        :' moyenne au 100 kms
  qtal=qtal+qtess              :' quantité totale pleins + pleins
  moygen = qtal*100/kmstot%    :' moyenne générale depuis début

  hide 200
  show 100

  grid_write 100,row%,1,dat$
  grid_write 100,row%,2,lieu$
  grid_write 100,row%,3,qtess
  grid_write 100,row%,4,xkms
  grid_write 100,row%,5,ptot
  grid_write 100,row%,6,plit
  grid_write 100,row%,7,kmstot%
  grid_write 100,row%,8,moycent
  grid_write 100,row%,9,moygen
  grid_save 100,row%,9,"consoessence.txt"
RETURN

rem ============================================================================

SUB modat()
  dim_local b$,c$,d$
  b$=left$(dat$,2)
  c$=mid$(dat$,3,2)
  d$=right$(dat$,2)
  dat$=b$+"/"+c$+"/"+d$
END_SUB

rem ============================================================================

loadfichier:
grid_load 100,"consoessence.txt"
 grid_row_insert 100,row%+1
RETURN

rem ============================================================================

alire:
dim t$
t$="il faut rentrer la date sous cette forme : exemple 150916 (15 septembre 2016)."+chr$(13)
t$=t$+"le programme se chargera  de mettre la date sous cette forme : 15/09/16."+chr$(13)
t$=t$+"  "+chr$(13)
t$ =t$+" le but de ce code est de connaitre la consommation moyenne d'essence aux 100 kms de ma citroen c4 ,"+chr$(13)
t$=t$+" je veux savoir aussi combien d'argent , pour de l'essence , j'ai investit dans ce véhicule."

alpha 10 : top 10,20 :left 10,350 :font_bold 10 : font_size 10,12
caption 10,t$
RETURN

rem ============================================================================

quitter:
if message_confirmation_yes_no ("fermeture du programme ? ")=1 then grid_save 100,row%,9,"consoessence.txt"
terminate
RETURN

rem ============================================================================

SUB variables()
  dim qtess :' quantité d' essence mise
  dim ptot :' prix payé
  dim plit :' prix au litre
  dim xkms :' correspond au compteur jounalier sur pluieurs jours
  dim kmstot% :' compteur total
  dim lieu$  :' lieu du complément
  dim moycent :' moyenne au 100 kms
  dim qtal :' addition de tous les pleins
  dim moygen :' moyenne générale depuis debut
  dim dat$  :' coorespond à la date du plein
  dim row% : row%=1  :' row%  =une ligne de plus
  dim x,y,l,h
  ' x1,y1,al
  x = 60: y = 50: l = 110: h = 45
END_SUB

rem ============================================================================

SUB labels()
 label nouveau
 label calcul
 label loadfichier
 label alire
 label quitter
END_SUB

rem ============================================================================

SUB obj()
height 0,850 : width 0,1600

' Menu
main_menu 20
  sub_menu 22:caption 22,"Fichier"
  parent 22,20

  sub_menu 24:caption 24,"Nouveau"    :' en ligne 41
  parent 24,22
  on_click 24,nouveau

  sub_menu 26:caption 26,"Ouvrir"
  parent 26,22
  on_click 26,loadfichier          :' en ligne 145

  sub_menu 28:caption 28,"  "
  parent 28,22

  sub_menu 30:caption 30,"Quitter"  :' en ligne 162
  parent 30,22
  on_click 30,quitter

  sub_menu 32:caption 32,"Aide"
  parent 32,20

  sub_menu 34:caption 34,"A lire"
  parent 34,32
  on_click 34,alire              :' en ligne 150

' picture
  picture 50: width 50, 1600: height 50, 400
  color 50, 241,239,255

' création d'un GRID
 grid 100
'  hide 100
  top 100,90 : left 100,60 : height 100,700 : width 100,1470
  grid_row 100,row%    : ' 1 rangée pour commencer
  grid_row_height 100,25  :' hauteur des lignes
  grid_column 100,9      :' grid à 9 colonnes
  font_name 100,"consolas" :font_size 100,11

  grid_one_column_width 100,1,107    :' date
  grid_one_column_width 100,2,239    :' lieu
  grid_one_column_width 100,3,120    :' qte d'ess
  grid_one_column_width 100,4,129    :' pour x kms
  grid_one_column_width 100,5,139    :' prix total
  grid_one_column_width 100,6,128    :' prix au litre
  grid_one_column_width 100,7,169    :' total compteur
  grid_one_column_width 100,8,179    :' moyenne au 100
  grid_one_column_width 100,9,199    :' moyenne générale

END_SUB

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Jeu 15 Sep 2016 - 20:09


pour ce soir je me déconnecte . je reprendrai ce sujet dans une dizaine de jours ,si je réussis pas
dans mon projet,car départ en vacances des samedi matin
bonne continuation a vous
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Ven 16 Sep 2016 - 16:14


bonjour a tous.
@ jean-claude.
j'ai eu un peu de temps aujourd'hui et j'ai étudier ta façon de faire.
cela m'a servi car j'ai fait une avancée significative. j'ai encore un petit problème qui sera bientôt résolu je pense
merci jean-claude.
retour sur le site dans une dizaine de jours car là ou je vais je n'ai pas de connexion internet
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

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

MessageSujet: Re: pourquoi cette erreur?   Ven 16 Sep 2016 - 21:13

@Rmont,

Je suis content de t'avoir aidé.
En fait, comme je l'ai dit plus haut, je n'ai rien changé à ton code. J'ai simplement regroupé la création des objets Panoramic dans la SUB obj() en m'assurant que cette SUB soit appelée avant END.

Je te souhaite de bonnes vacances, rendez-vous dans 10 jours. Very Happy

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Sam 17 Sep 2016 - 16:09

Bon, je me suis un peu amusé avec ton interface...
Code:
variables()
labels()
gui()

end

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

sub variables()
  dim_local i%
'  var d' incrémentation des objets
  dim no%
'  objets du menu
  dim mm% : no%=no%+1 : mm%=no%
  dim sm%(9): for i%=1 to 9 : no%=no%+1 : sm%(i%)=no% : next i%
'  panel de recup des dimensions de la zone de travail du form 0
  dim pan% : no%=no%+1 : pan%=no%
'  grid
  dim Table% : no%=no%+1 : Table%=no%
'  boites de dialogue
  dim Odial% : no%=no%+1 : Odial%=no%
'  fichier en lecture/ecriture
  dim Oread% : no%=no%+1 : Oread%=no%
'  Etat ( 0 pas de fichier ouvert / 1 fichier ouvert / 2 fichier ouvert et modifié
  dim Etat%
'  Adresse du dossier de sauvegarde
  dim Mesdoc$ : Mesdoc$= "C:\Users\Yannick\Desktop\Nouveau dossier\"
'  Nom du fichier en cours d' utilisation
  dim Fic$
'  Nombre de colonnes et de ligne du grid en cours
  dim Nbcol%
  dim Nbrow%
end_sub

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

sub labels()
  label clic,L,Close
end_sub

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

sub gui()
  height 0,750
  width 0,1470
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  on_close 0,Close

  main_menu mm%
  sub_menu sm%(1) : parent sm%(1),mm% : caption sm%(1),"Fichier"
  sub_menu sm%(8) : parent sm%(8),mm% : caption sm%(8),"Ajouter"  : on_click sm%(8),clic : inactive sm%(8)
  sub_menu sm%(9) : parent sm%(9),mm% : caption sm%(9),"Calculer" : on_click sm%(9),clic : inactive sm%(9)
  sub_menu sm%(2) : parent sm%(2),mm% : caption sm%(2),"Aide"

  sub_menu sm%(3) : parent sm%(3),sm%(1) : caption sm%(3),"Nouveau" : on_click sm%(3),clic
  sub_menu sm%(4) : parent sm%(4),sm%(1) : caption sm%(4),"Ouvrir" : on_click sm%(4),clic
  sub_menu sm%(5) : parent sm%(5),sm%(1) : caption sm%(5),"-"
  sub_menu sm%(6) : parent sm%(6),sm%(1) : caption sm%(6),"Quitter" : on_click sm%(6),clic

  sub_menu sm%(7) : parent sm%(7),sm%(2) : caption sm%(7),"A lire" : on_click sm%(7),clic

  panel pan%
  full_space pan%
 
end_sub

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

clic:
'  MENU NOUVEAU
    if number_click = sm%(3)
      inactive sm%(8)
      inactive sm%(9)
      if object_exists(Table%)=1
          if Etat%=2
            if message_warning_yes_no("Un fichier est en cours d'utilisation."+chr$(13)+"Voulez vous enregistrer les modifications apportées ?")=1
                dir_change Mesdoc$
                grid_save Table%,NbRow%,NbCol%,fic$
                delete Table%
            end_if
          else
            delete Table%
          end_if
      end_if
      NewFileInfo()
      if fic$<>""
          CreateTable(2,9)
          active sm%(8)
          active sm%(9)
      end_if
      Etat%=1
      return
    end_if

'  MENU OUVRIR
    if number_click = sm%(4)
      inactive sm%(8)
      inactive sm%(9)
      if object_exists(Table%)=1
          if Etat%=2
            if message_warning_yes_no("Un fichier est en cours d'utilisation."+chr$(13)+"Voulez vous enregistrer les modifications apportées ?")=1
                grid_save Table%,NbRow%,NbCol%,fic$
                delete Table%
            end_if
          else
            delete Table%
          end_if
      end_if
      OpenFile()
      if fic$<>""
          CreateTable(Nbrow%,Nbcol%)
          grid_load Table%,fic$
          active sm%(8)
          active sm%(9)
      end_if
      return
    end_if

'  MENU AJOUTER
    if number_click = sm%(8)
      if object_exists(Table%)=1
          Nbrow%=Nbrow%+1
          grid_row_insert Table%,Nbrow%
          Etat%=2
      end_if
      return
    end_if
   
'  MENU CALCULER
    if number_click = sm%(9)
      CalcGrid()
      return
    end_if
   
'  MENU QUITTER
    if number_click = sm%(6)
      Quitter()
      return
    end_if

'  MENU AIDE
    if number_click = sm%(7)
      message "Aide"
      return
    end_if
return

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

Close:
  if Etat%=2
      if Message_warning_yes_no("Votre fichier a été modifié !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        grid_save Table%,NbRow%,NbCol%,fic$
      end_if
  end_if
return

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

' dénomination d' un nouveau fichier
sub NewFileInfo()
  dim_local a$,fe%

  L:

  fic$=""
  fe%=0
 
  if message_input("Nouveau","Nom du fichier","")=1
      Fic$=message_text$+".txt"
      if fic$<>".txt"
        dir_change Mesdoc$
        a$=file_find_first$
        if instr(a$,".")>2
          a$=file_extract_name$(a$)
          if a$=fic$ : fe%=1 : end_if
        end_if
        a$=file_find_next$
        while a$<>"_"
            if instr(a$,".")>2
              a$=file_extract_name$(a$)
              if a$=fic$ : fe%=1 : end_if
            end_if
            a$=file_find_next$
        end_while
        file_find_close
      else
        message "Vous devez nommer le nouveau fichier !"
        goto L
      end_if
  end_if
  if fe%=1
      goto L
  end_if
end_sub

' Procédure de création du grid
sub CreateTable(Nr%,Nc%)
  dim_local i%,a$,c$,v$,vt$
 
  Nbcol%=Nc%
  Nbrow%=Nr%

  if object_exists(Table%)=0
      grid Table%
      parent Table%,pan%
      height Table%,height(pan%)-20
      width Table%,width(pan%)-20
      top Table%,10
      left Table%,10
     
      grid_row Table%,Nbrow%
      grid_row_fixed Table%,1
      grid_fixed_color Table%,0,255,0
     
      grid_row_height Table%,25
     
      grid_column Table%,Nbcol%
      grid_column_fixed Table%,0
     
      font_name Table%,"consolas"
      font_size Table%,11
     
      a$="107,239,120,129,139,128,169,179,199,"
      c$=" date, lieu, Qte d'ess, Pour X Kms, Prix total, Prix au litre, Total compteur, Moyenne au 100, Moyenne générale,"

      for i%=1 to Nbcol%
        v$= left$(a$,instr(a$,",")-1)
        vt$= left$(c$,instr(c$,",")-1)
        grid_one_column_width Table%,i%,val(v$)
        grid_write Table%,1,i%,vt$
        if i%<9
            a$=right$(a$,len(a$)-(len(v$)+1))
            c$=right$(c$,len(c$)-(len(vt$)+1))
        end_if
      next i%
  end_if
end_sub

' choix d' un fichier à ouvrir
sub OpenFile()
  dim_local a$
  fic$=""
  Open_dialog Odial%
  dir_dialog Odial%,Mesdoc$
  filter Odial%,"*.txt|*.txt"
  a$=file_name$(Odial%)
  delete Odial%
  if a$<>"_"
      fic$=a$
      file_open_read Oread%,fic$
      file_readln Oread%,a$ : Nbrow%=val(a$)
      file_readln Oread%,a$ : Nbcol%=val(a$)
      file_close Oread%
  end_if
end_sub

' calcul du grid
sub CalcGrid()
  message "calcul du grid"
end_sub

' sortie par le menu
sub Quitter()
  if object_exists(Table%)=1
      if Etat%=2
        if message_warning_yes_no("Un fichier est en cours d'utilisation."+chr$(13)+"Voulez vous enregistrer les modifications apportées ?")=1
            dir_change Mesdoc$
            grid_save Table%,Nbrow%,Nbcol%,fic$
        end_if
      end_if
  end_if
  Terminate
end_sub


N' oublies pas de mettre la variable Mesdoc$ en fonction de ton dossier.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Lun 26 Sep 2016 - 16:51

Je me suis un peu amusé avec ton idée... Embarassed
Code:
variables()
labels()
gui()
init()
end

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

sub variables()
  dim_local i%
 
  dim Path$  : Path$=dir_current$
  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"
  dim ListeC$ : ListeC$=Path$+"ListeC.txt"
  dim Histo$  : Histo$ =Path$+"Histo.txt"
  dim PathCar$: PathCar$=Path$+"Vehicules\"
 
  dim KGF$
 
  dim no%
  dim Mm%    : no%=no%+1 : Mm%=no%
  dim Sm%(10) : for i%=1 to 10 : no%=no%+1 : Sm%(i%)=no%  : next i%
  dim Pan%(4) : for i%=0 to 4  : no%=no%+1 : Pan%(i%)=no% : next i%

  dim Alph%(7)  : for i%=1 to 7  : no%=no%+1 : Alph%(i%)=no%: next i%
  dim Edi%(6)    : for i%=1 to 6  : no%=no%+1 : Edi%(i%)=no% : next i%
  dim Comb%      : no%=no%+1 : Comb%=no%
  dim Btn%(2)    : for i%=1 to 2  : no%=no%+1 : Btn%(i%)=no% : next i%
  dim Gril%      : no%=no%+1 : Gril%=no%
  dim Mem%      : no%=no%+1 : Mem%=no%
  dim MemV%      : no%=no%+1 : MemV%=no%
  dim ApanTtl%(5): for i%=1 to 5  : no%=no%+1 : ApanTtl%(i%)=no% : next i%
 
  dim Odial%  : no%=no%+1 : Odial%=no%
 
  dim F_OW%  : no%=no%+1 : F_OW%=no%
  dim F_OR%  : no%=no%+1 : F_OR%=no%
 
  dim NbreR%
  dim NbreC%
  dim Etat%
  dim Car$
 
  dim TotalKm
  dim TotalCarbu
  dim TotalEuro
  dim TotalConso
  dim Conso100
  dim Minter
end_sub

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

sub labels()
  label clic,L,close
end_sub

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

sub gui()
  dim_local h%,w%,t%,a$,i%,l%,b$

  height 0,650
  width 0,1200
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  caption 0,"Carbu-Conso"
  on_close 0,close
 
  main_menu Mm%

  sub_menu Sm%(1) : parent Sm%(1),Mm% : caption Sm%(1),"Véhicule"
  sub_menu Sm%(2) : parent Sm%(2),Sm%(1): caption Sm%(2),"Nouveau"    : on_click Sm%(2),clic
  sub_menu Sm%(3) : parent Sm%(3),Sm%(1): caption Sm%(3),"Ouvrir"      : on_click Sm%(3),clic
  sub_menu Sm%(4) : parent Sm%(4),Sm%(1): caption Sm%(4),"Enregistrer" : on_click Sm%(4),clic
  sub_menu Sm%(5) : parent Sm%(5),Sm%(1): caption Sm%(5),"-"
  sub_menu Sm%(6) : parent Sm%(6),Sm%(1): caption Sm%(6),"Quitter"    : on_click Sm%(6),clic

  sub_menu Sm%(7) : parent Sm%(7),Mm% : caption Sm%(7),"Affichage"
  sub_menu Sm%(8) : parent Sm%(8),Sm%(7): caption Sm%(8),"Table"    : mark_on Sm%(8) : on_click Sm%(8),clic
  sub_menu Sm%(9) : parent Sm%(9),Sm%(7): caption Sm%(9),"Graphique" : mark_off Sm%(9): on_click Sm%(9),clic

  panel Pan%(0)
  full_space Pan%(0)
  h%=height(Pan%(0))
  w%=width(Pan%(0))

  panel Pan%(1)
  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,105
 
  a$=" DATE, LIEU, COMPTEUR KM, RESERVOIR / L, QUANTITE / L, PRIX € / L, MONTANT €,"
  t%=-30
  for i%=1 to 7
      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%<7
        a$=right$(a$,len(a$)-instr(a$,","))
      end_if
      font_name Alph%(i%),"Arial"
      font_bold Alph%(i%)
  next i%
 
  t%=-15
  for i%=1 to 6
      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 or i%=6
            width Edi%(i%),80
        end_if
      end_if
      top Edi%(i%),t%
      left Edi%(i%),10
      font_name Edi%(i%),"Arial"
  next i%
 
  combo Comb%
  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))-81
  a$="Z,<,"
  b$="Effacer le formulaire,Enregistrer le formulaire,"
  for i%=1 to 2
      l%=l%+27
      button Btn%(i%)
      parent Btn%(i%),Pan%(1)
      height Btn%(i%),22
      width Btn%(i%),22
      top Btn%(i%),height(Pan%(1))-27
      left Btn%(i%),l%
      if i%=2
        font_name Btn%(i%),"Wingdings"
        font_size Btn%(i%),12
      else
        font_name Btn%(i%),"Arial"
      end_if
      caption Btn%(i%),left$(a$,instr(a$,",")-1)
      hint Btn%(i%),left$(b$,instr(b$,",")-1)
      if i%<2
        a$=right$(a$,len(a$)-instr(a$,","))
        b$=right$(b$,len(b$)-instr(b$,","))
      end_if
      cursor_point Btn%(i%)
      on_click Btn%(i%),clic
  next i%
  inactive Btn%(2)
 
  panel Pan%(2)
  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,208,105
 
  Grid Gril%
  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%)
  color Gril%,254,240,205
  inactive Gril%
 
  panel Pan%(3)
  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),251,208,105
 
  l%=-230
  for i%=1 to 5
      l%=l%+240
      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)
  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()
  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

' ------------------------------------------------------------------------------
close:
  if Etat%=2
      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
  end_if
return

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

clic:
  if number_click = Sm%(2)
      NewCar()
      return
  end_if

  if number_click = Sm%(3)
      OpenCar()
      return
  end_if
 
  if number_click = Sm%(4)
      SaveCar()
      return
  end_if
 
  if number_click = Sm%(6)
      Quitter()
      return
  end_if
 
  if number_click = Sm%(8)
      mark_on Sm%(8)
      mark_off Sm%(9)
      hide Pan%(4)
      show Pan%(2)
      return
  end_if
 
  if number_click = Sm%(9)
      if Car$<>""
        mark_on Sm%(9)
        mark_off Sm%(8)
        hide Pan%(2)
        show Pan%(4)
        Histogramme()
      else
        message "Vous devez ouvrir ou créer un fichier !"
      end_if
      return
  end_if
 
  if number_click = Btn%(1)
      ClearFormulaire()
      return
  end_if
 
  if number_click = Btn%(2)
      SaveFormulaire()
      return
  end_if
return

' ------------------------------------------------------------------------------
sub InitialiseGrid(R%,C%)
  dim_local i%,a$
 
  a$=" DATE, LIEU, COMPTEUR KM, RESERVOIR / L, QUANTITE / L, PRIX / L, MONTANT, L / 100,"

  grid_row_fixed Gril%,1
  grid_column_fixed Gril%,0
  grid_row Gril%,R%
  grid_column Gril%,C%
  grid_one_column_width Gril%,1,100
  grid_one_column_width Gril%,2,190
  grid_one_column_width Gril%,3,100
  grid_one_column_width Gril%,4,100
  grid_one_column_width Gril%,5,100
  grid_one_column_width Gril%,6,100
  grid_one_column_width Gril%,7,100

  grid_clear Gril%,2,8
  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

' ------------------------------------------------------------------------------
sub SaveFormulaire()
  dim_local i%,a$,v%,mes$,M$
 
  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, reservoir, quantité, prix/l, montant
  for i%=2 to 6
      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
  ConsoMoyenInter()
  if Minter <> 0 : M$=str$(Minter) : else : M$="" : end_if

'  ajout d' une ligne ou pas
  if len(grid_read$(Gril%,2,1))>0
      NbreR%=NbreR%+1
      grid_row_insert Gril%,NbreR%
  end_if

  grid_write Gril%,NbreR%,1,text$(Edi%(1))
  grid_write Gril%,NbreR%,2,text$(Comb%)
  grid_write Gril%,NbreR%,3,text$(Edi%(2))
  grid_write Gril%,NbreR%,4,text$(Edi%(3))
  grid_write Gril%,NbreR%,5,text$(Edi%(4))
  grid_write Gril%,NbreR%,6,text$(Edi%(5))
  grid_write Gril%,NbreR%,7,text$(Edi%(6))
  grid_write Gril%,NbreR%,8,M$
 
'  initialisation du formulaire
  ClearFormulaire()

'  calculs
  Calculer()

  Etat%=2
end_sub

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

' ------------------------------------------------------------------------------
sub NewCar()
  dim_local a$,b$,v%,i%

  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
      InitialiseGrid(2,8)
      ClearFormulaire()
  end_if

  L:
  if message_input("Nouveau véhicule","Immatriculation","")=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
      else
        goto L
      end_if

      caption 0,"Carbu-Conso"+" - "+Car$
      active Btn%(2)
      active Gril%
      Etat%=1
  else
      Etat%=0
      Car$=""
  end_if
end_sub

' ------------------------------------------------------------------------------
sub OpenCar()
  dim_local a$,f$,r$,c$

  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
      InitialiseGrid(2,8)
      ClearFormulaire()
  end_if
 
  Open_dialog Odial%
  dir_dialog Odial%,PathCar$
  filter Odial%,"*.car|*.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$)
      file_readln F_OR%,c$
      NbreC%=val(c$)
      file_close F_OR%
      InitialiseGrid(NbreR%,NbreC%)
      grid_load Gril%,f$
      caption 0,"Carbu-Conso"+" - "+Car$
      active Btn%(2)
      active Gril%
      Calculer()
      Etat%=1
  else
      Etat%=0
      Car$=""
  end_if
end_sub

' ------------------------------------------------------------------------------
sub SaveCar()
  dim_local f$
  if Car$<>""
      f$= PathCar$+Car$+".car"
      grid_save Gril%,NbreR%,NbreC%,f$
      Etat%=1
  end_if
end_sub

' ------------------------------------------------------------------------------
sub Quitter()
  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
  end_if
  Terminate
end_sub

' ------------------------------------------------------------------------------
sub Calculer()
  dim_local a$,b$,i%
 
  TotalKm = 0
  TotalCarbu = 0
  TotalEuro = 0
  TotalConso = 0
  Conso100 = 0
 
  if NbreR%>2
'    nombre de km parcourus
      a$ = grid_read$(Gril%,2,3)
      b$ = grid_read$(Gril%,NbreR%,3)
      TotalKm = val(b$)-val(a$)
'    nombre de litre achetés et total euros
      for i%=2 to NbreR%
        a$ = grid_read$(Gril%,i%,5)
        TotalCarbu = TotalCarbu+val(a$)
        b$ = grid_read$(Gril%,i%,7)
        TotalEuro = TotalEuro+val(b$)
        if i%=NbreR%-1
            TotalConso = TotalCarbu
        end_if
      next i%
'    consommation
      TotalConso = TotalConso+val(grid_read$(Gril%,2,4))-val(grid_read$(Gril%,NbreR%,4))
'    conso au 100 km
      Conso100 = (TotalConso/TotalKm)*100
     
      caption ApanTtl%(1),"Distance parcourus : "+str$(TotalKm)+" Km"
      caption ApanTtl%(2),"Total acheté : "+str$(TotalCarbu)+" L"
      caption ApanTtl%(3),"Total dépensé : "+str$(TotalEuro)+" €"
      caption ApanTtl%(4),"Total consommé : "+str$(TotalConso)+" L"
      caption ApanTtl%(5),"Moyenne : "+str$(Conso100)+" L/100 km"

  else
      caption ApanTtl%(1),""
      caption ApanTtl%(2),""
      caption ApanTtl%(3),""
      caption ApanTtl%(4),""
      caption ApanTtl%(5),""
      message "Calcul impossible !"+chr$(13)+"Pas assez de données."
  end_if
end_sub

' ------------------------------------------------------------------------------
sub ConsoMoyenInter()
  dim_local conso,dist
  if NbreR%=2
      if len(grid_read$(Gril%,2,1))>0
        conso = val(grid_read$(Gril%,2,4))+val(grid_read$(Gril%,2,5))-val(text$(Edi%(3)))
        dist = val(text$(Edi%(2)))-val(grid_read$(Gril%,2,3))
        Minter =(conso/dist)*100
      else
        Minter =0
      end_if
  else
      if NbreR%>2
        conso = val(grid_read$(Gril%,2,4))+val(grid_read$(Gril%,2,5))-val(text$(Edi%(3)))
        dist = val(text$(Edi%(2)))-val(grid_read$(Gril%,2,3))
        Minter =(conso/dist)*100
      end_if
  end_if
end_sub

' ------------------------------------------------------------------------------
sub Histogramme()
  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$

  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"
      file_writeln F_OW%,a$
  next i%
  file_writeln F_OW%,"#Minimum Y=0"
  file_writeln F_OW%,"#Maximum Y=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
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mar 27 Sep 2016 - 15:31

correction :

Code:
variables()
labels()
gui()
init()
end

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

sub variables()
  dim_local i%
 
  dim Path$  : Path$=dir_current$
  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"
  dim ListeC$ : ListeC$=Path$+"ListeC.txt"
  dim Histo$  : Histo$ =Path$+"Histo.txt"
  dim PathCar$: PathCar$=Path$+"Vehicules\"
 
  dim KGF$
 
  dim no%
  dim Mm%    : no%=no%+1 : Mm%=no%
  dim Sm%(11) : for i%=1 to 11 : no%=no%+1 : Sm%(i%)=no%  : next i%
  dim Pan%(4) : for i%=0 to 4  : no%=no%+1 : Pan%(i%)=no% : next i%

  dim Alph%(7)  : for i%=1 to 7  : no%=no%+1 : Alph%(i%)=no%: next i%
  dim Edi%(6)    : for i%=1 to 6  : no%=no%+1 : Edi%(i%)=no% : next i%
  dim Comb%      : no%=no%+1 : Comb%=no%
  dim BtnCpt%    : no%=no%+1 : BtnCpt%=no%
  dim Btn%(2)    : for i%=1 to 2  : no%=no%+1 : Btn%(i%)=no%    : next i%
  dim Gril%      : no%=no%+1 : Gril%=no%
  dim Mem%      : no%=no%+1 : Mem%=no%
  dim MemV%      : no%=no%+1 : MemV%=no%
  dim ApanTtl%(5): for i%=1 to 5  : no%=no%+1 : ApanTtl%(i%)=no% : next i%
 
  dim Odial%  : no%=no%+1 : Odial%=no%
 
  dim F_OW%  : no%=no%+1 : F_OW%=no%
  dim F_OR%  : no%=no%+1 : F_OR%=no%
 
  dim NbreR%
  dim NbreC%
  dim Etat%
  dim Car$
 
  dim TotalKm
  dim TotalCarbu
  dim TotalEuro
  dim TotalConso
  dim Conso100
  dim Minter
end_sub

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

sub labels()
  label clic,L,close,change
end_sub

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

sub gui()
  dim_local h%,w%,t%,a$,i%,l%,b$

  height 0,650
  width 0,1200
  top 0,(screen_y-height(0))/2
  left 0,(screen_x-width(0))/2
  caption 0,"Carbu-Conso"
  on_close 0,close
 
  main_menu Mm%

  sub_menu Sm%(1) : parent Sm%(1),Mm% : caption Sm%(1),"Véhicule"
  sub_menu Sm%(2) : parent Sm%(2),Sm%(1): caption Sm%(2),"Nouveau"    : on_click Sm%(2),clic
  sub_menu Sm%(3) : parent Sm%(3),Sm%(1): caption Sm%(3),"Ouvrir"      : on_click Sm%(3),clic
  sub_menu Sm%(4) : parent Sm%(4),Sm%(1): caption Sm%(4),"Enregistrer" : on_click Sm%(4),clic
  sub_menu Sm%(5) : parent Sm%(5),Sm%(1): caption Sm%(5),"-"
  sub_menu Sm%(6) : parent Sm%(6),Sm%(1): caption Sm%(6),"Quitter"    : on_click Sm%(6),clic

  sub_menu Sm%(7) : parent Sm%(7),Mm% : caption Sm%(7),"Affichage"
  sub_menu Sm%(8) : parent Sm%(8),Sm%(7): caption Sm%(8),"Table"    : mark_on Sm%(8) : on_click Sm%(8),clic
  sub_menu Sm%(9) : parent Sm%(9),Sm%(7): caption Sm%(9),"Graphique" : mark_off Sm%(9): on_click Sm%(9),clic

  sub_menu Sm%(10) : parent Sm%(10),Mm% : caption Sm%(10),"Paramètres"
  sub_menu Sm%(11) : parent Sm%(11),Sm%(10): caption Sm%(11),"KGF.dll - Rechercher sur PC"    : on_click Sm%(11),clic

  panel Pan%(0)
  full_space Pan%(0)
  h%=height(Pan%(0))
  w%=width(Pan%(0))

  panel Pan%(1)
  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,105
 
  a$=" DATE, LIEU, COMPTEUR KM, RESERVOIR Nbre L, QUANTITE en L, PRIX € / L, MONTANT €,"
  t%=-30
  for i%=1 to 7
      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%<7
        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 6
      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 or i%=6
            width Edi%(i%),80
        end_if
      end_if
      top Edi%(i%),t%
      left Edi%(i%),10
      font_name Edi%(i%),"Arial"
  next i%
 
  combo Comb%
  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
 
  spin BtnCpt%
  parent BtnCpt%,Pan%(1)
  top BtnCpt%,top(Edi%(2))
  left BtnCpt%,left(Edi%(2))+width(Edi%(2))
  width BtnCpt%,20
  min BtnCpt%,0
  max BtnCpt%,10000000
  position BtnCpt%,0
  on_change BtnCpt%,change
 
  l%=width(Pan%(1))-81
  a$="Z,<,"
  b$="Effacer le formulaire,Enregistrer le formulaire,"
  for i%=1 to 2
      l%=l%+27
      button Btn%(i%)
      parent Btn%(i%),Pan%(1)
      height Btn%(i%),22
      width Btn%(i%),22
      top Btn%(i%),height(Pan%(1))-27
      left Btn%(i%),l%
      if i%=2
        font_name Btn%(i%),"Wingdings"
        font_size Btn%(i%),12
      else
        font_name Btn%(i%),"Arial"
      end_if
      caption Btn%(i%),left$(a$,instr(a$,",")-1)
      hint Btn%(i%),left$(b$,instr(b$,",")-1)
      if i%<2
        a$=right$(a$,len(a$)-instr(a$,","))
        b$=right$(b$,len(b$)-instr(b$,","))
      end_if
      cursor_point Btn%(i%)
      on_click Btn%(i%),clic
  next i%
  inactive Btn%(2)
 
  panel Pan%(2)
  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,208,105
 
  Grid Gril%
  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%)
  color Gril%,254,240,205
  inactive Gril%
 
  panel Pan%(3)
  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),251,208,105
 
  l%=-230
  for i%=1 to 5
      l%=l%+240
      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)
  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()
  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

' ------------------------------------------------------------------------------
close:
  if Etat%=2
      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
  end_if
return

' ------------------------------------------------------------------------------
change:
  if number_change = BtnCpt%
      text Edi%(2),str$(Position(BtnCpt%))
      return
  end_if
return

' ------------------------------------------------------------------------------
clic:
  if number_click = Sm%(2)
      NewCar()
      return
  end_if

  if number_click = Sm%(3)
      OpenCar()
      return
  end_if
 
  if number_click = Sm%(4)
      SaveCar()
      return
  end_if
 
  if number_click = Sm%(6)
      Quitter()
      return
  end_if
 
  if number_click = Sm%(8)
      mark_on Sm%(8)
      mark_off Sm%(9)
      hide Pan%(4)
      show Pan%(2)
      return
  end_if
 
  if number_click = Sm%(9)
      if Car$<>""
        mark_on Sm%(9)
        mark_off Sm%(8)
        hide Pan%(2)
        show Pan%(4)
        Histogramme()
      else
        message "Vous devez ouvrir ou créer un fichier !"
      end_if
      return
  end_if
 
  if number_click = Sm%(11)
      FindKgfdll()
      return
  end_if
 
  if number_click = Btn%(1)
      ClearFormulaire()
      return
  end_if
 
  if number_click = Btn%(2)
      SaveFormulaire()
      return
  end_if
return

' ------------------------------------------------------------------------------
sub InitialiseGrid(R%,C%)
  dim_local i%,a$
 
  a$=" DATE, LIEU, COMPTEUR (KM), RESERVOIR (L), QUANTITE (L), PRIX € / L, MONTANT €, L / 100,"

  grid_row_fixed Gril%,1
  grid_column_fixed Gril%,0
  grid_row Gril%,R%
  grid_column Gril%,C%
  grid_one_column_width Gril%,1,100
  grid_one_column_width Gril%,2,190
  grid_one_column_width Gril%,3,100
  grid_one_column_width Gril%,4,100
  grid_one_column_width Gril%,5,100
  grid_one_column_width Gril%,6,100
  grid_one_column_width Gril%,7,100

  grid_clear Gril%,2,8
  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

' ------------------------------------------------------------------------------
sub SaveFormulaire()
  dim_local i%,a$,v%,mes$,M$
 
  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, reservoir, quantité, prix/l, montant
  for i%=2 to 6
      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
  ConsoMoyenInter()
  if Minter <> 0 : M$=str$(Minter) : else : M$="" : end_if

'  ajout d' une ligne ou pas
  if len(grid_read$(Gril%,2,1))>0
      NbreR%=NbreR%+1
      grid_row_insert Gril%,NbreR%
  end_if

  grid_write Gril%,NbreR%,1,text$(Edi%(1))
  grid_write Gril%,NbreR%,2,text$(Comb%)
  grid_write Gril%,NbreR%,3,text$(Edi%(2))
  grid_write Gril%,NbreR%,4,text$(Edi%(3))
  grid_write Gril%,NbreR%,5,text$(Edi%(4))
  grid_write Gril%,NbreR%,6,text$(Edi%(5))
  grid_write Gril%,NbreR%,7,text$(Edi%(6))
  grid_write Gril%,NbreR%,8,M$
 
'  initialisation du formulaire
  ClearFormulaire()

'  calculs
  Calculer()

  Etat%=2
end_sub

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

' ------------------------------------------------------------------------------
sub NewCar()
  dim_local a$,b$,v%,i%

  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
      InitialiseGrid(2,8)
      ClearFormulaire()
  end_if

  L:
  if message_input("Nouveau véhicule","Immatriculation","")=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
      else
        goto L
      end_if

      caption 0,"Carbu-Conso"+" - "+Car$
      active Btn%(2)
      active Gril%
      Etat%=1
  else
      Etat%=0
      Car$=""
  end_if
end_sub

' ------------------------------------------------------------------------------
sub OpenCar()
  dim_local a$,f$,r$,c$

  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
      InitialiseGrid(2,8)
      ClearFormulaire()
  end_if
 
  Open_dialog Odial%
  dir_dialog Odial%,PathCar$
  filter Odial%,"*.car|*.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$)
      file_readln F_OR%,c$
      NbreC%=val(c$)
      file_close F_OR%
      InitialiseGrid(NbreR%,NbreC%)
      grid_load Gril%,f$
      caption 0,"Carbu-Conso"+" - "+Car$
      active Btn%(2)
      active Gril%
      Calculer()
      text Edi%(2),grid_read$(Gril%,NbreR%,3)
      position BtnCpt%,val(grid_read$(Gril%,NbreR%,3))
      Etat%=1
  else
      Etat%=0
      Car$=""
  end_if
end_sub

' ------------------------------------------------------------------------------
sub SaveCar()
  dim_local f$
  if Car$<>""
      f$= PathCar$+Car$+".car"
      grid_save Gril%,NbreR%,NbreC%,f$
      Etat%=1
  end_if
end_sub

' ------------------------------------------------------------------------------
sub Quitter()
  if Etat%=2
      if message_warning_yes_no("Un fichier est en cours d' utilisation !"+chr$(13)+"Voulez vous sauvegarder vos modifications ?")=1
        SaveCar()
      end_if
  end_if
  Terminate
end_sub

' ------------------------------------------------------------------------------
sub Calculer()
  dim_local a$,b$,i%
 
  TotalKm = 0
  TotalCarbu = 0
  TotalEuro = 0
  TotalConso = 0
  Conso100 = 0
 
  if NbreR%>2
'    nombre de km parcourus
      a$ = grid_read$(Gril%,2,3)
      b$ = grid_read$(Gril%,NbreR%,3)
      TotalKm = val(b$)-val(a$)
'    nombre de litre achetés et total euros
      for i%=2 to NbreR%
        a$ = grid_read$(Gril%,i%,5)
        TotalCarbu = TotalCarbu+val(a$)
        b$ = grid_read$(Gril%,i%,7)
        TotalEuro = TotalEuro+val(b$)
        if i%=NbreR%-1
            TotalConso = TotalCarbu
        end_if
      next i%
'    consommation
      TotalConso = TotalConso+val(grid_read$(Gril%,2,4))-val(grid_read$(Gril%,NbreR%,4))
'    conso au 100 km
      Conso100 = (TotalConso/TotalKm)*100
      Conso100 = Conso100*100
      Conso100 = int(Conso100)/100
     
      caption ApanTtl%(1),"Distance parcourus : "+str$(TotalKm)+" Km"
      caption ApanTtl%(2),"Total acheté : "+str$(TotalCarbu)+" L"
      caption ApanTtl%(3),"Total dépensé : "+str$(TotalEuro)+" €"
      caption ApanTtl%(4),"Total consommé : "+str$(TotalConso)+" L"
      caption ApanTtl%(5),"Moyenne : "+str$(Conso100)+" L/100 km"

  else
      caption ApanTtl%(1),""
      caption ApanTtl%(2),""
      caption ApanTtl%(3),""
      caption ApanTtl%(4),""
      caption ApanTtl%(5),""
      message "Calcul impossible !"+chr$(13)+"Pas assez de données."
  end_if
end_sub

' ------------------------------------------------------------------------------
sub ConsoMoyenInter()
  dim_local conso,dist
  if NbreR%=2
      if len(grid_read$(Gril%,2,1))>0
        conso = val(grid_read$(Gril%,2,4))+val(grid_read$(Gril%,2,5))-val(text$(Edi%(3)))
        dist = val(text$(Edi%(2)))-val(grid_read$(Gril%,2,3))
        Minter =(conso/dist)*100
      else
        Minter =0
      end_if
  else
      if NbreR%>2
        conso = val(grid_read$(Gril%,NbreR%-1,4))+val(grid_read$(Gril%,NbreR%-1,5))-val(text$(Edi%(3)))
        dist = val(text$(Edi%(2)))-val(grid_read$(Gril%,NbreR%-1,3))
        Minter =(conso/dist)*100
      end_if
  end_if
  Minter=Minter*100
  Minter=int(Minter)/100
end_sub

' ------------------------------------------------------------------------------
sub Histogramme()
  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%

  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=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

' ------------------------------------------------------------------------------
sub FindKgfdll()
  dim_local a$
 
  Open_dialog Odial%
  dir_dialog Odial%,"C:\"
  filter Odial%,"*.dll|*.dll"
  a$=file_name$(Odial%)
  delete Odial%
 
  if a$<>"_"
      if upper$(file_extract_name$(a$))= "KGF.DLL"
        if file_exists(Param$)=1
            file_delete Param$
        end_if
        kgf$ = a$
        file_open_write F_OW%,Param$
        file_writeln F_OW%,a$
        file_close F_OW%
        active Sm%(9)
      end_if
  end_if
end_sub


Dernière édition par ygeronimi le Mer 28 Sep 2016 - 13:37, édité 1 fois (Raison : ajout du menu paramètres)
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Mar 27 Sep 2016 - 19:58


bonjour a tous .
je suis de retour et oh surprise ygeronimi s'amuse avec mon petit projet.c'est tres bien. je vois que d'une petite idée on peu faire de grandes choses.
je vais poser une question a ygeronimi : a quel endroit faut-il que je mette la ligne contenant l'adresse de la dll de klaus?
mon adresse est :C:\Users\Roger\Documents\Langage-Panoramic\dll_klaus\kgf.dll .
par contre , je peine a suivre ce code ( je ne suis qu'un tout petit programmeur ).
je continue ma lecture des derniers sujets.
+plus
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Mer 28 Sep 2016 - 12:17

Pour kgf, il y a deux solutions:

soit tu veux que ton programme ait un exemplaire de la dll et tu en places une copie dans le dossier du source.
(si un fichier param.inf a déjà été créé, détruit le.)

soit, comme beaucoup d' entre nous, tu l' as dans un de tes dossier et tu lances le programme qui te proposeras
de récupérer son emplacement et créera un fichier param.inf qui contiendra son adresse.

PS: je viens d' ajouter un menu paramètres qui permet de modifier l' adresse de kgf une fois le programme lancé
et sans avoir à le redémarrer.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Mer 28 Sep 2016 - 20:38

[left]
bonjour a tous
@ ygeronimi
ce soir ( il est 19h37) je n'ai pas le temps de regarder ta modif et d'étudier ton code .
reprise demain
bonne soirée a vous
[/left
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
RMont



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

MessageSujet: Re: pourquoi cette erreur?   Ven 30 Sep 2016 - 18:28


bonjour a tous
@ ygeronimi.
je vais essayer d'être précis dans ce que j'écris.
si je peux me permettre , j'aimerai te demander de me documenter tes variables ,car sans cela je ne peu comprendre.
exp: dim odial% ; f_ow% et les autres.
bien sur cela change complètement avec ma façon de faire qui est bien simple.
autre chose: pourquoi demander la capacité du reservoir ?
dans mon projet ,qui correspond a ma façon de faire, je me fiche de cette capacité.
ce que je fais : au bout de 300/400 kms ,je fais un complément de plein donc quantité d'essence mise pour x kms parcourus .je remets systématiquement le journalier a zéro qui accumule les kms jusqu'au prochain complément d'ou mon calcul:qté d'ess pour x kms.
qté/xkms*100.
et pour finir question: quelle est ta méthode ?
dessin sur papier ou élaboration au fur et a mesure ?
et merci de prendre le temps de me lire

Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

Nombre de messages : 8002
Age : 46
Localisation : Bretagne
Date d'inscription : 15/02/2010

MessageSujet: re   Ven 30 Sep 2016 - 20:59

Ok...

En principe, je visualise ce que je veux faire puis j' en fais l' interface.
Ensuite j' accroche les fonctions les unes après les autres.
Je ne passe pas par une étape papier car je suis trop fainéant et faire 2 fois la même chose... Embarassed 

Ce que tu appelles la capacité du réservoir est en faite ce qu' il reste dans ce réservoir lorsque tu passes à la pompe.
Les voitures de maintenant et leur ordi de bord te le donne sans problème, si tu as une DS des années 70 c' est plus compliqué. Laughing

Pour les variables d' objets, j' utilise l' implémentation par la variable no% 
et l' affectation d' une variable à ce numéro d' objet ce qui donne un nom à ce numéro
et rend le tout plus souple.
D'autre part, je fais la numérotation dès le début ainsi je peux supprimer un objet et le recréer avec le même numéro, exemple :

Odial% représente le numéro affecté pour l' objet Open_Dialog.
Je peux le détruire et le recréer à volonté. 

F_OW% et F_OR% sont pour file_open_write et file_open_read.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: pourquoi cette erreur?   

Revenir en haut Aller en bas
 
pourquoi cette erreur?
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» pourquoi cette erreur?
» Pourquoi j'ai choisi WordPress
» ERREUR F0070
» PB OREGON 550T : "erreur de calcul d'itinéraire: aucune route sur les cartes dans cette zône"
» Erreur java affichage didacticiel fourni avec E-Anim

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