| Version instantanée V 0.9.29i8 du 08/04/2019 | |
|
|
Auteur | Message |
---|
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Version instantanée V 0.9.29i8 du 08/04/2019 Lun 8 Avr 2019 - 20:05 | |
| La version instantanée V 0.9.29i8 du 08/04/2019 est disponible au téléchargement.
Les améliorations par rapport à la version instantanée V 0.9.29i7 du 15/03/2019 sont:
- Nouvelle variable système ADR_VARTAB qui fournit l'adresse d'un tableau contenant les adresses d'autres tableaux menant aux variables Panoramic L'utilisation de cette variable est assez complexe et sera utilisée par la DLL de Klaus
Correction de 2 bugs: - OFF_ACTIVATE était inactif sur FORM0 - les CARET des objets de FORM0 disparaissaient (par exemple MEMO ou SYNEDIT) après un ON_ACTIVATE, désactivation puis réactivation de FORM0 _________________ username : panoramic@jack-panoramic password : panoramic123
Dernière édition par Jack le Mar 9 Avr 2019 - 11:49, édité 1 fois | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Lun 8 Avr 2019 - 21:51 | |
| Merci beaucoup, Jack ! Je prends immédiatement ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Lun 8 Avr 2019 - 23:37 | |
| Avec le code suivant: - Code:
-
message str$(ADR_VARPTR) end J'ai le message d'erreur suivant: - Citation :
- (52) Not correct string expression: .Line: 1
Et je suis bien en version V0.9.29i8 du 08 04 2019. ADR_VARPTR est bien le nom de la variable ? J'ai cherché dans la mémoire - elle n'y est pas... | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 0:58 | |
| Peut-être s’agit-il d’une question de syntaxe ? ADR_VARPTR nécessite-t-elle un certain paramètre ? Un nom de tableau ou d’une variable ?
Jack, un petit code exemple pour montrer comment utiliser cette variable système, SVP ! | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 1:11 | |
| @Papydall: Non, normalemement, il n'y a pas de paramètres pour une variable système. Regarde NUMBER_CLICK, DATE$ etc. | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 2:44 | |
| - Jack a écrit:
- L'utilisation de cette variable est assez complexe et sera utilisée par la DLL de Klaus
Wait and see ! | |
|
| |
Marc
Nombre de messages : 2466 Age : 63 Localisation : TOURS (37) Date d'inscription : 17/03/2014
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 10:02 | |
| Peut-être ADR_VARTAB ? - Spoiler:
| |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 10:06 | |
| Oups... Merci, Marc ! Comment ai-je pu me planter à ce point ? Désolé pour cette fausse alerte ! | |
|
| |
papydall
Nombre de messages : 7017 Age : 74 Localisation : Moknine (Tunisie) Entre la chaise et le clavier Date d'inscription : 03/03/2012
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 14:02 | |
| J’essaye de comprendre ADR_VARTAB - Code:
-
rem ============================================================================ rem J’essaye de comprendre ADR_VARTAB rem ============================================================================ dim i alpha 1 : top 1,10 : left 1,100 : font_bold 1 caption 1,"ADR_VARTAB : " + str$(adr_vartab) + " et valeurs des cases mémoires suivantes"
memo 10 : left 10,50 : height 10,300 : width 10,50 : top 10,50 for i = 0 to 20 item_add 10, peek(adr_vartab + i) next i memo 20 : left 20,150 : height 20,300 : width 20,50 : top 20,50 dim t(5) for i = 0 to 20 item_add 20, peek(adr_vartab + i) next i memo 30 : left 30,250 : height 30,300 : width 30,50 : top 30,50 dim w(17) for i = 0 to 20 item_add 30, peek(adr_vartab + i) next i dim x,y,z font_bold 0 memo 40 : left 40,350 : height 40,300 : width 40,50 : top 40,50 for i = 0 to 20 item_add 40, peek(adr_vartab + i) next i dim a$,b$,c$,d$,e$,f$,g$ memo 50 : left 50,450 : height 50,300 : width 50,50 : top 50,50 for i = 0 to 20 item_add 50, peek(adr_vartab + i) next i
print_locate 500 ,105 : print "<=========" rem ============================================================================
Observez la 5ème ligne des MEMOs. Elle contient les valeurs de la 4ème case mémoire après ADR_VARTAB. Les différences sont 1, 1, 3, 7 qui correspondent aux différents DIMs : DIM 1 variable DIM 1 variable DIM 3 variables DIM 7 Variables - Spoiler:
| |
|
| |
silverman
Nombre de messages : 970 Age : 52 Localisation : Picardie Date d'inscription : 18/03/2015
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Mar 9 Avr 2019 - 20:29 | |
| Les corrections apportées fonctionnent parfaitement. | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Sam 13 Avr 2019 - 2:16 | |
| @Jack: Je localise la table des symboles au chargement de KGF.dll, avant tout autre opération. J'arrive à la trouver, par le mcanisme suivant: 1. recherche de "DATE$" dans la mémoire virtuelle 2. recherche d'un mot contenant l'adresse du début de cette chaîne, dans la mémoire virtuelle ==> j'obtiens le début de l'élément pour la variable DATE$ 3. recherche en arrière case par case (longueur de 26 mots) jusqu'à ce que je tombe sur une case de valeur zéro 4. retour en avant de 26 mots ==> j'ai l'adresse du début de la table de symboles (TV). Note: je sais que cette valeur est dynamique, du fait de son adresse sur le heap. 5. recherche en avant case par case (longueur de 26 mots) jusqu'à ce que je tombe sur une valeur zéro, en comptant les cases ==> je suis à la afin de TV et j'obtiens 55 variables, avec la présente version. 6. au cours de cette recherche en avant, je compare le nom de chaque variable avec 'ADR_VARTAB'. ==> je trouve cette variable en 24ème place. Jusque là, tout va bien. Maintenant, je veux prendre le contenu de cette variable afin de récupérer l'adresse du tableau VarTab que tu as créé pour moi (MERCI !). Or, la valeur dans la case Var_Rel est zéro. Voici le dump de cet élément: Il y a bien l'adresse du nom qui pointe sur le nom de la variable, et le type 3 (flottant). Le reste est zéro. Pourquoi ? Je m'attendais à y trouver la valeur que je trouve si je fais - Code:
-
message hex$(ADR_VARTAB) en Panoramic. Or, il n'en est rien. Pourquoi cette valeur ne figure-t-elle pas dans la position Var_Rel ? Pour moi, elle devrait se trouver à l'offset 20 (décimal)... EDIT 14/04/2019 à 0:29:La raison pour laquelle je fais cela, c'est pour pouvoir détecter automatiquement l'adresse de VarTab, lors du chargement de la DLL, sans avoir besoin d'obliger le programmeur d'appeler une fonction spéciale pour passer la valeur de ADR_VARTAB en paramètre. | |
|
| |
Jack Admin
Nombre de messages : 2395 Date d'inscription : 28/05/2007
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Lun 15 Avr 2019 - 6:22 | |
| - Klaus a écrit:
- Il y a bien l'adresse du nom qui pointe sur le nom de la variable, et le type 3 (flottant). Le reste est zéro. Pourquoi ? Je m'attendais à y trouver la valeur que je trouve si je fais
Code: message hex$(ADR_VARTAB) en Panoramic. Or, il n'en est rien. Pourquoi cette valeur ne figure-t-elle pas dans la position Var_Rel ? ADR_VARTAB est une variable système et à ce titre, elle est déclarée comme variable dans la table des variables TV de Panoramic. Mais comme toutes les variables systèmes, sa valeur n'est pas mémorisée dans cette table. Cette table ne sert que pour mémoriser son nom et son type et éviter ainsi une erreur de syntaxe lors de l'analyse du source. En Delphi, comme je l'ai déjà dit, une variable système est une fonction qui retourne une valeur lorsque le contenu de la variable est demandée. Prenons l'exemple de TIME$. Il serait inutile de stocker en mémoire la valeur de l'heure. La valeur de l'heure est obtenue par l'appel d'une API qui renvoie l'heure lorsque TIME$ est rencontrée dans une expression, mais l'heure n'est jamais stockée dans le tableau TV. De même, quand ADR_VARTAB est rencontrée dans une expression, le contenu de cette variable est renvoyé, mais pas stocké. Par contre, pour des variables déclarées par l'utilisateur, la valeur est bien-sûr stockée. On ne fait jamais une affectation d'une variable système. TIME$= quelque chose n'a pas de signification, mais on utilise TIME$_________________ username : panoramic@jack-panoramic password : panoramic123 | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 Lun 15 Avr 2019 - 11:02 | |
| Merci, Jack, pour ces explications.
Dommage, car cela rend impossible de détecter la table de symboles de façon automatique, lors du chargement de la DLL. Cela impose une fonction spécifique par laquelle le programmeur passe la valeur de ADR_VARTAB à la DLL, ce que j'essayais d'éviter.
Bon, je vais changer mon fusil d'épaule et poursuivre cette autre voie... | |
|
| |
Contenu sponsorisé
| Sujet: Re: Version instantanée V 0.9.29i8 du 08/04/2019 | |
| |
|
| |
| Version instantanée V 0.9.29i8 du 08/04/2019 | |
|