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 |
|
|
| KGF_dll - nouvelles versions | |
|
+8JL35 Marc papydall Jicehel Yannick pascal10000 Minibug Klaus 12 participants | |
Auteur | Message |
---|
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 18 Mar 2016 - 13:59 | |
| Klaus, j' ai un souci.
Le message sur lequel je me suis excité cette nuit venait après avoir voulu modifier un enregistrement ISAM à la ré-ouverture de la base.
J' ai repris cette fonction en procédant ainsi :
res% = dll_call1("IsamFileIsOpen",Isam_ID%) pour vérifier que la base est ouverte
ISAM_record$ = string$(ISAM_RecLen%," ") ISAM_NbRec% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),1,adr(key$)) pour récupérer le numéro d' enregistrement et l' enregistrement
s$ = trim$(grid_read$(Gi%,Ri%,7)) sf$ = " " res% = dll_call6("FillIsamField",Isam_ID%,8,0,adr(ISAM_Record$),adr(s$),adr(sf$)) pour modifier le champ 8
res% = dll_call3("UpdateIsamRecord",Isam_ID%,adr(ISAM_Record$),ISAM_NbRec%) pour enregistrer la modif de l' enregistrement
sauf que, NbRec% se trouve avec une valeur de 0 ce qui me fait planter la mise à jour de l' enregistrement. Pour ne pas compliquer les choses, ma base n' a qu' un seul enregistrement. Ai je loupé quelque chose dans la bible ?... | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: KGF_dll - nouvelles versions Ven 18 Mar 2016 - 14:45 | |
| Très intéressant le HistogrammeOptions, je vais regarder ça de près, mais ça me plait bien. Dans la doc, le décalage a disparu dans la liste alphabétique, donc ça va. Juste pour chercher la petite bête, dans la doc de HistogrammeOptions: - le type 7 doit être LINE (comme dans ton exemple ci-dessus), et non XLINE ... quoique... il y a (pour moi) une ambigüité entre LINE et XLINE - le 'du histogramme' des lignes suivantes n'est pas très joli... traduction automatique ? je verrais mieux 'de l'histogramme' | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 18 Mar 2016 - 18:49 | |
| @Ygeronimi: - Citation :
- ISAM_record$ = string$(ISAM_RecLen%," ")
ISAM_NbRec% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),1,adr(key$)) pour récupérer le numéro d' enregistrement et l' enregistrement Quel est le contenu de la variable key$ ? Elle doit contenir la clé de l'enregistrement ciblé. As-tu essayé ReadNextIsamRecord, juste après l'ouverture ? Puisque tu n'as qu'un seul enregistrement, tu devrais tomber dessus. @JL35: Merci ! Je prends notre de tes remarques sur la doc et je vais effectuer les corrections nécessaires. PS: Non, ce n'est pas un traducteur automatique. Cette doc a poussé entièrement dans mon jardin, et je n'ai apparemment pas arraché toutes les mauvaises herbes ! EDIT La doc est corrigée. Merci à JL35 ! | |
| | | JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: KGF_dll - nouvelles versions Ven 18 Mar 2016 - 20:35 | |
| Merci à toi surtout de bien cultiver ton jardin, avec tout ce que tu y fais pousser ! moi je fais la partie facile... (la critique est aisée, mais l'art est difficile) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Ven 18 Mar 2016 - 21:58 | |
| KGF.dll V6.15 du 18/03/2016Nouveautés: - HistogrammeOptions: ajout code 5: soumettre un autre fichier de paramètresModules modifiés: KGF.dll KGF.dllLa doc et les sources sont à jour. Ce nouveau code permet de soumettre un nouveau fichier de paramètres, contenant des définitions modifiées ou totalement différentes. Ce programme de démo ci-après génère 3 fichiers de paramètres: x_2_series.txt, x_2_series.txt et x_3_series.txt. L'histogramm s'affiche au démarrage avec x_1_series.txt, donc avec une seule série. Un bouton "Données" permet de choisir un autre fichier de paramètres (utilisez un des 3 fichiers générés, ou un fichier créé par vos soins), pour voir le résultat: - Code:
-
label changetype, copierimage, sauverbmp, sauverjpg, changerdonnees dim res%, histo$, hnd%, fic$
width 0,900 : height 0,800 panel 1 : top 1,10 : left 1,10 : width 1,640 : height 1,450 : color 1,127,127,255 picture 2 : top 2,480 : left 2,10 : width 2,300 : height 2,200 : stretch_on 2 color 2,255,127,127
combo 10 : top 10,10 : left 10,700 : on_click 10,changetype item_add 10,"BAR" item_add 10,"PIE" item_add 10,"SCATTER" item_add 10,"AREA" item_add 10,"HILOW" item_add 10,"MARK" item_add 10,"SPLINE" item_add 10,"XLINE" item_add 10,"PARETO" text 10,"LINE" button 11 : top 11,40 : left 11,700 : caption 11,"Copier" : on_click 11,copierimage button 12 : top 12,70 : left 12,700 : caption 12,"BMP" : on_click 12,sauverbmp button 13 : top 13,100 : left 13,700 : caption 13,"JPG" : on_click 13,sauverjpg button 14 : top 14,130 : left 14,700 : caption 14,"Données" : on_click 14,changerdonnees
open_dialog 99 : filter 99,"Fichiers TXT|*.txt"
histo$ = "x_3_series.txt" CreerSerie(histo$,3) histo$ = "x_2_series.txt" CreerSerie(histo$,2) histo$ = "x_1_series.txt" CreerSerie(histo$,1)
dll_on "KGF.dll" hnd% = dll_call6("HistogrammeEX",adr(histo$),1,1,1,1,handle(1)) : ' créer le histogramme
end
changetype: res% = dll_call2("HistogrammeOptions",1,item_index(10)-1) : ' changer le format du histogramme return
copierimage: res% = dll_call2("HistogrammeOptions",2,0) : ' copier l'image du histogramme clipboard_paste 2 return sauverbmp: fic$ = "Histogramme.bmp" res% = dll_call2("HistogrammeOptions",3,adr(fic$)) : ' copier dans un fichier BMP return
sauverjpg: fic$ = "Histogramme.jpg" res% = dll_call2("HistogrammeOptions",4,adr(fic$)) : ' copier dans un fichier JMP return changerdonnees: fic$ = file_name$(99) if fic$="_" then return res% = dll_call2("HistogrammeOptions",5,adr(fic$)) : ' copier dans un fichier JMP return
sub CreerSerie(fic$,ns%) file_open_write 1,fic$ file_writeln 1,"#Type=LINE" file_writeln 1,"#Bord droit=17" file_writeln 1,"#Bord bas=38" file_writeln 1,"#Largeur fenêtre=620" file_writeln 1,"#Hauteur fenêtre=430" file_writeln 1,"#Style=3D" file_writeln 1,"#Grille=H" file_writeln 1,"#Légendes" file_writeln 1,"#Largeur=4" file_writeln 1,"#Séries="+str$(ns%) file_writeln 1,"#Valeurs=4" file_writeln 1,"#Données=1" file_writeln 1,"100" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"150" if ns%>1 file_writeln 1,"#Données=2" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"300" file_writeln 1,"200" end_if if ns%>2 file_writeln 1,"#Données=3" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"500" file_writeln 1,"350" end_if file_writeln 1,"#Minimum Y=0" file_writeln 1,"#Maximum Y=1000" file_writeln 1,"#Ecart Y=100" file_writeln 1,"#Légende Y=0" file_writeln 1,"#Titres" file_writeln 1,"Haut=Evolution des consommations" file_writeln 1,"Gauche=Conso. en kWh" file_writeln 1,"Bas=Relevés" file_writeln 1,"Droite=Divers" file_writeln 1,"#Légendes séries" file_writeln 1,"Gaz" if ns%>1 then file_writeln 1,"Electricité hc" if ns%>2 then file_writeln 1,"Electricité hp" file_writeln 1,"#Légendes valeurs" file_writeln 1,"1" file_writeln 1,"2" file_writeln 1,"3" file_writeln 1,"4" file_writeln 1,"#Fin" file_close 1 end_sub
Dernière édition par Klaus le Sam 19 Mar 2016 - 1:25, édité 1 fois | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Ven 18 Mar 2016 - 22:28 | |
| Bravo Klaus, encore un défi relevé. Bon, il ne me reste plus qu' à me mettre à jour et trouver un autre défi... Pour mon programme, j' ai tout repris depuis le début. C' est frustrant mais quand on ne voit ce qui cloche... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Sam 19 Mar 2016 - 2:00 | |
| KGF.dll V6.16 du 19/03/2016Nouveautés: - HistogrammeOptions: ajout code 6: imprimer l'histogramme avec sélection d'imprimante, en mode paysageModules modifiés: KGF.dll KGF.dllLa doc et les sources sont à jour. Et voici le programme de démo avec un bouton "Imprimer": - Code:
-
label changetype, copierimage, sauverbmp, sauverjpg, changerdonnees, imprimer dim res%, histo$, hnd%, fic$
width 0,900 : height 0,800 panel 1 : top 1,10 : left 1,10 : width 1,640 : height 1,450 : color 1,127,127,255 picture 2 : top 2,480 : left 2,10 : width 2,300 : height 2,200 : stretch_on 2 color 2,255,127,127
combo 10 : top 10,10 : left 10,700 : on_click 10,changetype item_add 10,"BAR" item_add 10,"PIE" item_add 10,"SCATTER" item_add 10,"AREA" item_add 10,"HILOW" item_add 10,"MARK" item_add 10,"SPLINE" item_add 10,"XLINE" item_add 10,"PARETO" text 10,"LINE" button 11 : top 11,40 : left 11,700 : caption 11,"Copier" : on_click 11,copierimage button 12 : top 12,70 : left 12,700 : caption 12,"BMP" : on_click 12,sauverbmp button 13 : top 13,100 : left 13,700 : caption 13,"JPG" : on_click 13,sauverjpg button 14 : top 14,130 : left 14,700 : caption 14,"Données" : on_click 14,changerdonnees button 15 : top 15,160 : left 15,700 : caption 15,"Imprimer" : on_click 15,imprimer
open_dialog 99 : filter 99,"Fichiers TXT|*.txt"
histo$ = "x_3_series.txt" CreerSerie(histo$,3) histo$ = "x_2_series.txt" CreerSerie(histo$,2) histo$ = "x_1_series.txt" CreerSerie(histo$,1)
dll_on "KGF.dll" hnd% = dll_call6("HistogrammeEX",adr(histo$),1,1,1,1,handle(1)) : ' créer le histogramme
end
changetype: res% = dll_call2("HistogrammeOptions",1,item_index(10)-1) : ' changer le format du histogramme return
copierimage: res% = dll_call2("HistogrammeOptions",2,0) : ' copier l'image du histogramme clipboard_paste 2 return sauverbmp: fic$ = "Histogramme.bmp" res% = dll_call2("HistogrammeOptions",3,adr(fic$)) : ' copier dans un fichier BMP return
sauverjpg: fic$ = "Histogramme.jpg" res% = dll_call2("HistogrammeOptions",4,adr(fic$)) : ' copier dans un fichier JMP return changerdonnees: fic$ = file_name$(99) if fic$="_" then return res% = dll_call2("HistogrammeOptions",5,adr(fic$)) : ' copier dans un fichier JMP return
imprimer: res% = dll_call2("HistogrammeOptions",6,0) : ' imprimer return
sub CreerSerie(fic$,ns%) file_open_write 1,fic$ file_writeln 1,"#Type=LINE" file_writeln 1,"#Bord droit=17" file_writeln 1,"#Bord bas=38" file_writeln 1,"#Largeur fenêtre=620" file_writeln 1,"#Hauteur fenêtre=430" file_writeln 1,"#Style=3D" file_writeln 1,"#Grille=H" file_writeln 1,"#Légendes" file_writeln 1,"#Largeur=4" file_writeln 1,"#Séries="+str$(ns%) file_writeln 1,"#Valeurs=4" file_writeln 1,"#Données=1" file_writeln 1,"100" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"150" if ns%>1 file_writeln 1,"#Données=2" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"300" file_writeln 1,"200" end_if if ns%>2 file_writeln 1,"#Données=3" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"500" file_writeln 1,"350" end_if file_writeln 1,"#Minimum Y=0" file_writeln 1,"#Maximum Y=1000" file_writeln 1,"#Ecart Y=100" file_writeln 1,"#Légende Y=0" file_writeln 1,"#Titres" file_writeln 1,"Haut=Evolution des consommations" file_writeln 1,"Gauche=Conso. en kWh" file_writeln 1,"Bas=Relevés" file_writeln 1,"Droite=Divers" file_writeln 1,"#Légendes séries" file_writeln 1,"Gaz" if ns%>1 then file_writeln 1,"Electricité hc" if ns%>2 then file_writeln 1,"Electricité hp" file_writeln 1,"#Légendes valeurs" file_writeln 1,"1" file_writeln 1,"2" file_writeln 1,"3" file_writeln 1,"4" file_writeln 1,"#Fin" file_close 1 end_sub EDIT Pour l'impression, il faut préciser les points suivants:- le nouveau code 6 de HistogrammeOptions offre une possibilité simple et rapide de "tirer" une copie du graphe sur une feuille de papier - le dialogue de sélection d'imprimante est ouvert avant impression - l'impression ne se fait que si une imprimante a été sélectionnée - l'image du graphe est imprimée sur toute la page, en mode paysage - si une impression plus sophistiquée est nécessaire (choix de l'emplacement et de la taille sur papier, ajout de textes et autres éléments, ...), il faut utiliser les fonctions de gestion d'impression de KGF.dll, et imprimer le graphe à partir d'un fichier BMP ou JPG (créés par HistogrammeFonction codes 3 ou 4) | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 20 Mar 2016 - 17:09 | |
| Klaus, verrais tu quelque chose de pas catho dans cette sub : - Code:
-
' ------------------------------------------------------------------------------ ' MODIFICATION D' UN ENREGISTREMENT ' ------------------------------------------------------------------------------
sub REFRESH_ENRGT_ISAM(cle$,Chp%,NewVal$) dim_local res%,m%,s$,sf$,enrgt%,key$,align%,i% s$ = NewVal$ if chp%=6 or chp%=7 align% = 1 sf$ = "*" s$ = right$(string$(10,"*")+s$,10) else align% = 0 sf$ = " " if chp%=8 or chp%=9 s$ = left$(s$+string$(3," "),3) else if chp%=5 s$ = left$(s$+string$(4," "),4) else s$ = left$(s$+string$(255," "),255) end_if end_if end_if ' -> vérification de l' ouverture de la base res% = dll_call1("IsamFileIsOpen",Isam_ID%) if res%<0 m%=message_warning_ok("Le fichier ISAM est fermé !") exit_sub end_if ' -> récupération du numéro d' enregistrement et de lui même ISAM_record$ = string$(ISAM_RecLen%," ") key$ = cle$ enrgt% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),1,adr(key$)) ' -> rafraichissement du champ res% = dll_call6("FillIsamField",Isam_ID%,chp%,align%,adr(ISAM_Record$),adr(s$),adr(sf$)) ' -> enregistrement dans la base res% = dll_call3("UpdateIsamRecord",Isam_ID%,adr(ISAM_Record$),enrgt%) end_sub lors de la création, le champ 1 est le numéro d' enregistrement. la clé 1 est :1,1,1 Donc clé 1 sur champ 1 sans doublons enrgt% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),1,adr(key$)) doit me chercher la valeur de key$ dans les champs 1 et si key$="1" il doit me donner enrgt%=1 or il me donne 0 Bon, je fais un zip sur mon webdav (GestCompte.zip) et si tu as 5 minutes...
Dernière édition par ygeronimi le Lun 21 Mar 2016 - 12:25, édité 1 fois | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Dim 20 Mar 2016 - 18:38 | |
| Je vais regarder ça sur ton WebDav, car le code que tu viens de publier est un bizarre mélange - probablement une erreur de manipulation lors du copier/coller. Je verrai ça ce soir ou demain, directement sur le WebDav. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 21 Mar 2016 - 12:24 | |
| Effectivement, j' ai collé deux fois la même sub et l' une dans l' autre. Je vais corriger. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 21 Mar 2016 - 19:57 | |
| Ca y est ! j' ai la bonne formule ! ...en tout cas, une qui fonctionne : - Code:
-
' ------------------------------------------------------------------------------ ' MODIFICATION D' UN ENREGISTREMENT '(intervient lors d' un clic sur une cellule du grid est appelée par : ' POINTAGE_ENRGT(grd%,lng%) ligne 375 de cette page) ' ------------------------------------------------------------------------------
sub REFRESH_ENRGT_ISAM(cle$,Chp%,NewVal$) dim_local res%,m%,s$,sf$,enrgt%,key$,align%,i% s$ = NewVal$ if chp%=6 or chp%=7 align% = 1 sf$ = "*" s$ = right$(string$(10,"*")+s$,10) else align% = 0 sf$ = " " if chp%=8 or chp%=9 s$ = left$(s$+string$(3," "),3) else if chp%=5 s$ = left$(s$+string$(4," "),4) else s$ = left$(s$+string$(255," "),255) end_if end_if end_if
' -> vérification de l' ouverture de la base res% = dll_call1("IsamFileIsOpen",Isam_ID%) if res%<0 m%=message_warning_ok("Le fichier ISAM est fermé !") exit_sub end_if ' -> récupération du numéro d' enregistrement et de lui même ISAM_record$ = string$(ISAM_RecLen%," ") key$ = right$(string$(5,"*")+cle$,5) enrgt% = dll_call4("ReadIsamRecordByKey",Isam_ID%,adr(ISAM_record$),1,adr(key$))
' TEST ' res% = dll_call0("GetIsamOk") ' if res% = 0 ' message "Enregistrement n°: "+str$(enrgt%)+chr$(13)+"Valeur du champ : "+trim$(key$) ' end_if
' -> rafraichissement du champ res% = dll_call6("FillIsamField",Isam_ID%,chp%,align%,adr(ISAM_Record$),adr(s$),adr(sf$)) ' -> enregistrement dans la base res% = dll_call3("UpdateIsamRecord",Isam_ID%,adr(ISAM_Record$),enrgt%) end_sub | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Lun 21 Mar 2016 - 20:51 | |
| Bravo ! Je pense que c'est ce que je supposais: c'est le contenu de la variable représentant la clé qui posait problème, n'est-ce pas ? | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 3:17 | |
| En fait il fallait que je formate cle$ cle$ = right$(string$(5,"*")+cle$,5) => "****1" au lieu de cle$ => "1" Maintenant j' ai d' autres souci d' initialisation de mes grids 00001 00002 00003 00002 00003 00002 00003 Et j' ai toujours une erreur E/S 32. pour l' histogramme - je crée un fichier script en ouverture avec mes soldes - j' enregistre une opération - je recréé un fichier script - je le recharge dans l' histogramme par la fonction 5 et là, bingo ! Erreur E/S 32. Un autre souci, un de plus voilà mon script : - script histogramme:
#Type=LINE #Bord droit=10 #Bord bas=10 #Largeur fenêtre=950 #Hauteur fenêtre=480 #Style=3D #Légendes #Largeur=40 #Séries=2 #Valeurs=12 #Données=1 0 0 1850 0 0 0 0 0 0 0 0 0 #Données=2 0 0 -700 0 0 0 0 0 0 0 0 0 #Minimum Y=-2000 #Maximum Y=2000 #Ecart Y=100 #Légende Y=0 #Titres Haut=Soldes mensuels Gauche=Euro Bas=Mois Droite=divers Légendes Séries Solde Réel Solde Banque #Légendes valeurs Janvier Février Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Décembre #Fin
et voilà le résultat : Il me manque quelques éléments, non ?... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 3:37 | |
| Peut être un début d' explication pour l' erreur E/S 32. Cela pourrait venir du fait que je ré-écrive sur un fichier qui n' a pas été libéré. A savoir qui ne le libère pas ? Panoramic ou KGF ? Libérez le fichier ! Libérez le fichier !... ...bon, aller, je vais prendre mes p'tite pilules rose et mon entonnoir... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 10:37 | |
| Au premier regard, je ne vois rien d'anormal. Je vais essayer chez moi. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 11:30 | |
| J'ai trouvé ! Tu as encodé ton fichier en UTF-8, et les caractères accentués prennent en fait deux octets, ce qui décale tout. Utilise Notepad++, choisis l'encodage ANSI et remplace tous les caractères devenus illisibles par le caractère accentué correct. Chez moi, ça donne ceci: - Spoiler:
#Type=LINE #Bord droit=10 #Bord bas=10 #Largeur fenêtre=950 #Hauteur fenêtre=480 #Style=3D #Légendes #Largeur=40 #Séries=2 #Valeurs=12 #Données=1 0 0 1850 0 0 0 0 0 0 0 0 0 #Données=2 0 0 -700 0 0 0 0 0 0 0 0 0 #Minimum Y=-2000 #Maximum Y=2000 #Ecart Y=100 #Légende Y=0 #Titres Haut=Soldes mensuels Gauche=Euro Bas=Mois Droite=divers Légendes Séries Solde Réel Solde Banque #Légendes valeurs Janvier Février Mars Avril Mai Juin Juillet Aout Septembre Octobre Novembre Décembre #Fin
En apparence, c'est identique, mais seulement en apparence. Je vais faire une version de KGF.dll qui signale le numéro de ligne en erreur... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 11:49 | |
| KGF.dll V6.17 du 21/03/2016
Nouveautés: - Histogramme et HistogrammeEX: affichage d'un diagnostic d'erreur en anomalie de paramétrage
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour.
En cas d'erreur, le programme affiche maintenant: - le nom (et chemin si présent) du fichier de paramétrage - le numéro de la dernière ligne lue - le contenu de la dernière ligne lue | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 11:52 | |
| Perso, je n' ai rien encodé, c' est Panoramic par "Open_file_write" qui créé le fichier script et encode en UTF-8. Maintenant, il me faut trouver le moyen de créer un fichier script en ANSI ? | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 12:00 | |
| Regarde mon programme de démo: - Code:
-
label changetype, copierimage, sauverbmp, sauverjpg, changerdonnees, imprimer dim res%, histo$, hnd%, fic$
width 0,900 : height 0,800 panel 1 : top 1,10 : left 1,10 : width 1,640 : height 1,450 : color 1,127,127,255 picture 2 : top 2,480 : left 2,10 : width 2,300 : height 2,200 : stretch_on 2 color 2,255,127,127
combo 10 : top 10,10 : left 10,700 : on_click 10,changetype item_add 10,"BAR" item_add 10,"PIE" item_add 10,"SCATTER" item_add 10,"AREA" item_add 10,"HILOW" item_add 10,"MARK" item_add 10,"SPLINE" item_add 10,"XLINE" item_add 10,"PARETO" text 10,"LINE" button 11 : top 11,40 : left 11,700 : caption 11,"Copier" : on_click 11,copierimage button 12 : top 12,70 : left 12,700 : caption 12,"BMP" : on_click 12,sauverbmp button 13 : top 13,100 : left 13,700 : caption 13,"JPG" : on_click 13,sauverjpg button 14 : top 14,130 : left 14,700 : caption 14,"Données" : on_click 14,changerdonnees button 15 : top 15,160 : left 15,700 : caption 15,"Imprimer" : on_click 15,imprimer
open_dialog 99 : filter 99,"Fichiers TXT|*.txt"
histo$ = "x_3_series.txt" CreerSerie(histo$,3) histo$ = "x_2_series.txt" CreerSerie(histo$,2) histo$ = "x_1_series.txt" CreerSerie(histo$,1)
dll_on "KGF.dll" hnd% = dll_call6("HistogrammeEX",adr(histo$),1,1,1,1,handle(1)) : ' créer le histogramme
end
changetype: res% = dll_call2("HistogrammeOptions",1,item_index(10)-1) : ' changer le format du histogramme return
copierimage: res% = dll_call2("HistogrammeOptions",2,0) : ' copier l'image du histogramme clipboard_paste 2 return sauverbmp: fic$ = "Histogramme.bmp" res% = dll_call2("HistogrammeOptions",3,adr(fic$)) : ' copier dans un fichier BMP return
sauverjpg: fic$ = "Histogramme.jpg" res% = dll_call2("HistogrammeOptions",4,adr(fic$)) : ' copier dans un fichier JMP return changerdonnees: fic$ = file_name$(99) if fic$="_" then return res% = dll_call2("HistogrammeOptions",5,adr(fic$)) : ' copier dans un fichier JMP return
imprimer: res% = dll_call2("HistogrammeOptions",6,0) : ' imprimer return
sub CreerSerie(fic$,ns%) file_open_write 1,fic$ file_writeln 1,"#Type=LINE" file_writeln 1,"#Bord droit=17" file_writeln 1,"#Bord bas=38" file_writeln 1,"#Largeur fenêtre=620" file_writeln 1,"#Hauteur fenêtre=430" file_writeln 1,"#Style=3D" file_writeln 1,"#Grille=H" file_writeln 1,"#Légendes" file_writeln 1,"#Largeur=4" file_writeln 1,"#Séries="+str$(ns%) file_writeln 1,"#Valeurs=4" file_writeln 1,"#Données=1" file_writeln 1,"100" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"150" if ns%>1 file_writeln 1,"#Données=2" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"300" file_writeln 1,"200" end_if if ns%>2 file_writeln 1,"#Données=3" file_writeln 1,"300" file_writeln 1,"200" file_writeln 1,"500" file_writeln 1,"350" end_if file_writeln 1,"#Minimum Y=0" file_writeln 1,"#Maximum Y=1000" file_writeln 1,"#Ecart Y=100" file_writeln 1,"#Légende Y=0" file_writeln 1,"#Titres" file_writeln 1,"Haut=Evolution des consommations" file_writeln 1,"Gauche=Conso. en kWh" file_writeln 1,"Bas=Relevés" file_writeln 1,"Droite=Divers" file_writeln 1,"#Légendes séries" file_writeln 1,"Gaz" if ns%>1 then file_writeln 1,"Electricité hc" if ns%>2 then file_writeln 1,"Electricité hp" file_writeln 1,"#Légendes valeurs" file_writeln 1,"1" file_writeln 1,"2" file_writeln 1,"3" file_writeln 1,"4" file_writeln 1,"#Fin" file_close 1 end_sub Il crée un fichier dans le bon format. Panoramic ne sait travailler qu'en ANSI, pas en UTF8. Donc, tout est ANSI... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 12:05 | |
| Ce doit être une transformation du forum. Chez moi, le fichier script est en ANSI. Je vais refaire le zip de mon webdav avec les dernières avancées. edit : tu as un fichier kgf.chm (18/12/2015) qui traine dans le dossier racine DLL et un KGF.dll (19/03/2016) dans le dossier doc_chm. edit 2 : le zip sur mon webdav est à jour. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 12:24 | |
| Je pense que c' est file_open_write N.... file_close N qui créé l' erreur E/S 32. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 15:28 | |
| Je viens de faire un nouveau test et là, je suis quasiment sûr que cela vient de la dll.
Mon programme créé un histogramme avec les valeurs connus si je fais une opération (enregistrement d' une dépense ou d' une recette ) je recréé un fichier script avec les nouvelles valeurs je le passe via la fonction 5 à l' histogramme.
j' ai juste désactivé l' histogramme pour voir si, sans lui, le fichier s' enregistrait. Ben oui ! il le fait.
Donc, l' histogramme ne libère pas le fichier script après la création du graphique. ce qui provoque avec file_open_write N une erreur E/S 32. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 15:50 | |
| J'ai répondu sur le fil de discussion "A l'aide". | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: KGF_dll - nouvelles versions Mar 22 Mar 2016 - 16:04 | |
| KGF.dll V6.18 du 22/03/2016
Nouveautés: - Histogramme et HistogrammeEX: fermeture systématique du fichier avant de terminer
Modules modifiés: KGF.dll
La doc est inchangée. Les sources sont à jour.
Mais attention: vérifier systématiquement le code retour de ces fonctions !
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 22 Mar 2016 - 19:07 | |
| Bon, ben voilà un couac de moins... ...mais il m' en reste d' autres à résoudre. | |
| | | Contenu sponsorisé
| Sujet: Re: KGF_dll - nouvelles versions | |
| |
| | | | KGF_dll - nouvelles versions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |