Novembre 2024 | Lun | Mar | Mer | Jeu | Ven | Sam | Dim |
---|
| | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | | Calendrier |
|
|
| Arrondir un réel à deux chiffres après la virgule | |
|
+4jean_debord papydall Nardo26 Yannick 8 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Juin 2012 - 2:13 | |
| | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 2:38 | |
| Non ygeronimi, tu ne peux pas faire ‘ print str$(result%)’ Ça donne 0 Tu dois faire - Code:
-
print xstr$
xstr$ étant le 3ème paramètre de l’appel de la DLL - Code:
-
result% = dll_call3("print_format", adr(montant), adr(format$), adr(xstr$))
Regardes mon test posté ci-haut. | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 4:39 | |
| L’appel de cette DLL se fait ainsi : - Code:
-
result% = dll_call3("print_format", adr(montant), adr(format$), adr(xstr$))
On transmet donc à la fonction "print_format" 3 paramètres par adresse qui sont, dans cet exemple ‘montant’,’format$’ et ‘xstr$’ Le nom de la fonction (print_format) doit-être rigoureusement identique à celui déclaré dans la DLL (ce nom est donc sensible à la casse). Les 3 paramètres doivent-être déclarés avant l’appel de la DLL. Tu es libre de les nommer comme tu veux, à condition, bien sûr, de respecter leurs types. Dans ce cas, le 1er paramètre (montant par exemple) est du type réel, Le 2ème paramètre (format$) est du type string et le 3ème paramètre est également du type strings Cet exemple est correct - Code:
-
dim m, f$, r% m = 123456.0123456789 : ' la valeur à formater f$ = "00000000.00000" : ' définir le format dll_on "Format.dll" : ' charger la DLL en mémoire r% = dll_call3("print_format", adr(m), adr(f$), adr(f$)) : ' appeler la DLL print f$ : ' Afficher la valeur de m formatée dll_off : ' libérer la mémoire utilisée par la DLL
A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Juin 2012 - 5:12 | |
| @Papydall : Je ne conteste pas le fonctionnement , c'est comme çà , c'est comme çà et puis c'est tout. Mais je trouve curieux - de déclarer une variable r% - avec un signe d'égalité qui signifie que cette variable est égal à ce qui la suit - puis faire un appel de dll et afficher en résultat le troisième paramètre de cette dll. exemple dans la dll dont je me sers pour les dates et qui me renvoie en fait la date en nombre depuis une date départ comme dans excell j'initialise 3 variables pour le jour , le mois et l'année soit pour exemple : a$ , b$ , c$ - Code:
-
r% = dll_call3("NbreJours",a$,b$,c$)
print str$(r%) ' me renvoit le nombre de jours correspondant à la date
et là je trouve celà logique je voulais juste souligner quelque chose que je trouvais curieux . Bon... aller....je vais prendre ma dose de valium...c'est bon.... à moins que ....j'avais pas fait gaff à "adr" , c'est peut etre ce truc qui change quelque chose.....mais bon à quoi sert le "r%" si il n'est égal à rien.... aller ....ca coup ci, c'est double dose.... | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 7:56 | |
| Bonjour ygeronimi, le r% est une valeur de retour de la DLL. Elle t'indique juste si elle a réussi à faire ce que tu lui demande. Cette valeur doit être obligatoirement un entier, donc on ne peut pas l'utiliser pour renvoyer un réel. L'exemple fourni par jean te fais une conversion de ta valeur numerique en une chaine de caractère dans le format d'affichage que tu désires. - Code:
-
r% = dll_call3("print_format", adr(montant), adr(format$), adr(xstr$)) La fonction print_format te renverra toujours 0 (cf le return 0 dans le source de la DLL) Concernant les ADR() : Comme ta DLL est un programme externe à Panoramic, on est obligé de passer l'emplacement en RAM où se situe les paramètres (l'adresse) pour que la DLL puisse les retrouver et les modifier... Quand au passage de l'adresse du 1er paramètre, cela n'est pas nécessaire puisque c'est juste une valeur numérique que l'on passe et que l'on a pas l'intention de modifier son contenu... | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 9:12 | |
| Ce sont les limites actuelles de Panoramic qui nous imposent toutes ces acrobaties !
Panoramic est ainsi fait que :
1) les paramètres de la DLL doivent être des entiers, donc pour les réels et les chaînes de caractères on est obligés de passer leurs adresses ; il n'y a que les entiers qui peuvent passer directement
2) la valeur de retour de la fonction est obligatoirement une valeur entière. Donc lorsque le résultat du calcul est un entier on affecte sa valeur au résultat de la fonction (c'est le plus "naturel"). Lorsque le résultat est un réel ou (comme ici) une chaîne de caractères, on l'affecte à un paramètre de la fonction (ici le paramètre xstr$) et on donne une valeur entière quelconque un résultat, p. ex. un code d'erreur.
Mais il est certain que l'intégration de Panoramic avec FreeBASIC permettra à Jack de concevoir un système beaucoup plus souple, car FreeBASIC peut utiliser tous types de fonctions dans les DLL. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 9:17 | |
| Bonjour Jean, Je viens de faire le test avec le source de la DLL que tu as fourni. peux-tu me dire pourquoi j'ai un message d'erreur à la ligne 15 ? - Code:
-
DLL_ON "format.dll"
DIM x, format$, chaine$, result%
x = 4 * atn(1)
print "Valeur numerique de départ :";x chaine$=str$(x) print "Valeur convertie en chaine :";chaine$ print "Valeur de la chaine :";val(chaine$)
format$ = "0.00000" : chaine$ = format$ : ' pour dimensionner la chaine result% = dll_call3("print_format", adr(x), adr(format$), adr(chaine$)) print "Resultat de la dll :";chaine$ print "Valeur de la chaine :";val(chaine$)
DLL_OFF La chaine de retour est corrompue ? EDIT: C'est bon j'ai trouvé ! le point décimal est transformé en virgule... d'où l'erreur... Donc pour résumer ygeronimi, tu n'as que l'embarras du choix: - Code:
-
DIM x
' --------------------------------------- ' Par le calcul: ' --------------------------------------- x = 4 * atn(1) x = int((x+0.00005)*10000)/10000 print "Valeur du calcul :";x
' --------------------------------------- ' Par l'appel d'une DLL ' --------------------------------------- x = 4 * atn(1) DLL_ON "format.dll" DIM format$, chaine$, result% format$ = "0.0000" : chaine$ = format$ : ' pour dimensionner la chaine result% = dll_call3("print_format", adr(x), adr(format$), adr(chaine$)) chaine$=LEFT$(chaine$,INSTR(chaine$,",")-1)+"."+RIGHT$(chaine$,LEN(chaine$)-INSTR(chaine$,",")) x=val(chaine$) print "Valeur de la dll :";x DLL_OFF | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 27 Juin 2012 - 13:00 | |
| Merci à Tous , Grace à cette petite discussion , je suis un peu moins c... ce matin et je comprends mieux l'histoire des dll. Ps : C'est pas pour autant que je saurai en codé une demain | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Mer 27 Juin 2012 - 18:25 | |
| Salut tout le monde. Si, pour la transmission des paramètres à une procédure ou fonction contenue dans une DLL, je récapitule un peu, je dirais ceci. Le système permet de transmettre des valeurs de l’appelant (le programme) à la fonction/procédure appelée dans la DLL. La fonction/procédure traitera ensuite les valeurs reçues. Cela augmente les possibilités de réemploi de cette fonction/procédure, chaque programme pouvant transmettre des valeurs propres à la fonction/procédure. De même, au sein d’un seul programme les appels peuvent se multiplier, car ils se distinguent par la transmission de valeurs différentes. Le système dépose sur la pile une copie de chaque paramètre transmis, la pile correspond à une certaine zone de la mémoire vive. Une fois la routine exécutée, lors du retour au programme appelant le système éliminera les paramètres de la pile. Ces valeurs sont en fait des copies temporaires, les valeurs d’origines connues du programme appelant ne sont pas modifiées par l’exécution de la procédure. Lorsque nous désirons qu’entre le programme appelant et la fonction/procédure appelée, la transmission des paramètres se réalise dans les deux sens, autrement dit que la fonction/procédure puisse elle aussi transmettre des informations au programme appelant, nous devons alors employer ce que l’on nomme la transmission de paramètres par adresse. Au contraire de ce qui a été dit pour une transmission par valeur, le système ne dépose pas une copie du contenu sur la pile, il travaille directement en mémoire, sur la variable. Cela provient de ce que la procédure/fonction reçoit l’adresse mémoire à laquelle figure le contenu de la variable. De ce fait, une procédure/fonction est en mesure de modifier la valeur d’une variable, et de transmettre au programme appelant cette valeur modifiée. Seule différence, le mot réservé ADR précédera les paramètres. J’espère que je n’ai pas écrits des bêtises ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 4:15 | |
| j'ai écrit ceci : - Code:
-
dim x,format$,xstr$,result%
x=123123212/10000 format$="00.00000" xstr$=format$ dll_on "format.dll" result%=dll_call3("print_format",adr(x),adr(format$),adr(xstr$)) print xstr$ dll_off x= val(xstr$)
Resultat : Erreur Not correct arithmetic....... line 10 alors je fais comment pour remettre le resultat ds une variable..... | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 5:27 | |
| Salut ygeronimi. Je comprends pourquoi tu as une erreur à la ligne 10. La variable XSTR$ contient "12312,32" Il y a, à l’intérieur de cette chaîne une virgule décimal et non un point décimal ! Or PANORAMIC ne reconnait que le point décimal. Donc, la variable XSTR$ ne contient pas une valeur numérique, d’où l’erreur. Maintenant, comment faire pour remettre le résultat dans une variable ? Ce n’est pas simple. Mais on peut y arriver, par exemple comme ceci - Code:
-
dim x,format$,xstr$,result% ,i%,tempo$
x=123123212/10000 format$ = "00000.00" xstr$=format$ dll_on "format.dll" result%=dll_call3("print_format",adr(x),adr(format$),adr(xstr$)) print "xstr$ = ";xstr$ dll_off
for i% = 1 to len(xstr$) if mid$(xstr$,i%,1) <> "," tempo$ = tempo$ + mid$(xstr$,i%,1) else tempo$ = tempo$ + "." end_if next i% x = val(tempo$) print " x = " ; x C’est un peu laborieux mai ça marche. En vérité, la programmation sert à trouver des solutions à des problèmes. Peu importe si la solution n’est pas.....élégante, pourvue qu’elle fasse ce qu'on attend d'elle. | |
| | | Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 7:25 | |
| - ygeronimi a écrit:
- ...
Resultat : Erreur Not correct arithmetic....... line 10 alors je fais comment pour remettre le resultat ds une variable..... Bonjour ygeronimi, Je suis tombé sur la même erreur que toi et je t'ai donné la solution dans ma réponse précédente, je l'ai même écrit en rouge.... (faut descendre l'ascenseur dans la partie code pour voir la version avec appel de la DLL...) Je te remet les 3 lignes qui t'interesse... - Code:
-
result% = dll_call3("print_format", adr(x), adr(format$), adr(chaine$)) chaine$=LEFT$(chaine$,INSTR(chaine$,",")-1)+"."+RIGHT$(chaine$,LEN(chaine$)-INSTR(chaine$,",")) x=val(chaine$) on remplace la virgule par un point décimal avant de faire l'appel à VAL( )... J'ai pas trouvé dans la doc de FB l'astuce qui permettrai de faire en sorte que la décimale soit signalée par un point et non pas par une virgule... | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 9:48 | |
| - Nardo26 a écrit:
- J'ai pas trouvé dans la doc de FB l'astuce qui permettrai de faire en sorte que la décimale soit signalée par un point et non pas par une virgule...
Après quelques essais infructueux j'ai trouvé ceci : - Code:
-
#include "vbcompat.bi"
extern "Windows-MS"
function print_format(byref x as double, byref format_str as zstring ptr, byref x_str as zstring ptr) as integer export dim as integer p dim as string s ' Convertir le nombre x en chaine de caracteres s = format(x, *format_str) ' Chercher si la chaine contient une virgule p = instr(s, ",") ' Si oui, la remplacer par un point if p > 0 then mid(s, p) = "." ' Retourner la chaine *x_str = s return 0 end function
end extern
Apparemment, il faut utiliser une chaîne intermédiaire (s). On a des erreurs quand on travaille directement avec le pointeur déréférencé (*x_str) Je n'avais pas eu l'erreur lors de mes premiers tests car mon Windows était configuré avec le point décimal ! | |
| | | jean_debord
Nombre de messages : 1266 Age : 70 Localisation : Limoges Date d'inscription : 21/09/2008
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 9:54 | |
| - papydall a écrit:
Lorsque nous désirons qu’entre le programme appelant et la fonction/procédure appelée, la transmission des paramètres se réalise dans les deux sens, autrement dit que la fonction/procédure puisse elle aussi transmettre des informations au programme appelant, nous devons alors employer ce que l’on nomme la transmission de paramètres par adresse. Au contraire de ce qui a été dit pour une transmission par valeur, le système ne dépose pas une copie du contenu sur la pile, il travaille directement en mémoire, sur la variable. Cela provient de ce que la procédure/fonction reçoit l’adresse mémoire à laquelle figure le contenu de la variable. De ce fait, une procédure/fonction est en mesure de modifier la valeur d’une variable, et de transmettre au programme appelant cette valeur modifiée. Seule différence, le mot réservé ADR précédera les paramètres.
En fait, les paramètres de la fonction appelée doivent toujours être des entiers. Donc il faut passer par adresse toutes les variables réelles ou chaîne, même si la fonction ne modifie pas les paramètres. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 12:55 | |
| OUAAHOU....je suis admiratif... @Nardo Excuses moi j'avais sauté la ligne, comme il me faut attendre que tout le monde pour pouvoir me concentrer, dès fois j'ai pas les yeux en face des trous. @Jean Debord Merci pour ce nouveau code, je compile et je teste @Papydall Merci pour ton analyse | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 13:07 | |
| Salut tout le monde. J’ai compilé la nouvelle DLL fournie par jean_debord qui résous le problème du point décimal et dont je rappelle ici le code - Code:
-
#include "vbcompat.bi"
extern "Windows-MS"
function print_format(byref x as double, byref format_str as zstring ptr, byref x_str as zstring ptr) as integer export dim as integer p dim as string s ' Convertir le nombre x en chaine de caracteres s = format(x, *format_str) ' Chercher si la chaine contient une virgule p = instr(s, ",") ' Si oui, la remplacer par un point if p > 0 then mid(s, p) = "." ' Retourner la chaine *x_str = s return 0 end function
end extern
Puis j’ai testé avec l’exemple donné par ygeronimi, dont le code est - Code:
-
dim x,format$,xstr$,result% x=123123212/10000 format$="00.00000" xstr$=format$ dll_on "format.dll" result%=dll_call3("print_format",adr(x),adr(format$),adr(xstr$)) print xstr$ dll_off x= val(xstr$)
Le résultat du test est positif. On n’a plus besoin de se préoccuper de la position de la virgule(ou du point décimal). La DLL fournit désormais un string contenant la valeur avec un point décimal. Et ça c'est parfait. A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 13:34 | |
| grrrrr..... j'ai repris le code , j'ai voulu changer le format de sortie à "0.00" et j'ai mis un alpha avec : x=val(xstr$) et en caption str$(x) resultat : Not correct aritm..... + run time error | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 14:51 | |
| @ygeronimi Tu ne peux pas changer le format de sortie à ’o.oo’ puisque ton nombre est supérieur à 10000. Il doit être écrit sur une longueur totale au moins égale à 5 (dans ce cas, il n’y a pas de chiffres après la virgule) Exemple - Code:
-
Format$ = "00000"
Ça donne 12312. Mais si tu veux (par exemple) 3 chiffres après la virgule, la longueur totale du format$ doit être 5 + 1 (pour le point décimal) + 3 =9, comme ceci - Code:
-
Format$ = "00000.000"
Ça donne 12312.321 Voici ton exemple corrigé : je l’ai testé et il est correct - Spoiler:
dim x,format$,xstr$,result% x=123123212/10000 format$ = "00000.000" xstr$=format$ dll_on "format.dll" result% = dll_call3("print_format",adr(x),adr(format$),adr(xstr$)) dll_off x= val(xstr$) alpha 10 caption 10,xstr$
NB Il semble que la balise [ code] [ /code] ne fonctionne plus avec un code de plusieurs lignes ! Pour remédier à ceci, utiliser [ spoiler ] [ /spoiler ] sans espaces entre les crochets. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 18:48 | |
| Ha mais oui mais c'est bien sûr..... Effectivement , j'ai les neurones qui se croisent à force de regarder ce bout de code.... Merci Papydall | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 19:43 | |
| Alors là....mystère et boule de gomme..... je vous remets le code entier car certaines variables ont changé de nom et que j'ai essayé d'intégrer format.dll sur quelques calculs donc il vous faut : le .bas ou .exe YGF.dll format.dll - Code:
-
rem ' les variables d'affichages dim x,L%,L$,C1$,C2$,C3$,C4$,sep%,m,F7%,F8% dim Dossier$,Inf%,Option% rem ' Les variables de calcul rem ' Les variables fixes dim G_ht,Ehc_ht,Ehp_ht,Tx_Tva1,Tx_Tva2,G_CTA,E_CTA,TDC,TMC,CoefG,CSPE rem ' Les variables de facturation dim D$(5),DebG%,FinG%,DebE_hc%,FinE_hc%,DebE_hp%,FinE_hp% rem ' Les variables de relevé dim RG%,RE_hc%,RE_hp% rem ' Les variables calculés dim format$,xstr$,result% dim D%(5),J%,M%,A% dim Njfg%,Njfe%,Njrg%,Njre% dim ConsoG,ConsoE_hc,ConsoE_hp dim ConsoG2,ConsoE_hc2,ConsoE_hp2 dim NbreJ1,NbreJ2,NbreJ3,NbreJ4 dim ConsoG3,ConsoE_hc3,ConsoE_hp3 dim MFG,MFE_hc,MFE_hp dim MRG,MRE_hc,MRE_hp dim DiffG,DiffE_hc,DiffE_hp dim a$,b$,c%,c$,f%,e%,z$ rem ' les fonctions du menu label init, Nouveau,Visu,Quitter,Compar,Param_Voir,Param_Modif,APP rem ' les fonctions du container 100 label Enrgt_R,Annul_R rem ' les fonctions du container 200 label Remp_Grid,Graph,Dessin,Dessin1,Dessin2,Q_Graph rem ' les fonctions de container 300 label Compar_2 rem ' les fonctions de container 350 label Calcul,Cache700,Charge rem ' les fonctions du container 500 label Init_Var rem ' fenetre principale Application_title "GDF Suez" caption 0,"GDF Suez" width 0,500 : height 0,300 :left 0,(screen_x-500)/2 : top 0,(screen_y-300)/2
main_menu 1 sub_menu 2 :parent 2,1 :caption 2,"Fichiers" sub_menu 3 :parent 3,2 :caption 3,"Nouveau relevé" :on_click 3,Nouveau sub_menu 4 :parent 4,2 :caption 4,"Visualiser un relevé" :on_click 4,Visu sub_menu 5 :parent 5,2 :caption 5,"--------------------" sub_menu 6 :parent 6,2 :caption 6,"" sub_menu 7 :parent 7,2 :caption 7,"Quitter" :on_click 7,Quitter sub_menu 8 :parent 8,1 :caption 8,"Outils" sub_menu 9 :parent 9,8 :caption 9,"Comparateur" :on_click 9,Compar sub_menu 10:parent 10,1 :caption 10,"Paramètres" sub_menu 11:parent 11,10:caption 11,"Voir" :on_click 11,Param_Voir sub_menu 12:parent 12,10:caption 12,"Modifier" :on_click 12,Param_Modif sub_menu 13:parent 13,1 :caption 13,"A Propos..." :on_click 13,APP
Container 100:caption 100," Nouveau relevé " :hide 100 top 100,10 :left 100,10 :width 100,465 :height 100,220 :font_name 100,"Times new roman":font_size 100,10 Alpha 101:parent 101,100:top 101,25 :left 101,25 :caption 101,"Date" Alpha 102:parent 102,100:top 102,90 :left 102,25 :caption 102,"Compteur Gaz" Alpha 103:parent 103,100:top 103,90 :left 103,135 :caption 103,"Compteur EDF Hc" Alpha 104:parent 104,100:top 104,90 :left 104,260 :caption 104,"Compteur EDF Hp" Edit 105 :parent 105,100:top 105,45 :left 105,25 :width 105,80 hint 105,"format jj/mm/aaaa" Edit 106 :parent 106,100:top 106,110:left 106,25 :width 106,90 Edit 107 :parent 107,100:top 107,110:left 107,135 :width 107,90 Edit 108 :parent 108,100:top 108,110:left 108,260 :width 108,90 Button 109:parent 109,100:top 109,190:left 109,300:caption 109,"Enregistrer":cursor_point 109:on_click 109,Enrgt_R Button 110:parent 110,100:top 110,190:left 110,380:caption 110,"Annuler" :cursor_point 110:on_click 110,Annul_R
Container 200:caption 200," Mes relevés " :hide 200 top 200,10 :left 200,10 :width 200,465 :height 200,220 :font_name 200,"Times new roman":font_size 200,10 Grid 201:parent 201,200:top 201,25:left 201,5:width 201,450:height 201,150:grid_column 201,7:grid_row 201,2 Grid_column_width 201,60 grid_write 201,1,1,"Date" :grid_write 201,1,2,"Gaz" :grid_write 201,1,3,"Elec. Hc":grid_write 201,1,4,"Elec. Hp" grid_write 201,1,5,"C.Gaz":grid_write 201,1,6,"C. Elec hc":grid_write 201,1,7,"C. Elec hp" grid_row_height 201,20 Button 202:parent 202,200:top 202,190:left 202,380:caption 202,"Graphique" :cursor_point 202:on_click 202,Graph
Container 300:caption 300," Comparateur - La Facture " :hide 300 top 300,10 :left 300,10 :width 300,465 :height 300,220 :font_name 300,"Times new roman":font_size 300,10 alpha 301:parent 301,300:top 301,25:left 301,10:caption 301,"Facture :":font_color 301,125,25,7 alpha 302:parent 302,300:top 302,55:left 302,50:caption 302,"Dates début Dates fin" alpha 303:parent 303,300:top 303,55:left 303,250:caption 303,"Index début" alpha 304:parent 304,300:top 304,55:left 304,350:caption 304,"Index fin" alpha 305:parent 305,300:top 305,75:left 305,10:caption 305,"Gaz" alpha 306:parent 306,300:top 306,105:left 306,10:caption 306,"Elec." edit 307:parent 307,300:top 307,72:left 307,50:width 307,65 hint 307,"format jj/mm/aaaa" edit 308:parent 308,300:top 308,72:left 308,130:width 308,65 hint 308,"format jj/mm/aaaa" edit 309:parent 309,300:top 309,72:left 309,250:width 309,90 edit 310:parent 310,300:top 310,72:left 310,350:width 310,90 edit 311:parent 311,300:top 311,103:left 311,50:width 311,65 hint 311,"format jj/mm/aaaa" edit 312:parent 312,300:top 312,103:left 312,130:width 312,65 hint 312,"format jj/mm/aaaa" edit 313:parent 313,300:top 313,103:left 313,250:width 313,90 edit 314:parent 314,300:top 314,103:left 314,350:width 314,90 edit 315:parent 315,300:top 315,134:left 315,250:width 315,90 edit 316:parent 316,300:top 316,134:left 316,350:width 316,90 alpha 317:parent 317,300:top 317,105:left 317,230:caption 317,"Hc":font_italic 317 alpha 318:parent 318,300:top 318,134:left 318,230:caption 318,"Hp":font_italic 318 Button 349:parent 349,300:top 349,190:left 349,380:caption 349,"Mon relevé" :cursor_point 349:on_click 349,Compar_2
Container 350:caption 350," Comparateur - Mon relevé " :hide 350 top 350,10 :left 350,10 :width 350,465 :height 350,220 :font_name 350,"Times new roman":font_size 350,10 alpha 351:parent 351,350:top 351,25:left 351,10:caption 351,"Mon relevé :":font_color 351,125,25,7 alpha 352:parent 352,350:top 352,55:left 352,50:caption 352,"Date" alpha 353:parent 353,350:top 353,55:left 353,250:caption 353,"Relevé" edit 354:parent 354,350:top 354,72:left 354,50:width 354,65 hint 354,"format jj/mm/aaaa" edit 355:parent 355,350:top 355,72:left 355,250:width 355,90 edit 356:parent 356,350:top 356,103:left 356,250:width 356,90 edit 357:parent 357,350:top 357,134:left 357,250:width 357,90 alpha 358:parent 358,350:top 358,105:left 358,230:caption 358,"Hc":font_italic 358 alpha 359:parent 359,350:top 359,134:left 359,230:caption 359,"Hp":font_italic 359 Button 398:parent 398,350:top 398,190:left 398,260:caption 398,"Charger" :cursor_point 398:on_click 398,Charge hint 398,"Charge le dernier relevé enregistré" Button 399:parent 399,350:top 399,190:left 399,380:caption 399,"Calculer" :cursor_point 399:on_click 399,Calcul
Container 400:caption 400," Mes Paramètres " :hide 400 top 400,10 :left 400,10 :width 400,465 :height 400,220 :font_name 400,"Times new roman":font_size 400,10 alpha 401:parent 401,400:top 401,35:left 401,10:caption 401,"Tarif Gaz Kwh Ht :" alpha 402:parent 402,400:top 402,65:left 402,10:caption 402,"Tarif Elec.(Hc) Kwh Ht :" alpha 403:parent 403,400:top 403,95:left 403,10:caption 403,"Tarif Elec.(Hp) Kwh Ht :" alpha 404:parent 404,400:top 404,125:left 404,10:caption 404,"Tx TVA 1 :" alpha 405:parent 405,400:top 405,155:left 405,10:caption 405,"Tx TVA 2 :" alpha 406:parent 406,400:top 406,35:left 406,250:caption 406,"CTA Gaz Ht :" alpha 407:parent 407,400:top 407,65:left 407,250:caption 407,"CTA Elec. Ht :" alpha 408:parent 408,400:top 408,95:left 408,250:caption 408,"TDC Ht :" alpha 409:parent 409,400:top 409,125:left 409,250:caption 409,"TMC Ht :" alpha 421:parent 421,400:top 421,155:left 421,250:caption 421,"Coef Gaz :" alpha 422:parent 422,400:top 422,185:left 422,250:caption 422,"CSPE :" alpha 410:parent 410,400:top 410,35:left 410,150 :font_color 410,188,5,11 alpha 411:parent 411,400:top 411,65:left 411,150 :font_color 411,188,5,11 alpha 412:parent 412,400:top 412,95:left 412,150 :font_color 412,188,5,11 alpha 413:parent 413,400:top 413,125:left 413,150:font_color 413,188,5,11 alpha 414:parent 414,400:top 414,155:left 414,150:font_color 414,188,5,11 alpha 415:parent 415,400:top 415,35:left 415,350 :font_color 415,188,5,11 alpha 416:parent 416,400:top 416,65:left 416,350 :font_color 416,188,5,11 alpha 417:parent 417,400:top 417,95:left 417,350 :font_color 417,188,5,11 alpha 418:parent 418,400:top 418,125:left 418,350:font_color 418,188,5,11 alpha 419:parent 419,400:top 419,155:left 419,350:font_color 419,188,5,11 alpha 420:parent 420,400:top 420,185:left 420,350:font_color 420,188,5,11 alpha 423:parent 423,400:top 423,125:left 423,180:caption 423,"%" alpha 424:parent 424,400:top 424,155:left 424,180:caption 424,"%"
Container 500:caption 500," Modifier les Paramètres ":hide 500 top 500,10 :left 500,10 :width 500,465 :height 500,220 :font_name 500,"Times new roman":font_size 500,10 alpha 501:parent 501,500:top 501,35:left 501,10:caption 501,"Tarif Gaz Kwh Ht :" alpha 502:parent 502,500:top 502,65:left 502,10:caption 502,"Tarif Elec.(Hc) Kwh Ht :" alpha 503:parent 503,500:top 503,95:left 503,10:caption 503,"Tarif Elec.(Hp) Kwh Ht :" alpha 504:parent 504,500:top 504,125:left 504,10:caption 504,"Tx TVA 1 :" alpha 505:parent 505,500:top 505,155:left 505,10:caption 505,"Tx TVA 2 :" alpha 506:parent 506,500:top 506,35:left 506,250:caption 506,"CTA Gaz Ht :" alpha 507:parent 507,500:top 507,65:left 507,250:caption 507,"CTA Elec. Ht :" alpha 508:parent 508,500:top 508,95:left 508,250:caption 508,"TDC Ht :" alpha 509:parent 509,500:top 509,125:left 509,250:caption 509,"TMC Ht :" alpha 521:parent 521,500:top 521,155:left 521,250:caption 521,"Coef Gaz :" alpha 522:parent 522,500:top 522,185:left 522,10:caption 522,"CSPE :" edit 510:parent 510,500:top 510,32:left 510,150:width 510,80 edit 511:parent 511,500:top 511,62:left 511,150:width 511,80 edit 512:parent 512,500:top 512,92:left 512,150:width 512,80 edit 513:parent 513,500:top 513,122:left 513,150:width 513,50 edit 514:parent 514,500:top 514,152:left 514,150:width 514,50 edit 515:parent 515,500:top 515,32:left 515,350:width 515,80 edit 516:parent 516,500:top 516,62:left 516,350:width 516,80 edit 517:parent 517,500:top 517,92:left 517,350:width 517,80 edit 518:parent 518,500:top 518,122:left 518,350:width 518,80 edit 519:parent 519,500:top 519,152:left 519,350:width 519,80 edit 520:parent 520,500:top 520,182:left 520,150:width 520,80 alpha 523:parent 523,500:top 523,125:left 523,205:caption 523,"%" alpha 524:parent 524,500:top 524,155:left 524,205:caption 524,"%"
Button 599:parent 599,500:top 599,190:left 599,380:caption 599,"Enregistrer" :cursor_point 599:on_click 599,Init_Var
Container 600:caption 600," A Propos... ":hide 600 top 600,10 :left 600,10 :width 600,465 :height 600,220 :font_name 600,"Times new roman":font_size 600,10
dlist 98 dlist 99
gosub init end
init: Dossier$=dir_current$ if file_exists(Dossier$+"\Suez.inf")=1 file_load 99,Dossier$+"\Suez.inf" if count(99)>0 G_ht=val(item_read$(99,1)) Ehc_ht=val(item_read$(99,2)) Ehp_ht=val(item_read$(99,3)) Tx_Tva1=val(item_read$(99,4)) Tx_Tva2=val(item_read$(99,5)) G_CTA=val(item_read$(99,6)) E_CTA=val(item_read$(99,7)) TDC=val(item_read$(99,8)) TMC=val(item_read$(99,9)) CoefG=val(item_read$(99,10)) CSPE=val(item_read$(99,11)) else if message_information_yes_no("Le fichier des paramètres de calcul est vide"+chr$(10)+"Voulez vous entrez les paramètres maintenant ?")=1 gosub Param_Modif else Inactive 9 inactive 11 end_if end_if else file_open_write 97,Dossier$+"\Suez.inf" file_close 97 if message_information_yes_no("Vous Utilisez cette application pour la première fois"+chr$(13)+"Voulez vous enregistrer vos paramètres ?")=1 gosub Param_Modif else Inactive 9 inactive 11 end_if end_if if file_exists(Dossier$+"\user\Releves.txt")=1 then file_load 98,Dossier$+"\user\Releves.txt" gosub Remp_grid
return
Nouveau: show 100:hide 200:hide 300:hide 400:hide 500:hide 600:hide 350 set_focus 105 return
Enrgt_R: item_add 98,text$(105)+";"+text$(106)+";"+text$(107)+";"+text$(108) if dir_exists(Dossier$+"\user")=0 then dir_make Dossier$+"\user" file_save 98,Dossier$+"\user\Releves.txt" for x=105 to 108 text x,"" next x hide 100 gosub Remp_Grid return
Annul_R: for x=105 to 108 text x,"" next x hide 100 return
Visu: show 200:hide 100:hide 300:hide 400:hide 500:hide 600:hide 350 return
Remp_Grid: if count(98)<2 then grid_row 201,2 if file_exists(Dossier$+"\user\Releves.txt")=1 L%=1 for x=1 to count(98) L%=L%+1 grid_row 201,L% L$=item_read$(98,x) sep%=instr(L$,";") C1$=Left$(L$,sep%-1) grid_write 201,L%,1,C1$ L$=right$(L$,len(L$)-sep%) sep%=instr(L$,";") C2$=Left$(L$,sep%-1) grid_write 201,L%,2,C2$ L$=right$(L$,len(L$)-sep%) sep%=instr(L$,";") C3$=Left$(L$,sep%-1) grid_write 201,L%,3,C3$ C4$=right$(L$,len(L$)-sep%) grid_write 201,L%,4,C4$ if L%>2 grid_write 201,L%,5,str$(val(C2$)-val(grid_read$(201,L%-1,2))) grid_write 201,L%,6,str$(val(C3$)-val(grid_read$(201,L%-1,3))) grid_write 201,L%,7,str$(val(C4$)-val(grid_read$(201,L%-1,4))) else grid_write 201,L%,5,"0" grid_write 201,L%,6,"0" grid_write 201,L%,7,"0" end_if next x end_if return
Graph: if F8%=1 top 0,0:left 0,0 Show 800 gosub Dessin gosub Dessin1 gosub Dessin2 else F8%=1 top 0,0:left 0,0 Form 800:height 800,500:width 800,750:top 800,(screen_y-500)/2:left 800,(screen_x-750)/2:caption 800,"Evolution des consommations de gaz et d'électricité" command_target_is 800 alpha 801:top 801,405:left 801,35:caption 801,"Gaz" alpha 802:top 802,425:left 802,35:caption 802,"Elec. hc" alpha 803:top 803,445:left 803,35:caption 803,"Elec. hp" button 899:top 899,430:left 899,650:caption 899,"Quitter":cursor_point 899:font_name 899,"Times new roman":font_size 899,10:on_click 899,Q_Graph gosub Dessin gosub Dessin1 gosub Dessin2 end_if return
Dessin: 2d_target_is 800 2d_pen_color 0,0,0 rem ' ligne des abscisses 2d_line 90,400,465,400 rem ' ligne des ordonnées 2d_line 100,0,100,400 rem ' lignes de graduation for x=1 to 39 2d_pen_color 0,0,0 2d_line 90,x*10,100,x*10 2d_pen_color 225,225,225 2d_line 101,x*10,465,x*10 next x rem ' lignes échantillons 2d_pen_color 250,10,10 2d_line 10,415,30,415 2d_pen_color 112,10,168 2d_line 10,435,30,435 2d_pen_color 3,74,214 2d_line 10,455,30,455 rem ' ligne de consommation gaz if count(98)>1 a$=grid_read$(201,2,1) a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,2,1) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(c$,2) M%=mid$(c$,4,2) A%=right$(c$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off z$=grid_read$(201,2,5) 2d_poly_from 100+(f%-c%),int(400-(val(z$)/10)) for x=1 to count(98) a$=grid_read$(201,x+1,1) b$=a$ a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,x+1,5) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(b$,2) M%=mid$(b$,4,2) A%=right$(b$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off e%=val(c$) 2d_pen_color 250,10,10 2d_poly_to (100+(f%-c%)),int(400-(e% /10)) next x else message "Pas assez de données pour créer un graphique" end_if return
Dessin1: if count(98)>1 a$=grid_read$(201,2,1) a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,2,1) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(c$,2) M%=mid$(c$,4,2) A%=right$(c$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off z$=grid_read$(201,2,6) 2d_poly_from 100+(f%-c%),int(400-(val(z$)/10)) for x=1 to count(98) a$=grid_read$(201,x+1,1) b$=a$ a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,x+1,6) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(b$,2) M%=mid$(b$,4,2) A%=right$(b$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off e%=val(c$) 2d_pen_color 112,10,168 2d_poly_to (100+(f%-c%)),int(400-(e% /10)) next x end_if return
Dessin2: if count(98)>1 a$=grid_read$(201,2,1) a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,2,1) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(c$,2) M%=mid$(c$,4,2) A%=right$(c$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off z$=grid_read$(201,2,7) 2d_poly_from 100+(f%-c%),int(400-(val(z$)/10)) for x=1 to count(98) a$=grid_read$(201,x+1,1) b$=a$ a$=right$(a$,4) a$="01/01/"+a$ c$=grid_read$(201,x+1,7) dll_on "YGF.dll" J%=left$(a$,2) M%=mid$(a$,4,2) A%=right$(a$,4) c%=dll_call3("NbJours",J%,M%,A%) J%=left$(b$,2) M%=mid$(b$,4,2) A%=right$(b$,4) f%=dll_call3("NbJours",J%,M%,A%) dll_off e%=val(c$) 2d_pen_color 3,74,214 2d_poly_to (100+(f%-c%)),int(400-(e% /10)) next x end_if return
Q_Graph: hide 800 left 0,(screen_x-500)/2 : top 0,(screen_y-300)/2 return
Compar: show 300:hide 100:hide 200:hide 400:hide 500:hide 600:hide 350 set_focus 307 return
Compar_2: show 350:hide 100:hide 200:hide 400:hide 500:hide 600:hide 300 for x= 307 to 316 if text$(x)="" if message_error_ok("Vous avez oubliez de remplir une case...")=1 show 300:hide 100:hide 200:hide 400:hide 500:hide 600:hide 350 exit_for end_if end_if next x if show(350)=1 D$(1)=text$(307) D$(2)=text$(308) D$(3)=text$(311) D$(4)=text$(312) DebG%= val(text$(309)) FinG%= val(text$(310)) DebE_hc%= val(text$(313)) FinE_hc%= val(text$(314)) DebE_hp%= val(text$(315)) FinE_hp%= val(text$(316)) end_if for x= 307 to 316 text x,"" next x set_focus 354 return
Calcul: for x= 354 to 357 if text$(x)="" if message_error_ok("Vous avez oubliez de remplir une case...")=1 m=1 exit_for else m=0 end_if end_if next x if m=0
D$(5)=text$(354) RG%=val(text$(355)) RE_hc%=val(text$(356)) RE_hp%=val(text$(357))
dll_on "YGF.dll" for x=1 to 5 J%=left$(D$(x),2) M%=mid$(D$(x),4,2) A%=right$(D$(x),4) D%(x)=dll_call3("NbJours",J%,M%,A%) next x dll_off Njfg%=D%(2)-D%(1) Njfe%=D%(4)-D%(3) Njrg%=D%(5)-D%(1) Njre%=D%(5)-D%(1) dll_on "format.dll" rem ' conso sur facture ConsoG=int((FinG%-DebG%)*CoefG) ConsoE_hc=FinE_hc%-DebE_hc% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hc),adr(format$),adr(xstr$)) ConsoE_hc=val(xstr$) ConsoE_hp=FinE_hp%-DebE_hp% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hp),adr(format$),adr(xstr$)) ConsoE_hp=val(xstr$) rem ' conso sur relevé ConsoG2=int((RG%-DebG%)*CoefG) ConsoE_hc2=RE_hc%-DebE_hc% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hc2),adr(format$),adr(xstr$)) ConsoE_hc2=val(xstr$) ConsoE_hp2=RE_hp%-DebE_hp% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hp2),adr(format$),adr(xstr$)) ConsoE_hp2=val(xstr$) rem ' conso estimée ConsoG3=int((ConsoG2/Njrg%)*Njfg% ) ConsoE_hc3=(ConsoE_hc2/Njre%)*Njfe% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hc3),adr(format$),adr(xstr$)) ConsoE_hc3=val(xstr$)
ConsoE_hp3=(ConsoE_hp2/Njre%)*Njfe% format$="0000000.00" xstr$=format$ result%=dll_call3("print_format",adr(ConsoE_hp3),adr(format$),adr(xstr$)) ConsoE_hp3=val(xstr$)
dll_off
rem ' facture ttc MFG=(int((ConsoG*G_ht*Tx_Tva2)*100)/100)+(int((G_CTA*Tx_Tva1)*100)/100) MFE_hc=(int((ConsoE_hc*Ehc_ht*Tx_Tva2)*100)/100)+(int((E_CTA*Tx_Tva1)*100)/100)+(int((ConsoE_hc*TDC*Tx_Tva2)*100)/100)+(int((ConsoE_hc*TMC*Tx_Tva2)*100)/100)+(int((ConsoE_hc*CSPE*Tx_Tva2)*100)/100) MFE_hp=(int((ConsoE_hp*Ehc_ht*Tx_Tva2)*100)/100)+(int((E_CTA*Tx_Tva1)*100)/100)+(int((ConsoE_hp*TDC*Tx_Tva2)*100)/100)+(int((ConsoE_hp*TMC*Tx_Tva2)*100)/100)+(int((ConsoE_hp*CSPE*Tx_Tva2)*100)/100)
rem ' Evaluation MRG=(int((ConsoG3*G_ht*Tx_Tva2)*100)/100)+(int((G_CTA*Tx_Tva1)*100)/100) MRE_hc=(int((ConsoE_hc3*Ehc_ht*Tx_Tva2)*100)/100)+(int((E_CTA*Tx_Tva1)*100)/100)+(int((ConsoE_hc3*TDC*Tx_Tva2)*100)/100)+(int((ConsoE_hc3*TMC*Tx_Tva2)*100)/100)+(int((ConsoE_hc3*CSPE*Tx_Tva2)*100)/100) MRE_hp=(int((ConsoE_hp3*Ehc_ht*Tx_Tva2)*100)/100)+(int((E_CTA*Tx_Tva1)*100)/100)+(int((ConsoE_hp3*TDC*Tx_Tva2)*100)/100)+(int((ConsoE_hp3*TMC*Tx_Tva2)*100)/100)+(int((ConsoE_hp3*CSPE*Tx_Tva2)*100)/100) rem ' Differences DiffG=int((ConsoG-ConsoG3)*100)/100 DiffE_hc=int((ConsoE_hc-ConsoE_hc3)*100)/100 DiffE_hp=int((ConsoE_hp-ConsoE_hp3)*100)/100
rem ' Fenetre de communication des résultats if F7%=1 top 0,0:left 0,0 show 700 else F7%=1 top 0,0:left 0,0 Form 700:caption 700,"Résultat de la comparaison":width 700,700:height 700,600:top 700,(screen_y-600)/2 :left 700,(screen_x-700)/2 command_target_is 700
container 701:top 701,10:left 701,10:height 701,300:width 701,320:caption 701," Votre Facture ":font_name 701,"Times new roman":font_bold 701:font_size 701,10 alpha 702:parent 702,701:top 702,40:left 702,20 :caption 702,"Consommation Gaz en kWh : " alpha 703:parent 703,701:top 703,65:left 703,20 :caption 703,"Montant facturé TTC : " alpha 704:parent 704,701:top 704,105:left 704,20 :caption 704,"Consommation Elec. HC en kWh : " alpha 705:parent 705,701:top 705,130:left 705,20:caption 705,"Montant facturé TTC : " alpha 706:parent 706,701:top 706,180:left 706,20:caption 706,"Consommation Elec. HP en kWh : " alpha 707:parent 707,701:top 707,205:left 707,20:caption 707,"Montant facturé TTC : " alpha 708:parent 708,701:top 708,40:left 708,210 :caption 708,str$(ConsoG) :font_color 708,140,2,4 alpha 709:parent 709,701:top 709,65:left 709,210 :caption 709,str$(MFG) :font_color 709,140,2,4 alpha 710:parent 710,701:top 710,105:left 710,210 :caption 710,str$(ConsoE_hc):font_color 710,140,2,4 alpha 711:parent 711,701:top 711,130:left 711,210:caption 711,str$(MFE_hc) :font_color 711,140,2,4 alpha 712:parent 712,701:top 712,180:left 712,210:caption 712,str$(ConsoE_hp):font_color 712,140,2,4 alpha 713:parent 713,701:top 713,205:left 713,210:caption 713,str$(MFE_hp):font_color 713,140,2,4
container 720:top 720,10:left 720,340:height 720,300:width 720,320:caption 720," Estimation ":font_name 720,"Times new roman":font_bold 720:font_size 720,10 alpha 722:parent 722,720:top 722,40:left 722,20 :caption 722,"Consommation Gaz en kWh : " alpha 723:parent 723,720:top 723,65:left 723,20 :caption 723,"Montant Estimé TTC : " alpha 724:parent 724,720:top 724,105:left 724,20 :caption 724,"Consommation Elec. HC en kWh : " alpha 725:parent 725,720:top 725,130:left 725,20:caption 725,"Montant Estimé TTC : " alpha 726:parent 726,720:top 726,180:left 726,20:caption 726,"Consommation Elec. HP en kWh : " alpha 727:parent 727,720:top 727,205:left 727,20:caption 727,"Montant Estimé TTC : " alpha 728:parent 728,720:top 728,40:left 728,210 :caption 728,str$(ConsoG3) :font_color 728,7,142,4 alpha 729:parent 729,720:top 729,65:left 729,210 :caption 729,str$(MRG) :font_color 729,7,142,4 alpha 730:parent 730,720:top 730,105:left 730,210 :caption 730,str$(ConsoE_hc3):font_color 730,7,142,4 alpha 731:parent 731,720:top 731,130:left 731,210:caption 731,str$(MRE_hc) :font_color 731,7,142,4 alpha 732:parent 732,720:top 732,180:left 732,210:caption 732,str$(ConsoE_hp3):font_color 732,7,142,4 alpha 733:parent 733,720:top 733,205:left 733,210:caption 733,str$(MRE_hp):font_color 733,7,142,4
container 740:top 740,320:left 740,10:height 740,200:width 740,650:caption 740," Comparaison ":font_name 740,"Times new roman":font_bold 740:font_size 740,10 if MFG > MRG alpha 742:parent 742,740:top 742,40:left 742,20 :caption 742,"Vous avez été surfacturé de : "+str$(MFG-MRG)+" Euro" end_if if MFE_hc > MRE_hc alpha 743:parent 743,740:top 743,70:left 743,20 :caption 743,"Vous avez été surfacturé de : "+str$(MFE_hc-MRE_hc)+" Euro" end_if if MFE_hp > MRE_hp alpha 744:parent 744,740:top 744,100:left 744,20 :caption 744,"Vous avez été surfacturé de : "+str$(MFE_hp-MRE_hp)+" Euro" end_if Button 798:top 798,530 :left 798,490:caption 798,"Imprimer":cursor_point 798 Button 799:top 799,530 :left 799,590:caption 799,"Quitter" :cursor_point 799:on_click 799,Cache700 end_if end_if return
Cache700: hide 700:left 0,(screen_x-500)/2 : top 0,(screen_y-300)/2 command_target_is 0 for x=354 to 357 text x,"" next x hide 350 return
Charge: if count(98)>0 x =count(98) L$=item_read$(98,x) sep%=instr(L$,";") C1$=Left$(L$,sep%-1) text 354,C1$ L$=right$(L$,len(L$)-sep%) sep%=instr(L$,";") C2$=Left$(L$,sep%-1) text 355,C2$ L$=right$(L$,len(L$)-sep%) sep%=instr(L$,";") C3$=Left$(L$,sep%-1) text 356,C3$ C4$=right$(L$,len(L$)-sep%) text 357,C4$ end_if return
Param_Voir: show 400:hide 100:hide 200:hide 300:hide 500:hide 600:hide 350 for x=410 to 420 caption x,item_read$(99,(x-409)) next x return
Param_Modif: show 500:hide 100:hide 200:hide 300:hide 400:hide 600:hide 350 if count(99)>0 for x=510 to 520 text x,item_read$(99,x-509) next x end_if return
Init_Var: if inactive(9)=1 and inactive(11)=1 active 9 active 11 end_if clear 99 for x=1 to 11 if text$(509+x)<>"" item_add 99,text$(509+x) else item_add 99,"0" end_if next x file_save 99,Dossier$+"\Suez.inf" G_ht= val(item_read$(99,1)) Ehc_ht= val(item_read$(99,2)) Ehp_ht= val(item_read$(99,3)) Tx_Tva1= (val(item_read$(99,4))/100)+1 Tx_Tva2= (val(item_read$(99,5))/100)+1 G_CTA= val(item_read$(99,6)) E_CTA= val(item_read$(99,7)) TDC= val(item_read$(99,8)) TMC= val(item_read$(99,9)) CoefG= val(item_read$(99,10)) CSPE= val(item_read$(99,11)) hide 500 return
APP: show 600:hide 100:hide 200:hide 300:hide 400:hide 500:hide 350 alpha 601:parent 601,600:top 601,100:left 601,20:caption 601,"En cours d'élaboration..." return
Quitter: Terminate
et là une erreur se fait sur un calcul alors qu'il vient de le faire 4 fois sans problèmes (ligne 546)... ps : desolé Nardo j'ai pas encore placé mes hint , je me bat avec format.dll pour l'instant TROUVER !!!!! J'ai modifié le code , ci-dessus , plus d'erreur ca marche
Dernière édition par ygeronimi le Jeu 28 Juin 2012 - 21:15, édité 4 fois (Raison : amélioration) | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 19:51 | |
| @ygeronimi
Tu peux définir le format de sortie de plusieurs façons :
format$ = "***000 000.000 $" format$ = "***000000.000***" format$ = "*** 000 000.000 £" format$ = "*** 000 000.000 Dollars" format$ = "000 000 000.000" format$ = "+++ 000 000.000 +++"
Mais attention : la sortie est une chaîne de caractères. Tu ne peux que l’afficher et non pas l’affecter à une variable réelle par exemple.
print xstr$ ou caption 0,xstr$ sont corrects
Mais x = val(xstr$) provoque une erreur !
par contre, tu peux faire : format$ = "000000.000" puis affecter la valeur à une variable x = val(xstr$) C’est correct puisque le format$ ne contient aucun caractère non numérique
Maintenant on voit un peu plus clair, n’est-ce pas ?
| |
| | | Jean Claude
Nombre de messages : 5950 Age : 70 Localisation : 83 Var Date d'inscription : 07/05/2009
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Jeu 28 Juin 2012 - 20:12 | |
| Salut à tous, @ygeronimi, il faudrait que tu empêches l'utilisateur d'entrer des valeurs non numériques dans les edits - Code:
-
if numeric(item_read$(99,1))=0 then message "Valeur numérique SVP":return A+ | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Jeu 28 Juin 2012 - 21:30 | |
| Je n'avais pas vu vos dernier post du coup j'ai rééditer mon dernier message avec rectification de mon erreur Hint pour les format des entrées de dates @ Jean Claude si je mets quelque chose pour empecher un format non numeric , il faut que je le mette sur les edit d'entrées dans "nouveau" et "comparateur" plutot que sur "item read$(dlist,x)" soit : - Code:
-
if instr( text$(x),",")>0 then message "Format Incorrect"+chr$(10)+" Remplacez la virgule par un point"
| |
| | | Severin
Nombre de messages : 547 Localisation : Braunschweig / Germany Date d'inscription : 13/12/2010
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Lun 6 Aoû 2012 - 14:49 | |
| @ Papydall
Hast du die DLL "Format.dll" zum Laden ? Währe eine grosse Hilfe für mich. Severin
Do you have the DLL "Format.dll" to load? Would be a great help for me. Severin
Avez-vous la DLL "Format.dll" pour charger? Serait une grande aide pour moi. Severin | |
| | | papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule Lun 6 Aoû 2012 - 18:09 | |
| Hello severin http://www.mydrive.ch/username : panoramicien@papydall_panoramic password : panoramic123 file : format.dll file : testFormat.bas | |
| | | Contenu sponsorisé
| Sujet: Re: Arrondir un réel à deux chiffres après la virgule | |
| |
| | | | Arrondir un réel à deux chiffres après la virgule | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |