FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC

Développement d'applications avec le langage Panoramic
 
AccueilAccueil  RechercherRechercher  Dernières imagesDernières images  S'enregistrerS'enregistrer  MembresMembres  Connexion  
Derniers sujets
» Logiciel de planétarium.
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Pedro Hier à 15:50

» Un autre pense-bête...
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Emptypar leclode Ven 20 Sep 2024 - 19:02

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Novembre 2024
LunMarMerJeuVenSamDim
    123
45678910
11121314151617
18192021222324
252627282930 
CalendrierCalendrier
Le Deal du moment : -28%
-28% Machine à café avec broyeur ...
Voir le deal
229.99 €

 

 Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5

Aller en bas 
5 participants
AuteurMessage
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 9:32

Version instantanée du 15 décembre 2015 : PANORAMIC V 0.9.27i4

Je viens de mettre à disposition une nouvelle version instantanée.

Voici les changements par rapport à la version V 0.9.27i3 du 9 décembre 2015:

- il n'y a aucune limite au nombre de librairies, de commandes et de fonctions. J'ai quand même mis une limite sur les numéros pour éviter des nombres très grands : ils doivent être inférieurs ou égaux à 10000.

- correction d'un mauvais affichage d'erreur ("Library already defined" sur un mauvais numéro de librairie)

- correction d'un bug : lors de l'appel d'une fonction dans une librairie (DLL), les paramètres peuvent être des expressions. Par exemple, handle(n) est accepté.

- LIBRARY$(N) fournit le nom de la librairie numéro N ou "_" (underscore) si la librairie n'a pas été déclarée.

- Attention, les appels de fonction sans paramètre ne fonctionnent pas

_________________
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Webdav username : panoramic@jack-panoramic password : panoramic123


Dernière édition par Jack le Mar 15 Déc 2015 - 20:12, édité 1 fois
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Klaus

Klaus


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

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 10:08

Merci, Jack. Je le prends tout de suite.

Citation :
- Attention, les appels de fonction sans paramètre ne fonctionnent pas
Peux-tu me dire si c'est temporaire ? J'imaginais passer la chaîne vide en tant qu'identifiant des types des paramètres, comme ceci:
Code:
    function "KGFupdate","KGFupdate",n%,"","stdcall"
à la place de
Code:
res% = dll_call0("KGFupdate")
Ca serait quand-même bien, car il y a pas mal de fonctions sans paramètres, dans KGF.dll ainsi que dans les DLLs de Windows.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 10:48

Rapport d'étape:
La limite de 10 fonctions a effectivement été levée. Pourtant, il reste une limite à 51 fonctions qui passent, et on a une violation de mémoire à la 52ème.

Je mets au point un module #INCLUDE pour la définition de toutes les fonctions de KGF.dll. Certes, il y en a beaucoup. Mais le module est paramétrable pour définir soit tout, soit un groupe particulier de fonctions. Mais ça ne va pas loin, car ça plante à la 52ème fonction. Voici le code que j'ai à ce jour. J'ai mis deux EXIT_SUB avec un commentaire, dans les lignes 85 et 87. Tel quel, ça s'exécute bien, le EXIT_SUB en ligne 85 étant activé. Mais en le mettant en commentaire, la ligne suivante provoque la violation d'acces:
Code:
' KGF_library.bas
'
' Ce module doit être inclus dan un programme par #INCLUDE.
' Cette directive doit être placée à la fin du source,
' afin d'éviter un décalage des numéros de ligne.
' Ce module contient les définitions des fonctions de KGF.dll,
' dans le contexte des versions Panoramic V0.9/27i3 et suivants.

KGF_library(1,"KGF.dll","*") : ' tester le module
message "ok"
end

' if 1=2  : ' pour éviter une exécution "en ligne"
sub KGF_library(n%,dll$,typ$)
  if n%>0 then library n%,dll$
 
  ' ***** gestion des sockets client/server
  if (typ$="*") or (typ$="socket")
    function "CreateServerSocket","CreateServerSocket",n%,"II","stdcall"
    function "DeleteServerSocket","DeleteServerSocket",n%,"","stdcall"
    function "GetServerSocket","GetServerSocket",n%,"","stdcall"
    function "CreateClientSocket","CreateClientSocket",n%,"III","stdcall"
    function "DeleteClientSocket","DeleteClientSocket",n%,"","stdcall"
  end_if

  ' ***** fonctions diverses
  if (typ$="*") or (typ$="divers")
    function "ResetKGF","ResetKGF",n%,"","stdcall"
    function "GetWindowProcessName","GetWindowProcessName",n%,"II","stdcall"
    function "GetWindowProcessHandles","GetWindowProcessHandles",n%,"II","stdcall"
    function "SetFormProperties","SetFormProperties",n%,"III","stdcall"
    function "GetHighPerformanceTimer","GetHighPerformanceTimer",n%,"I","stdcall"
    function "GetObjectTree","GetObjectTree",n%,"III","stdcall"
    function "AssociateFileExtension","AssociateFileExtension",n%,"II","stdcall"
    function "DrawToCanvas","DrawToCanvas",n%,"IIIIII","stdcall"
    function "GetWindowsFoldersPath","GetWindowsFoldersPath",n%,"II","stdcall"
    function "DeleteFileToRecycleBin","DeleteFileToRecycleBin",n%,"I","stdcall"
    function "TestComboBox","TestComboBox",n%,"III","stdcall"
    function "ReadBinaryFileToPanoramic","ReadBinaryFileToPanoramic",n%,"IIII","stdcall"
    function "ClipboardCopy","ClipboardCopy",n%,"I","stdcall"
    function "KGFdllVersion","KGFdllVersion",n%,"I","stdcall"
    function "PanoramicVersion","PanoramicVersion",n%,"I","stdcall"
    function "KGFupdate","KGFupdate",n%,"","stdcall"
    function "RandomValue","RandomValue",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions designer
  if (typ$="*") or (typ$="designer")
    function "DesignDrag","DesignDrag",n%,"II","stdcall"
    function "UnregisterObjectFromDesigner","UnregisterObjectFromDesigner",n%,"","stdcall"
    function "RegisterObjectForDesigner","RegisterObjectForDesigner",n%,"III","stdcall"
    function "DesignerFunction","DesignerFunction",n%,"IIII","stdcall"
  end_if
 
  ' ***** fonctions XML
  if (typ$="*") or (typ$="xml")
    function "LoadXmlFromFile","LoadXmlFromFile",n%,"I","stdcall"
    function "LoadXmlFromObject","LoadXmlFromObject",n%,"I","stdcall"
    function "LoadXmlFromString","LoadXmlFromString",n%,"I","stdcall"
    function "FreeXml","FreeXml",n%,"I","stdcall"
    function "GetPreviousXmlSister","GetPreviousXmlSister",n%,"I","stdcall"
    function "GetNextXmlSister","GetNextXmlSister",n%,"I","stdcall"
    function "GetXmlParent","GetXmlParent",n%,"I","stdcall"
    function "GetFirstXmlChild","GetFirstXmlChild",n%,"I","stdcall"
    function "GetXmlTop","GetXmlTop",n%,"I","stdcall"
    function "GetXmlData","GetXmlData",n%,"II","stdcall"
    function "SetXmlData","SetXmlData",n%,"III","stdcall"
    function "GetXmlName","GetXmlName",n%,"II","stdcall"
    function "SetXmlName","SetXmlName",n%,"IIII","stdcall"
    function "SelectXmlElementByPath","SelectXmlElementByPath",n%,"IIII","stdcall"
    function "GetXmlElementByAddress","GetXmlElementByAddress",n%,"III","stdcall"
    function "GetXmlElementAddress","GetXmlElementAddress",n%,"I","stdcall"
    function "SaveXmlToFile","SaveXmlToFile",n%,"II","stdcall"
    function "SaveXmlToMemo","SaveXmlToMemo",n%,"II","stdcall"
    function "SaveXmlToString","SaveXmlToString",n%,"II","stdcall"
    function "AddXmlElement","AddXmlElement",n%,"III","stdcall"
    function "DeleteXmlElement","DeleteXmlElement",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions TabObject
  if (typ$="*") or (typ$="tabobject")
    function "CreateTabObject1","CreateTabObject1",n%,"I","stdcall"
    function "DeleteTabObject1","DeleteTabObject1",n%,"I","stdcall"
    function "TabObjectGeometry1","TabObjectGeometry1",n%,"IIIII","stdcall"
  exit_sub          : ' <========== OK jusqu'ici
    function "AddTabObjectTab1","AddTabObjectTab1",n%,"II","stdcall"
  exit_sub          : ' <========== Violation d'accès ici !
    function "AddObjectToTabObjectTab1","AddObjectToTabObjectTab1",n%,"III","stdcall"
    function "AddSimpleObjectToTabObjectTab1","AddSimpleObjectToTabObjectTab1",n%,"III","stdcall"
    function "CreateTabObject","CreateTabObject",n%,"I","stdcall"
    function "TabObjectGeometry","TabObjectGeometry",n%,"IIIII","stdcall"
    function "AddTabObjectTab","AddTabObjectTab",n%,"II","stdcall"
    function "AddObjectToTabObjectTab","AddObjectToTabObjectTab",n%,"III","stdcall"
    function "AddSimpleObjectToTabObjectTab","AddSimpleObjectToTabObjectTab",n%,"III","stdcall"
    function "DeleteTabObject","DeleteTabObject",n%,"II","stdcall"
    function "TabObjectFunction","TabObjectFunction",n%,"IIIIII","stdcall"
    function "CreateImageList","CreateImageList",n%,"I","stdcall"
    function "AddImageToImageList","AddImageToImageList",n%,"III","stdcall"
    function "DeleteImageList","DeleteImageList",n%,"I","stdcall"
  end_if

  ' ***** fonctions LabelPictureButton
  if (typ$="*") or (typ$="picturebutton")
    function "IdentifyLabelPictureButton","IdentifyLabelPictureButton",n%,"","stdcall"
    function "ConfigureLabelPictureButtonGeometry","ConfigureLabelPictureButtonGeometry",n%,"IIIII","stdcall"
    function "ConfigureLabelPictureButtonStyle","ConfigureLabelPictureButtonStyle",n%,"IIIIII","stdcall"
    function "LabelPictureButtonFunction","LabelPictureButtonFunction",n%,"IIIII","stdcall"
    function "CreateLabelPictureButtonContainer","CreateLabelPictureButtonContainer",n%,"III","stdcall"
    function "DeleteLabelPictureButton","DeleteLabelPictureButton",n%,"I","stdcall"
    function "CreateLabelPictureButton","CreateLabelPictureButton",n%,"IIIIII","stdcall"
    function "CreateSimpleLabelPictureButton","CreateSimpleLabelPictureButton",n%,"IIIIII","stdcall"
    function "CreateLabelPictureButtonElement","CreateLabelPictureButtonElement",n%,"IIIIII","stdcall"
    ' function "DeleteLabelPictureButton","DeleteLabelPictureButton",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions ObjectGroup
  if (typ$="*") or (typ$="objectgroup")
    function "CreateObjectGroup","CreateObjectGroup",n%,"","stdcall"
    function "AddObjectToObjectGroup","AddObjectToObjectGroup",n%,"II","stdcall"
    function "ObjectGroupFunction","ObjectGroupFunction",n%,"III","stdcall"
    function "DeleteObjectGroup","DeleteObjectGroup",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions ButtonArray
  if (typ$="*") or (typ$="buttonarray")
    function "IdentifyButtonArrayButton","IdentifyButtonArrayButton",n%,"","stdcall"
    function "CreateButtonArray","CreateButtonArray",n%,"IIIII","stdcall"
    function "DeleteButtonArray","DeleteButtonArray",n%,"I","stdcall"
    function "SetButtonArrayGeometry","SetButtonArrayGeometry",n%,"IIIII","stdcall"
  end_if
 
  ' ***** fonctions paramètres étendus
  if (typ$="*") or (typ$="extendedparameters")
    function "AddExtendedParameters","AddExtendedParameters",n%,"IIIIII","stdcall"
    function "ClearExtendedParameters","ClearExtendedParameters",n%,"","stdcall"
    function "CheckExtendedParameters","CheckExtendedParameters",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion des ressources
  if (typ$="*") or (typ$="resource")
    function "GetIndexOfResourceType","GetIndexOfResourceType",n%,"III","stdcall"
    function "GetListOfResources","GetListOfResources",n%,"II","stdcall"
    function "GetResourceIndexItemData","GetResourceIndexItemData",n%,"IIII","stdcall"
    function "AddNewResource","AddNewResource",n%,"IIII","stdcall"
    function "AddNewResourceEX","AddNewResourceEX",n%,"IIII","stdcall"
    function "ReplaceExistingResource","ReplaceExistingResource",n%,"IIII","stdcall"
    function "DeleteExistingResource","DeleteExistingResource",n%,"III","stdcall"
    function "FindExistingResource","FindExistingResource",n%,"III","stdcall"
    function "ExtractExistingResource","ExtractExistingResource",n%,"IIII","stdcall"
  end_if
 
  ' ***** fonctions binaires
  if (typ$="*") or (typ$="bin")
    function "bin_ROL","bin_ROL",n%,"II","stdcall"
    function "bin_ROR","bin_ROR",n%,"II","stdcall"
    function "bin_SHL","bin_SHL","II","stdcall"
    function "bin_SHR","bin_SHR",n%,"II","stdcall"
    function "bin_WROL","bin_WROL",n%,"II","stdcall"
    function "bin_WROR","bin_WROR",n%,"II","stdcall"
    function "bin_WSHL","bin_WSHL",n%,"II","stdcall"
    function "bin_WSHR","bin_WSHR",n%,"II","stdcall"
    function "bin_BROL","bin_BROL",n%,"II","stdcall"
    function "bin_BROR","bin_BROR",n%,"II","stdcall"
    function "bin_BSHL","bin_BSHL",n%,"II","stdcall"
    function "bin_BSHR","bin_BSHR",n%,"II","stdcall"
  end_if
 
  ' ***** fonctions IPC
  if (typ$="*") or (typ$="ipc")
    function "IPCGetHandle","IPCGetHandle",n%,"III","stdcall"
    function "IPCSendMessage","IPCSendMessage",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions de gestion de fichiers
  if (typ$="*") or (typ$="file")
    function "FolderSelectNoCreate","FolderSelectNoCreate",n%,"III","stdcall"
    function "FolderSelectWithCreate","FolderSelectWithCreate",n%,"III","stdcall"
    function "FolderSelect","FolderSelect",n%,"IIII","stdcall"
    function "FileOpen","FileOpen",n%,"IIII","stdcall"
    function "SelectFileToOpen","SelectFileToOpen",n%,"III","stdcall"
    function "FileCreate","FileCreate",n%,"IIII","stdcall"
    function "GetFileAttributes","GetFileAttributes",n%,"I","stdcall"
    function "GetFileDate","GetFileDate",n%,"II","stdcall"
    function "GetVolumeList","GetVolumeList",n%,"","stdcall"
    function "IsFileLocked","IsFileLocked",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion d'objets particuliers
  if (typ$="*") or (typ$="specialobjects")
    function "ValueListEditor","ValueListEditor",n%,"IIIIII","stdcall"
    function "MaskEdit","MaskEdit",n%,"IIIIII","stdcall"
  end_if
 
  '***** fonctions de gestion de fenêtres
  if (typ$="*") or (typ$="window")
    function "WindowTopMost","WindowTopMost","IsFileLocked",n%,"II","stdcall"
    function "WindowTranparency","WindowTranparency",n%,"II","stdcall"
    function "SetMinimizeMaximize","SetMinimizeMaximize",n%,"II","stdcall"
    function "SetCloseBox","SetCloseBox",n%,"II","stdcall"
    function "FixedFormSize","FixedFormSize",n%,"II","stdcall"
    function "AttachWindowToWindow","AttachWindowToWindow",n%,"II","stdcall"
    function "ShowMessageModal","ShowMessageModal",n%,"IIIIII","stdcall"
    function "ShowMessageModalEX","ShowMessageModalEX",n%,"IIIIII","stdcall"
    function "ShowMessageModalChoixSortie","ShowMessageModalChoixSortie",n%,"II","stdcall"
  end_if


  ' ***** fonctions d'interception de clics
  if (typ$="*") or (typ$="clickhook")
    function "ClickIt","ClickIt",n%,"II","stdcall"
    function "ClickSetHook","ClickSetHook",n%,"II","stdcall"
    function "ClickClearHook","ClickClearHook",n%,"I","stdcall"
    function "ClickSetLink","ClickSetLink",n%,"II","stdcall"
    function "ClickDefineRect","ClickDefineRect",n%,"IIIII","stdcall"
    function "ClickSetLinkRect","ClickSetLinkRect",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions gérant des processus
  if (typ$="*") or (typ$="process")
    function "IsProgramRunning","IsProgramRunning",n%,"I","stdcall"
    function "SetFormParent","SetFormParent",n%,"III","stdcall" forward;
    function "LoadProgramMinimized","LoadProgramMinimized",n%,"II","stdcall"
    function "KillProcessByHandle","KillProcessByHandle",n%,"I","stdcall"
  end_if
 
  ' ***** fonctions de gestion de souris
  if (typ$="*") or (typ$="mouse")
    function "MousePosition","MousePosition",n%,"II","stdcall"
    function "MouseLeftClick","MouseLeftClick",n%,"II","stdcall"
    function "MouseRightClick","MouseRightClick",n%,"II","stdcall"
    function "AbsoluteMousePosition","AbsoluteMousePosition",n%,"II","stdcall";
    function "AbsoluteMouseLeftClick","AbsoluteMouseLeftClick",n%,"II","stdcall";
    function "AbsoluteMouseRightClick","AbsoluteMouseRightClick",n%,"II","stdcall"
    function "MouseWheel","MouseWheel",n%,"III","stdcall"
    function "AbsoluteMouseWheel","AbsoluteMouseWheel",n%,"III","stdcall"
    function "GetMousePosition","GetMousePosition",n%,"III","stdcall"
    function "GetAbsoluteMousePosition","GetAbsoluteMousePosition",n%,"II","stdcall"
    function "MouseFunction""MouseFunction",n%,"III","stdcall"
    function "MouseHighlight","MouseHighlight",n%,"III","stdcall"
  end_if
 
  ' ***** fonctions de gestion des media players
  if (typ$="*") or (typ$="player")
    function "SelectMultiPlayerType","SelectMultiPlayerType",n%,"I","stdcall"
    function "CreatePlayer","CreatePlayer",n%,"IIIII","stdcall"
    function "CreateMultiPlayer","CreateMultiPlayer",n%,"IIIII","stdcall"
    function "MovePlayer","MovePlayer",n%,"II","stdcall"
    function "MoveMultiPlayer","MoveMultiPlayer",n%,"III","stdcall"
    function "ResizePlayer","ResizePlayer",n%,"IIII","stdcall"
    function "ResizeMultiPlayer","ResizeMultiPlayer",n%,"IIIII","stdcall"
    function "DeletePlayer","DeletePlayer",n%,"","stdcall"
    function "DeleteMultiPlayer","DeleteMultiPlayer",n%,"I","stdcall"
    function "LoadFileIntoPlayer","LoadFileIntoPlayer",n%,"I","stdcall"
    function "LoadFileIntoMultiPlayer","LoadFileIntoMultiPlayer",n%,"II","stdcall"
    function "PlayPlayer","PlayPlayer",n%,"","stdcall"
    function "PlayMultiPlayer","PlayMultiPlayer",n%,"I","stdcall"
    function "PausePlayer","PausePlayer",n%,"","stdcall"
    function "PauseMultiPlayer","PauseMultiPlayer",n%,"I","stdcall"
    function "StopPlayer","StopPlayer",n%,"","stdcall"
    function "StopMultiPlayer","StopMultiPlayer",n%,"I","stdcall"
    function "MutePlayer","MutePlayer",n%,"I","stdcall"
    function "MuteMultiPlayer","MuteMultiPlayer",n%,"II","stdcall"
    function "VolumePlayer","VolumePlayer",n%,"I","stdcall"
    function "VolumeMultiPlayer","VolumeMultiPlayer",n%,"II","stdcall"
    function "LoopPlayer","LoopPlayer",n%,"I","stdcall"
    function "LoopMultiPlayer","LoopMultiPlayer",n%,"II","stdcall"
    function "GetPlayerInfo","GetPlayerInfo",n%,"I","stdcall"
    function "GetMultiPlayerInfo","GetMultiPlayerInfo",n%,"II","stdcall"
    function "GetCaptureDriverNames","GetCaptureDriverNames",n%,"I","stdcall"
    function "ConnectToCaptureDevice","ConnectToCaptureDevice",n%,"IIIIII","stdcall"
    function "DisconnectFromCaptureDevice","DisconnectFromCaptureDevice",n%,"","stdcall"
    function "ConnectCaptureDeviceToMultiPlayer","ConnectCaptureDeviceToMultiPlayer",n%,"II","stdcall"
  end_if

  ' ***** fonctions TreeView
  if (typ$="*") or (typ$="treeview")
    function "CreateTreeViewContext","CreateTreeViewContext",n%,"IIIII","stdcall"
    function "CreateTreeView","CreateTreeView",n%,"I","stdcall"
    function "ResizeTreeView","ResizeTreeView",n%,"IIIIII","stdcall"
    function "DeleteTreeView","DeleteTreeView",n%,"II","stdcall"
    function "AddTreeViewRootNode","AddTreeViewRootNode",n%,"II","stdcall"
    function "AddTreeViewChildNode","AddTreeViewChildNode",n%,"II","stdcall"
  end_if

  ' ***** fonctions d'impression
  if (typ$="*") or (typ$="printer")
    function "PrinterManager","PrinterManager",n%,"IIII","stdcall"
    function "PrinterPrintText","PrinterPrintText",n%,"IIIIII","stdcall"
    function "PrinterDrawArc","PrinterDrawArc",n%,"IIIIII","stdcall"
    function "PrinterFunction","PrinterFunction",n%,"IIIIII","stdcall"
    function "GetPrinterCount","GetPrinterCount",n%,"","stdcall"
    function "GetPrinterNames","GetPrinterNames",n%,"I","stdcall"
    function "SelectWindowsPrinter","SelectWindowsPrinter",n%,"II","stdcall"
    function "ResetPrinterQueue","ResetPrinterQueue",n%,"","stdcall"
    function "GetPrinterQueueInformation","GetPrinterQueueInformation",n%,"II","stdcall"
  end_if

  ' ***** fonctions d'images
  if (typ$="*") or (typ$="picture")
    function "Rotate90","Rotate90",n%,"","stdcall"
    function "RotateM90","RotateM90",n%,"","stdcall"
    function "Rotate180","Rotate180",n%,"","stdcall"
    function "ScreenCopy","ScreenCopy",n%,"I","stdcall"
    function "LoadPicture","LoadPicture",n%,"","stdcall"
    function "SavePicture","SavePicture",n%,"","stdcall"
    function "GetPictureHeight","GetPictureHeight",n%,"","stdcall"
    function "GetPictureWidth","GetPictureWidth",n%,"","stdcall"
    function "GetClipboardPictureWidth","GetClipboardPictureWidth",n%,"","stdcall"
    function "GetClipboardPictureHeight","GetClipboardPictureHeight",n%,"","stdcall"
    function "ResizePicture","ResizePicture",n%,"II","stdcall"
    function "ModifyPicture","ModifyPicture",n%,"IIIIII","stdcall"
    function "SetPictureFilter","SetPictureFilter",n%,"III","stdcall"
    function "ReplacePictureColor","ReplacePictureColor",n%,"IIIIII","stdcall"
    function "TorturePicture","TorturePicture",n%,"IIII","stdcall"
    function "SetPictureGrayScale","SetPictureGrayScale",n%,"","stdcall"
    function "MirrorPicture","MirrorPicture",n%,"I","stdcall"
    function "SetPictureBrightness","SetPictureBrightness",n%,"I","stdcall"
    function "SetPictureGamma","SetPictureGamma",n%,"I","stdcall"
    function "CreatePictureGradientColor","CreatePictureGradientColor",n%,"IIII","stdcall"
    function "ReframePicture","ReframePicture",n%,"III","stdcall"
    function "FloodfillPictureToBorderColor","FloodfillPictureToBorderColor",n%,"IIII","stdcall"
    function "SetImmediateMode","SetImmediateMode",n%,"I","stdcall"
    function "SetIconPictureMode","SetIconPictureMode",n%,"II","stdcall"
    function "ExtractRectangleFromPicture","ExtractRectangleFromPicture",n%,"IIII","stdcall"
  end_if

  ' ***** fonction de gestion des régions
  if (typ$="*") or (typ$="region")
    function "WindowEllipticHole","WindowEllipticHole",n%,"IIIIII","stdcall"
    function "WindowRegionHole","WindowRegionHole",n%,"III","stdcall"
    function "WindowAddEllipticRegion","WindowAddEllipticRegion",n%,"IIIII","stdcall"
    function "WindowRectangleHole","WindowRectangleHole",n%,"IIIIII","stdcall"
    function "WindowAddRectangleRegion","WindowAddRectangleRegion",n%,"IIIII","stdcall"
    function "WindowRegionAsWindow","WindowRegionAsWindow",n%,"II","stdcall"
    function "WindowGetWindowRegion","WindowGetWindowRegion",n%,"II","stdcall"
    function "WindowCreateNewWindowRegion","WindowCreateNewWindowRegion",n%,"I","stdcall"
    function "WindowAddPolygonRegion","WindowAddPolygonRegion",n%,"II","stdcall"
    function "WindowCreateRegionFromBMP","WindowCreateRegionFromBMP",n%,"IIIII","stdcall"
  end_if
 
 
 
  ' ... suite à venir...

end_sub
' end_if
Je précise que la fonction AddTabObjectTab1 est bien définie en KGF.dll, comme toutes les autres. En mettant en commentaire toutes les autres fonctions de cette section, on a la violation de mémoire sur la première fonction de la section suivante, etc.

Il y a encore quelque part un dépassement de table...
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jack
Admin
Jack


Nombre de messages : 2394
Date d'inscription : 28/05/2007

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 20:15

Version instantanée du 15 décembre 2015 : PANORAMIC V 0.9.27i5

Je viens de mettre à disposition une nouvelle version instantanée.

Elle corrige le bug de la V 0.9.27i4 qui limitait le nombre de commandes et de fonctions à 51.

@Klaus:
le non-fonctionnement des fonctions sans paramètres n'est bien-sûr que temporaire, mais j'ai préféré sortir une version sans cette possibilité plutôt que d'attendre encore.

_________________
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
mindstorm

mindstorm


Nombre de messages : 685
Age : 55
Localisation : charente
Date d'inscription : 13/02/2013

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 20:43

merci Jack
pour se beau cadeau de noel
may the FORCE be with YOU

Revenir en haut Aller en bas
Klaus

Klaus


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

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 22:05

Merci, Jack !

Citation :
Elle corrige le bug de la V 0.9.27i4 qui limitait le nombre de commandes et de fonctions à 51.
Ca marche parfaitement, maintenant.

Citation :
le non-fonctionnement des fonctions sans paramètres n'est bien-sûr que temporaire, mais j'ai préféré sortir une version sans cette possibilité plutôt que d'attendre encore.
Je comprends, et ça me va. Je peux donc continuer la mise au point.

Je te remercie de ta grande réactivité !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Jicehel

Jicehel


Nombre de messages : 5947
Age : 52
Localisation : 77500
Date d'inscription : 18/04/2011

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 15 Déc 2015 - 23:09

Merci Jack, même si je ne programme plus pour le moment, je suis toujours et c'est une belle avancée
Revenir en haut Aller en bas
Klaus

Klaus


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

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyJeu 17 Déc 2015 - 23:36

Toujours un bug avec CREATE_HIDE et PICTURE ainsi que le positionnement des forms !

Le programme ci-après marche bien, et montre comment ça devrait marcher:
Code:
dim Sversion$ : Sversion$ = "V00.00"
dim verdat$ : verdat$ = "jj/mm/aaaa"
' create_hide
FormApropos()
create_show
show 3100
end


' ===== création de la fenêtre A-propos
sub FormApropos()
form 3100 : hide 3100 : top 3100,100 : left 3100,300 : command_target_is 3100
  width 3100,400 : height 3100,200
create_show
picture 3101 : full_space 3101  : print_target_is 3101
font_name 3101,"Courier" : font_size 3101,10 : font_bold 3101
print_locate 40,20  : print "Programme: "+"Synedit_Editor"
print_locate 40,40  : print "Version:   "+Sversion$
print_locate 40,60  : print "Date:      "+verdat$
print_locate 40,80  : print "Auteur:    "+"Klaus"
create_hide
end_sub

Après avoir vérifié le fonctionnement de cette version, dé-commenter la ligne 3. Et on constate 2 problèmes:
1. le positionnement de la form n'est pas bon, contrairement à ce qui a été dit au niveau des notes pour la version V0.0.27i5
2. le picture ne s'adapte pas du tout à la taille de la form par la commande FULL_SPACE qui est simplement ignorée

Jack, pourrais-tu regarder cela ? C'est dommage, tout marchait si bien...

EDIT

La position et les dimensions d'une fenêtre sont mémorisées dans une structure TWindowPlacement. On peut la récupérer et obtenir ainsi largeur et hauteur, afin d'utiliser ces valeurs (éventuellement adaptées) pour un objet sur lequel on applique FULL_SPACE, même si la form est cachée suite à un CREATE_HIDE. J'ai fait une petite fonction qui retourne le rectangle d'origine d'une form, quelque soit son état (normal, maximisé ou minimisé):
Code:
// cette fonction retourne le rectangle de la dimension d'origine d'une form
function GetRealMetrics(f: TForm): TRect;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(f.Handle,@wp);
  result := wp.rcNormalPosition;
  {
  autres valeurs disponibles:
    Top  (position normale)    wp.rcNormalPosition.Top;
    Left (position normale)    wp.rcNormalPosition.Left;
    Top  (position maximisée)  wp.ptMaxPosition.Y;
    Left (position maximisée)  wp.ptMaxPosition.X;
    Top  (position réduite)    wp.ptMinPosition.Y;
    Left (position réduite)    wp.ptMinPosition.X;
   }
end;
Ca peut peut-être servir pour ce cas ? Aussi bien pour dimensionner un objet FULL_SPACE que pour positionner la form en CREATE_HIDE, en chargeant des valeurs de wp.rcNormalPosition, puis utiliser SetWindowPlacement pour les imposer ?

EDIT

J'ai inséré dans KGF.dll le code suivant:
Code:
// cette fonction retourne le rectangle de la dimension d'origine d'une form
function GetRealMetrics(hnd: HWND): TRect;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(hnd,@wp);
  result := wp.rcNormalPosition;
  {
  autres valeurs disponibles:
    Top  (position normale)    wp.rcNormalPosition.Top;
    Left (position normale)    wp.rcNormalPosition.Left;
    Top  (position maximisée)  wp.ptMaxPosition.Y;
    Left (position maximisée)  wp.ptMaxPosition.X;
    Top  (position réduite)    wp.ptMinPosition.Y;
    Left (position réduite)    wp.ptMinPosition.X;
   }
end;
function TestMetrics(hnd: HWND; px,py,pw,ph: pinteger):integer; stdcall; export;
var
  r: TRect;
begin
  r := GetRealMetrics(hnd);
  px^ := r.Left;
  py^ := r.Top;
  pw^ := r.Right - r.Left + 1;
  ph^ := r.Bottom - r.Top + 1;
  result := 0;
end;
Et j'ai fait un programme Panoramic comme ceci:
Code:
dim res%, x%, y%, w%, h%
create_hide
dll_on "KGF.dll"
form 1 : top 1,200 : left 1,300
form 2 : top 2,230 : left 2,380
res% = dll_call5("TestMetrics",handle(1),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 1: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
res% = dll_call5("TestMetrics",handle(2),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 2: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
show 1
show 2
end
Je crée donc 2 fenêtres en mode CREATE_HIDE, à des emplacements imposés par des commandes TOP et LEFT. Sans la commande CREATE_HIDE, les résultats sont ceux auxquels on peut s'attendre. Mais avec CREATE_HIDE, je constate 2 anomalies:
1. les valeurs x et y sont toujours identiques
2. à la première exécution, les valeurs retournées sont:
form 1: x=130  y=130  w=321  h=241
form 2: x=156  y=156  w=321  h=241
à la deuxième exécution:
form 1: x=26  y=130  w=321  h=241
form 2: x=52  y=156  w=321  h=241
à la troisième exécution:
form 1: x=130  y=130  w=321  h=241
form 2: x=156  y=156  w=321  h=241
etc.

Si l'on ajoute une troisième et une quatrième form, la série se poursuit, toujours de la même manière, avec toujours x=y et un écart de 26 pixels d'une form à l'autre.

Je pense qu'il y a quelque chose à creuser, là.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyVen 18 Déc 2015 - 13:21

J'ai trouvé la solution pour le positionnement !

J'ai créé la fonction suivante dans ma DLL:
Code:
function SetNormalWindowPosition(hnd: HWND; x,y,w,h: integer):integer; stdcall; export;
var
   wp: TWindowPlacement;
begin
  wp.length := SizeOf(TWindowPlacement);
  GetWindowPlacement(hnd,@wp);
  wp.rcNormalPosition.Left := x;
  wp.rcNormalPosition.Top := y;
  wp.rcNormalPosition.Right := x+w-1;
  wp.rcNormalPosition.Bottom := y+h-1;
  wp.showCmd := 0;
  SetWindowPlacement(hnd,@wp);
  result := 0;
end;
et je l'utilise comme suit:
Code:
dim res%, x%, y%, w%, h%
create_hide
dll_on "KGF.dll"
form 1 : top 1,200 : left 1,300
res% = dll_call5("SetNormalWindowPosition",handle(1),300,200,320,240)
form 2 : top 2,230 : left 2,380
res% = dll_call5("SetNormalWindowPosition",handle(2),380,230,320,240)
res% = dll_call5("TestMetrics",handle(1),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 1: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
res% = dll_call5("TestMetrics",handle(2),adr(x%),adr(y%),adr(w%),adr(h%))
message "form 2: x="+str$(x%)+"  y="+str$(y%)+"  w="+str$(w%)+"  h="+str$(h%)
show 1
show 2
Ainsi, j'impose de force mes valeurs de LEFT/TOP et les valeurs par défaut d'une form pour WIDTH/HEIGHT. C'est mémorisé dans la form, mais elle reste cachée. Puis au moment du SHOW, elle apparaît à la bonne place.

EDIT

HEUREKA ! Ceci résout en même temps le problème du FULL_SPACE pour un PICTURE placé dans une FORM créée avec CREATE_HIDE ! Cette fonction SetNormalWindowPosition est LA solution en Panoramic avec KGF.dll, pour contourner ce bug dans Panoramic. Et je pense que le code de cette fonction pourrait servir de correction dans Panoramic !
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8635
Age : 53
Localisation : Bretagne
Date d'inscription : 15/02/2010

Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: RE   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 EmptyMar 29 Déc 2015 - 19:48

SNIFF !!!...

On a perdu le visuel windows des objets, on est retourné au coins carrés...
Crying or Very sad
Revenir en haut Aller en bas
Contenu sponsorisé





Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty
MessageSujet: Re: Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5   Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5 Empty

Revenir en haut Aller en bas
 
Version instantanée du 15 déc 2015 : PANORAMIC V 0.9.27i5
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Version instantanée du 4 nov 2015 : PANORAMIC V 0.9.27i2
» Version instantanée du 30 mai 2015 : PANORAMIC V 0.9.26i6
» Version instantanée du 9 dec 2015 : PANORAMIC V 0.9.27i3
» Version instantanée du 2 janvier 2015 : PANORAMIC V 0.9.26i4
» Version instantanée du 7 janvier 2015 : PANORAMIC V 0.9.26i5

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Ce qui est en cours ...-
Sauter vers: