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 |
|
|
| V2.71 du 06/01/2014 - complément de fonctions | |
| | Auteur | Message |
---|
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 12:16 | |
| Nouvelle version: KGF.dll V2.71 du 06/01/2014Nouveauté: ajout des fonctions CopyIntegerIntoBinaryString CopyStringIntoBinaryString RecoverIntegerFromBinaryString RecoverStringFromBinaryStringpour compléter les deux nouvelles fonctions de la version V2.70 Modules modifiés: KGF.dll KGF_SUB.bas KGF.chm KGF.doc KGF.pdfLa doc et les sources sont à jour. Et voici un petit exemple de l'usage de ces fonctions: - Code:
-
dim s$, i%, f, t$, res%, k%
s$ = "ABCDEFGHIJKLMN"
memo 1 : height 1,400 : width 1,300 bar_vertical 1
KGF_initialize("KGF.dll")
item_add 1,"CopyFloatIntoBinaryString" s$ = "ABCDEFGHIJKLMN" f = 123.45 CopyFloatIntoBinaryString(f,4,adr(s$)) for k%=1 to 12 item_add 1,str$(k%)+": "+str$(asc(mid$(s$,k%,1))) next k% RecoverFloatFromBinaryString(4,adr(s$)) item_add 1,"RecoverFloatFromBinaryString" item_add 1,"RecoverFloatFromBinaryString="+str$(RecoverFloatFromBinaryString) item_add 1,""
item_add 1,"CopyIntegerIntoBinaryString" s$ = "ABCDEFGHIJKLMN" i%=17 CopyIntegerIntoBinaryString(i%,4,adr(s$)) for k%=1 to 12 item_add 1,str$(k%)+": "+str$(asc(mid$(s$,k%,1))) next k% RecoverIntegerFromBinaryString(4,adr(s$)) item_add 1,"RecoverIntegerFromBinaryString" item_add 1,"RecoverIntegerFromBinaryString%="+str$(RecoverIntegerFromBinaryString%) item_add 1,""
item_add 1,"CopyStringIntoBinaryString" s$ = "ABCDEFGHIJKLMN" t$ = "12345" CopyStringIntoBinaryString(t$,4,adr(s$)) for k%=1 to 12 item_add 1,str$(k%)+": "+str$(asc(mid$(s$,k%,1))) next k% RecoverStringFromBinaryString(4,5,adr(s$)) item_add 1,"RecoverStringFromBinaryString" item_add 1,"RecoverStringFromBinaryString$="+RecoverStringFromBinaryString$ item_add 1,"" end
#INCLUDE "KGF_SUB.bas"
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Jan 2014 - 13:19 | |
| Je mets ici la suite de mon post sur "ModifyToolbar": cqfd... | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 13:54 | |
| Désolé, c'est un problème de documentation. On sait bien qu'un handle d'une chaîne de caractères, ça n'a pas de sens. Il faut lire adr(ilb$) à la place.
La doc sera corrigée d'ici 30 minutes... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| | | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 14:05 | |
| Ca nous arrive à tous, de recopier un exemple tel quel pour voir ce que ça donne, sans y plonger avant, et moi le premier. Ceci dit, la doc est corrigée... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Jan 2014 - 14:31 | |
| J' ai modifié mon code : - Spoiler:
- Code:
-
' Variables de la tool_bar dim system$, position_toolbar%, icon_size%,ilb$,chg_hor%, chg_ver%,icon$, after%, hint$ ' Variables de la dll dim KGF$,res% ' Autres variables dim bouton%,ii% dim D$,x%,M%,sep%,Lig$,L% dim s$,hnd%, hnd0%, titre$ ' ##############################################################################
' Labels de la tool_bar label click_toolbar,adapter_container ' Autres labels label Init,init_list,Selection,Ajouter,Supprimer,Close0 label Init_F100,Couleur104,Enregistrer,Connection ' ##############################################################################
' Initialisation des variables system$="W7" position_toolbar%=0 icon_size%=32 chg_hor% =16 chg_ver% =(icon_size%-16)+76 ilb$="C:\Users\Yannick\Desktop\Panoramic\Projet1\MDC.ilb" KGF$=dir_current$+"\KGF.dll"
' ##############################################################################
' Ouverture de la dll dll_on KGF$
' ##############################################################################
' Interface
Width 0,250 :height 0,360:top 0,(screen_y-360)/2 :left 0,(screen_x-250)/2 caption 0,"Connect to Mydrive"
edit 1 : hide 1 on_change 1,click_toolbar
dlist 9
container 10
res% = dll_call4("CreateToolbar",handle(0),handle(1),handle(10),position_toolbar%) res% = dll_call4("ModifyToolbar",7,icon_size%,0,0) Width 0,250 :height 0,360 gosub adapter_container res% = dll_call4("ModifyToolbar",8,1,0,0) res% = dll_call4("ModifyToolbar",2,0,0,0) res% = dll_call4("ModifyToolbar",5,adr(ilb$),0,0) hint$ = "Ajouter une adresse" icon$ = "MDC_1" :' "KGF_44" res% = dll_call4("AddButtonToToolbar",1,0,adr(hint$),adr(icon$)) hint$ = "Supprimer une adresse" icon$ = "MDC_2" :' "KGF_62" res% = dll_call4("AddButtonToToolbar",2,1,adr(hint$),adr(icon$)) hint$ = "Connection à l'adresse sélectionné" icon$ = "MDC_3" :' "KGF_252" res% = dll_call4("AddButtonToToolbar",3,2,adr(hint$),adr(icon$))
List 11: Parent 11,10:top 11,5:height 11,(height(10)-7):width 11,width(10) font_name 11,"arial":font_size 11,10:cursor_point 11 on_click 11,Selection
gosub init
end
' ##############################################################################
Init: D$=Dir_current$ if file_exists(D$+"\Connect.Bdd")=1 file_load 9,D$+"\Connect.Bdd" else file_open_write 100,D$+"\Connect.Bdd":file_close 100 res% = dll_call4("ModifyToolbar",3,3,0,0) end_if if count(9)>0 :gosub init_list:end_if return
Init_list: clear 11 if count(9)>0 for x%=1 to count(9) Lig$=item_read$(9,x%) sep%=instr(Lig$,";") item_add 11,left$(Lig$,sep%-1) next x% res% = dll_call4("ModifyToolbar",3,3,1,0) else res% = dll_call4("ModifyToolbar",3,3,0,0) end_if return
Click_Toolbar: if val(text$(1))<0 if text$(1)="-1" then gosub adapter_container if text$(1)="-2" then message "error 2" if text$(1)="-3" then message "error 3" if text$(1)="-4" then message "error 4" else bouton%=val(text$(1)) select bouton% case 1 gosub Ajouter case 2 if ii%>0 :gosub Supprimer:else:message "Veuillez sélectionner un compte .":end_if case 3 if ii%>0 :gosub Connection:else:message "Veuillez sélectionner un compte .":end_if end_select end_if return
Adapter_Container: select position_toolbar% case 0 top 10,icon_size%+10 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 1 left 10,icon_size%+12 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 2 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 3 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) end_select return
Selection: if count(11)>0 ii%=item_index(11) end_if return
Ajouter: if object_exists(100)=1 Show 100 else form 100:width 100,250:height 100,160 Font_name 100,"Times new roman":font_size 100,10:caption 100,"Ajouter un compte" command_target_is 100 alpha 101 :top 101,10:left 101,10:caption 101,"Login :" edit 103 :top 103,28:left 103,10:width 103,150 alpha 102 :top 102,50:left 102,10:caption 102,"Mot de passe :" edit 104 :top 104,68:left 104,10:on_change 104,couleur104 button 105:top 105,95:left 105,155:caption 105,"Enregistrer":cursor_point 105 on_click 105,Enregistrer end_if gosub Init_F100 return
Init_F100: text 103,"" text 104,"panoramic123":font_color 104,210,210,210 return
couleur104: font_color 104,0,0,0 return
Enregistrer: item_add 9,trim$(text$(103))+";"+trim$(text$(104)) file_save 9,D$+"\Connect.Bdd" gosub Init_list gosub Init_F100 hide 100 return
Supprimer: item_delete 9,ii% gosub init_list return
Connection: hide 0 Execute "http://www.mydrive.ch/login" pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )=0 show 0 message "Il faut d'abord cliquer sur [MyDrive] !" message "Le titre actuel est: ["+titre$+"]" return end_if s$ = item_index$(11) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = item_read$(9,item_index(11)) sep%=instr(s$,";") s$=right$(s$,len(s$)-sep%) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return
Close0: dll_off return
et j' obtiens ceci : puis ceci à le fermeture : | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 14:53 | |
| Supprime la toolbar avant l'arrêt de la DLL, de cette façon: - Code:
-
Close0: res% = dll_call1("RemoveToolbar",1) dll_off return | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Jan 2014 - 15:51 | |
| J' ai le même souci... ...les icones de ma librairie ne s'affichent pas et j' ai le même message à la fermeture. Pour info : La librairie a été faite avec ton appli delphi et sont nommées en interne par cet appli "1" "2" "3" "4" J' ai essayé : icon$="1" icon$="MDC_1" Ps: j' ai placé le dossier sur mon webdav "Projet1" | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 15:55 | |
| J'ai pris la bibliothèque, et je vais regarder cela. | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 16:16 | |
| Premier point: pour les images en provenance d'une bibliothèque personnelle, il faut nommer les icônes "USER_x" avec x étant le numéro. Comme ceci: - Code:
-
hint$ = "Ajouter une adresse" icon$ = "USER_1" :' "KGF_44" res% = dll_call4("AddButtonToToolbar",1,0,adr(hint$),adr(icon$)) hint$ = "Supprimer une adresse" icon$ = "USER_2" :' "KGF_62" res% = dll_call4("AddButtonToToolbar",2,1,adr(hint$),adr(icon$)) hint$ = "Connection à l'adresse sélectionné" icon$ = "USER_3" :' "KGF_252" res% = dll_call4("AddButtonToToolbar",3,2,adr(hint$),adr(icon$))
Les icônes de ta bibliothèque s'affichent bien. Deuxième point: Je suis sur la trace du plantage en fermeture. Mais n'oublie-pas de faire res% = dll_call1("RemoveToolbar",1)avant DLL_OFF ! | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 16:28 | |
| | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Lun 6 Jan 2014 - 18:29 | |
| avec: - Code:
-
' Variables de la tool_bar dim system$, position_toolbar%, icon_size%,ilb$,chg_hor%, chg_ver%,icon$, after%, hint$ ' Variables de la dll dim KGF$,res% ' Autres variables dim bouton%,ii% dim D$,x%,M%,sep%,Lig$,L% dim s$,hnd%, hnd0%, titre$ ' ##############################################################################
' Labels de la tool_bar label click_toolbar,adapter_container ' Autres labels label Init,init_list,Selection,Ajouter,Supprimer,Close0 label Init_F100,Couleur104,Enregistrer,Connection ' ##############################################################################
' Initialisation des variables system$="W7" position_toolbar%=0 icon_size%=32 chg_hor% =16 chg_ver% =(icon_size%-16)+76 ' ilb$="C:\Users\Yannick\Desktop\Panoramic\Projet1\MDC.ilb" ilb$="C:\Documents and Settings\Klaus\Mes documents\Mes projets Panoramic\Paie\MDC.ilb" KGF$="KGF.dll"
' ##############################################################################
' Ouverture de la dll dll_on KGF$ on_close 0,close0 : <============ IMPORTANT !
' ##############################################################################
' Interface
Width 0,250 :height 0,360:top 0,(screen_y-360)/2 :left 0,(screen_x-250)/2 caption 0,"Connect to Mydrive"
edit 1 : hide 1 on_change 1,click_toolbar
dlist 9
container 10
res% = dll_call4("CreateToolbar",handle(0),handle(1),handle(10),position_toolbar%) res% = dll_call4("ModifyToolbar",7,icon_size%,0,0) Width 0,250 :height 0,360 gosub adapter_container res% = dll_call4("ModifyToolbar",8,1,0,0) res% = dll_call4("ModifyToolbar",2,0,0,0) if file_exists(ilb$)=0 then message "inexistant" res% = dll_call4("ModifyToolbar",5,adr(ilb$),0,0) hint$ = "Ajouter une adresse" icon$ = "USER_1" :' "KGF_44" res% = dll_call4("AddButtonToToolbar",1,0,adr(hint$),adr(icon$)) hint$ = "Supprimer une adresse" icon$ = "USER_2" :' "KGF_62" res% = dll_call4("AddButtonToToolbar",2,1,adr(hint$),adr(icon$)) hint$ = "Connection à l'adresse sélectionné" icon$ = "USER_3" :' "KGF_252" res% = dll_call4("AddButtonToToolbar",3,2,adr(hint$),adr(icon$))
List 11: Parent 11,10:top 11,5:height 11,(height(10)-7):width 11,width(10) font_name 11,"arial":font_size 11,10:cursor_point 11 on_click 11,Selection
gosub init
end
' ##############################################################################
Init: D$=Dir_current$ if file_exists(D$+"\Connect.Bdd")=1 file_load 9,D$+"\Connect.Bdd" else file_open_write 100,D$+"\Connect.Bdd":file_close 100 res% = dll_call4("ModifyToolbar",3,3,0,0) end_if if count(9)>0 :gosub init_list:end_if return
Init_list: clear 11 if count(9)>0 for x%=1 to count(9) Lig$=item_read$(9,x%) sep%=instr(Lig$,";") item_add 11,left$(Lig$,sep%-1) next x% res% = dll_call4("ModifyToolbar",3,3,1,0) else res% = dll_call4("ModifyToolbar",3,3,0,0) end_if return
Click_Toolbar: if val(text$(1))<0 if text$(1)="-1" then gosub adapter_container if text$(1)="-2" then message "error 2" if text$(1)="-3" then message "error 3" if text$(1)="-4" then message "error 4" else bouton%=val(text$(1)) select bouton% case 1 gosub Ajouter case 2 if ii%>0 :gosub Supprimer:else:message "Veuillez sélectionner un compte .":end_if case 3 if ii%>0 :gosub Connection:else:message "Veuillez sélectionner un compte .":end_if end_select end_if return
Adapter_Container: select position_toolbar% case 0 top 10,icon_size%+10 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 1 left 10,icon_size%+12 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 2 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) case 3 width 10,(width(0)-chg_hor%) height 10,(height(0)-chg_ver%) end_select return
Selection: if count(11)>0 ii%=item_index(11) end_if return
Ajouter: if object_exists(100)=1 Show 100 else form 100:width 100,250:height 100,160 Font_name 100,"Times new roman":font_size 100,10:caption 100,"Ajouter un compte" command_target_is 100 alpha 101 :top 101,10:left 101,10:caption 101,"Login :" edit 103 :top 103,28:left 103,10:width 103,150 alpha 102 :top 102,50:left 102,10:caption 102,"Mot de passe :" edit 104 :top 104,68:left 104,10:on_change 104,couleur104 button 105:top 105,95:left 105,155:caption 105,"Enregistrer":cursor_point 105 on_click 105,Enregistrer end_if gosub Init_F100 return
Init_F100: text 103,"" text 104,"panoramic123":font_color 104,210,210,210 return
couleur104: font_color 104,0,0,0 return
Enregistrer: item_add 9,trim$(text$(103))+";"+trim$(text$(104)) file_save 9,D$+"\Connect.Bdd" gosub Init_list gosub Init_F100 hide 100 return
Supprimer: item_delete 9,ii% gosub init_list return
Connection: hide 0 Execute "http://www.mydrive.ch/login" pause 1000 titre$ = string$(255," ") hnd% = dll_call1("GetActiveWindowTitle",adr(titre$)) if instr(titre$, "Login |" )=0 show 0 message "Il faut d'abord cliquer sur [MyDrive] !" message "Le titre actuel est: ["+titre$+"]" return end_if s$ = item_index$(11) hnd% = dll_call0("GetActiveControl") res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = item_read$(9,item_index(11)) sep%=instr(s$,";") s$=right$(s$,len(s$)-sep%) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 s$ = chr$(9) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) s$ = chr$(13) res% = dll_call2("SendStringAsText",hnd%,adr(s$)) pause 1000 show 0 return
Close0: res% = dll_call1("RemoveToolbar",1) dll_off return Le plantage est aussi corrigé - tu as oublié la commande ON_CLOSE 0,Close0. Donc, le traitement de fin ne se faisait pas. Tout marche bien maintenant. | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Jan 2014 - 18:51 | |
| Bon, je n' ai plus qu' à étudier les différence entre les deux codes... Par contre, le runtime error apparait lorsque je passe le curseur sur la toolbar... ...il n' attend plus la fermeture . Toute fois, cela fonctionne malgrès ce message... | |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Lun 6 Jan 2014 - 19:03 | |
| Mefiez vous un bug peut en cacher un autre !... Le runtime est résolu mais maintenant j' ai droit à "Panoramic s' est arrêté de fonctionner..." mais le compilateur ne veut toujours pas ce code chez moi ! (le compilateur pas l' assembleur, j' ai toujours peur que l' on fasse la confusion... ) je me pose une question : ne faudrait il pas libérer la librairie d' icones.... Si on utilise les icones de Kgf.dll, la librairie est libéré en même temps que la dll mais si c' est une librairie perso, on l' ouvre mais rien ne la ferme (du moins je crois ) | |
| | | Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions Mar 7 Jan 2014 - 1:28 | |
| Ne t'inquiète pas pour la librairie d'icônes. C'est un simple fichier qui n'est pas géré comme une DLL et n'est pas chargé en mémoire en permanence. Ce fichier est en fait une sauvegarde d'un objet TImageList de Delphi, réalisée par l'utilitaire de création écrit en Delphi. Et la DLL, elle-même écrite en DLL, l'utilise de la manière suivante: - la fonction ModifyToolbar mémorise simplement le nom du fichier dans une variable chaîne de caractères interne - lors de l'ajout d'un bouton, SI et seulement SI le nom de l'image commence par "USER_", la DLL crée un objet TImageLIst interne, charge ce fichier dedans par une simple opération de restauration (comme un FILE_LOAD pour un mémo), extrait l'icône choisie pour la coller dans le nouveau bouton, puis supprime totalement l'objet temporaire TImageList. Rien de cette pseudo-bibliothèque ne reste en mémoire.
Si tu expérimentes d'autres "pannes", essaye de trouver un moyen précis de les reproduire et signale-les - je pourrai alors m'en charger. Chez moi, je n'ai pas rencontré ce genre d'ennuis.
| |
| | | Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mar 7 Jan 2014 - 10:55 | |
| Je vais reprendre le programme sous forme modulaire pour voir quelle partie de celui plante. | |
| | | Contenu sponsorisé
| Sujet: Re: V2.71 du 06/01/2014 - complément de fonctions | |
| |
| | | | V2.71 du 06/01/2014 - complément de fonctions | |
|
Sujets similaires | |
|
| Permission de ce forum: | Vous ne pouvez pas répondre aux sujets dans ce forum
| |
| |
| |