FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  FAQFAQ  RechercherRechercher  S'enregistrerS'enregistrer  MembresMembres  GroupesGroupes  Connexion  
Derniers sujets
» Détection connexion internet
par JL35 Aujourd'hui à 18:39

» Le parcours du cavalier sur un échiquier 8 x 8
par pascal10000 Hier à 13:26

» Casse-tête : Echanger les positions des cavaliers
par papydall Sam 22 Juil 2017 - 19:42

» Compilateur FBPano
par jean_debord Sam 22 Juil 2017 - 10:54

» demande pour recuperer un text speciale
par pascal10000 Ven 21 Juil 2017 - 22:04

» KGF_dll - nouvelles versions
par Klaus Ven 21 Juil 2017 - 14:29

» Amélioration de la commande HINT
par papydall Mer 19 Juil 2017 - 3:30

» TEST SUR SHAPE
par papydall Mer 19 Juil 2017 - 1:17

» Un challenge à relever
par papydall Mar 18 Juil 2017 - 21:25

» Astuce : Indenter plusieurs lignes de code à la fois
par papydall Mar 18 Juil 2017 - 1:32

» Suggestion pour le forum
par papydall Lun 17 Juil 2017 - 20:28

» Truver les handles des onglets de Panoramic Editor
par Klaus Lun 17 Juil 2017 - 18:20

» Synedit_Editor - nouvelles versions
par Klaus Lun 17 Juil 2017 - 13:46

» Détermine si oui ou non un objet est PARENT d'un autre objet
par Klaus Dim 16 Juil 2017 - 11:58

» Une autre façon de terminer une application.
par papydall Dim 16 Juil 2017 - 3:53

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Juillet 2017
LunMarMerJeuVenSamDim
     12
3456789
10111213141516
17181920212223
24252627282930
31      
CalendrierCalendrier

Partagez | 
 

 V2.71 du 06/01/2014 - complément de fonctions

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

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 14:16

Nouvelle version:
KGF.dll V2.71 du 06/01/2014

Nouveauté:
ajout des fonctions
CopyIntegerIntoBinaryString  CopyStringIntoBinaryString
RecoverIntegerFromBinaryString RecoverStringFromBinaryString

pour compléter les deux nouvelles fonctions de la version V2.70

Modules modifiés:
KGF.dll
KGF_SUB.bas
KGF.chm
KGF.doc
KGF.pdf


La 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"

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 15:19

Je mets ici la suite de mon post sur "ModifyToolbar":


cqfd... Laughing
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 15: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 16:01

C' est aussi de ma faute, j' ai appliqué sans réfléchir, serais je devenu un de ces

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

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 16: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...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 16:31

J' ai modifié mon code :
Spoiler:
 
et j' obtiens ceci :


puis ceci à le fermeture :


 Crying or Very sad
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 16: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
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 17: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"

 Crying or Very sad 

Ps: j' ai placé le dossier sur mon webdav "Projet1"
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 17:55

J'ai pris la bibliothèque, et je vais regarder cela.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 18: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 !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 18:28


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

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Lun 6 Jan 2014 - 20: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 20:51

Bon, je n' ai plus qu' à étudier les différence entre les deux codes... Laughing 
Par contre, le runtime error apparait lorsque je passe le curseur sur la toolbar...
...il n' attend plus la fermeture  Twisted Evil .
Toute fois, cela fonctionne malgrès ce message... scratch
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Yannick

avatar

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

MessageSujet: re   Lun 6 Jan 2014 - 21:03

Mefiez vous un bug peut en cacher un autre !... Laughing 

Le runtime est résolu mais maintenant j' ai droit à "Panoramic s' est arrêté de fonctionner..."  Mad
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... Embarassed )

je me pose une question : ne faudrait il pas libérer la librairie d' icones.... scratch 
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  Rolling Eyes )
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

Nombre de messages : 10062
Age : 68
Localisation : Ile de France
Date d'inscription : 29/12/2009

MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   Mar 7 Jan 2014 - 3: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.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
Yannick

avatar

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

MessageSujet: re   Mar 7 Jan 2014 - 12:55

Je vais reprendre le programme sous forme modulaire 
pour voir quelle partie de celui plante.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: V2.71 du 06/01/2014 - complément de fonctions   

Revenir en haut Aller en bas
 
V2.71 du 06/01/2014 - complément de fonctions
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Un scanneur de malwares en complément : PrevX SCI
» Refus résiliation complément box par bouygues
» demande d'un complément d'information IDEO
» Complément infos techniques sur 765T
» numéros utiles (complément)

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: Activité des sites créés par les Panoramiciens. :: Le site de Klaus-
Sauter vers: