| Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 | |
|
|
Auteur | Message |
---|
Jack Admin
Nombre de messages : 2394 Date d'inscription : 28/05/2007
| Sujet: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Dim 27 Nov 2011 - 12:08 | |
| Version instantanée du 27 novembre 2011: PANORAMIC V 0.9.23i1Une version instantanée est la version actuelle du développement de PANORAMIC, elle vous permet d'utiliser les toutes dernières améliorations, sans attendre la sortie de la prochaine version. Une version instantanée n'a pas de procédure d'installation (c'est un fichier zip contenant l'EDITEUR). Les nouveaux mots-clés n'ont pas de coloration syntaxique dans l'EDITEUR. Pour obtenir la version instantanée, cliquez sur *** annulé *** Voici les apports de cette version, par rapport à la dernière version régulière PANORAMIC V0.9.22 du 5 novembre 2011: 1 - correction de bugs sur des objets 3D: Les commandes 3D_HIDE et 3D_SHOW n'agissaient pas sur les objets 3D 3D_PLANE et 3D_SKYBOX. Les commandes 3D_TRANSPARENT et 3D_MOVE n'agissaient pas sur les objets 3D 3D_PLANE. Les fonctions O3D_X_POSITION(), O3D_Y_POSITION(), O3D_Z_POSITION(), O3D_X_ROTATE(), O3D_Y_ROTATE(), O3D_Z_ROTATE(), O3D_X_SCALE(), O3D_Y_SCALE(), O3D_Z_SCALE() n'agissaient pas sur les objets 3D 3D_PLANE. les numéros des objets 3D 3D_PLANE étaient limités. 2 - correction de bugs sur des fonctions: problème quand N est grand sur OBJECT_EXISTS(N), OBJECT_TYPE(N), O3D_OBJECT_EXISTS(N), O3D_OBJECT_TYPE(N), SPRITE_EXISTS(N). 3 - améliorations: CLIPBOARD_COPY et CLIPBOARD_PASTE s'appliquent aussi aux objets système PICTURE(9) et [b]IMAGE. FONT_SIZE : il n'y a plus la limite de 30 à la taille de la police 4 - nouvelle fonction: HANDLE_FORM("titre") : retourne le handle d'une fenêtre (PANORAMIC ou pas) dont on connait le caption Exemple: - Code:
-
execute "notepad.exe" wait 1000 caption 0,handle_form("Sans titre - Bloc-notes") 5 _ nouvelle commande: FREE Variable : libère la variable Exemple: - Code:
-
dim v(10),t$ free v free t$ dim v(100),t$
Dernière édition par Jack le Sam 28 Jan 2012 - 7:53, édité 2 fois | |
|
| |
jjn4
Nombre de messages : 2747 Date d'inscription : 13/09/2009
| Sujet: +++ Dim 27 Nov 2011 - 12:16 | |
| | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Dim 27 Nov 2011 - 13:10 | |
| Je n'aurais pas dis mieux jjn4, gros boulot et des modifs majeures en plus en prime comme le FREE ... bienvenue aux variables locales ^^. Merci Jack | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Dim 27 Nov 2011 - 14:25 | |
| Dûment testé en ce qui concerne le point 3: copie d'image dans le clipboard, levée de la limitation de taille de fonte. Parfait, merci Jack. Je vais pouvoir reprendre quelques programmes qui étaient en jachère.
FREE variable, très bien pour les variables locales, ça ouvre la voie aux bibliothèques de s/p: dim des variables en tête, free avant le return. (remarque: il faut un FREE par variable, pas comme DIM v1, v2 etc...) | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Dim 27 Nov 2011 - 21:25 | |
| | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 10:15 | |
| @Jicehel: La commande FREE n'apporte rien au principe des variables locales.... Elle doit être vue comme étant un moyen de libérer la place occupée en RAM par des variables GLOBALES. Autrement dis: elle permet de manipuler des variables globales temporaires... Ce qui apporte vraiment quelque chose sur le traitement des variables locales, c'est la commande VARIABLE( ) Exemple de simulation simplifiée de variables locales: - Code:
-
LABEL NRETURN LABEL DIM_MaVariable
GOSUB DIM_MaVariable : ' on simule la cde "DIM MaVariable" LABEL Test
FOR MaVariable=1 TO 3 PRINT "Appel n°";MaVariable GOSUB Test NEXT MaVariable
END
Test: GOSUB DIM_MaVariable : ' on simule un DIM "local" de la variable "MaVariable" ' A partir de maintenant, on peut utiliser "MaVariable" comme une variable locale FOR MaVariable = 5 TO 7 PRINT " Test:";MaVariable NEXT MaVariable GOSUB NRETURN : ' on simule la commande "RETURN" RETURN
' ----------------------------------------- ' Simulation d'une commande DIM "MaVariable" ' ----------------------------------------- ' Pour pouvoir utiliser "MaVariable" comme variable locale, il faut vérifier son existence. ' Si elle est déjà déclarée : ' il faut sauvegarder son contenu dans une DLIST spécifique ' Sinon ' déclaration de "MaVariable" ' création d'une DLIST pour les eventuels DIM locaux de MaVariable ' Finsi DIM_MaVariable: IF VARIABLE("MaVariable")=0 DIM MaVariable DIM VAR_MaVariable: VAR_MaVariable = NUMBER_OBJECTS+1 ELSE IF OBJECT_EXISTS(VAR_MaVariable)=0 THEN VAR_MaVariable = NUMBER_OBJECTS+1 : DLIST VAR_MaVariable ITEM_ADD VAR_MaVariable, MaVariable END_IF RETURN
' ----------------------------------------- ' Simulation "simplifiée" d'une commande RETURN ' ----------------------------------------- ' A la fin de la procédure, on teste si la variable "MaVariable" a été sauvegardée ' normalement il faudrait également tester si un DIM local de "MaVariable" a été réalisé... NRETURN: ' si c'est le cas, on lui restitue son contenu IF COUNT(VAR_MaVariable)<>0 MaVariable=VAL(ITEM_READ$(VAR_MaVariable,COUNT(VAR_MaVariable))) ' puis on supprime la sauvegarde temporaire ITEM_DELETE VAR_MaVariable,COUNT(VAR_MaVariable) IF COUNT(VAR_MaVariable)=0 THEN DELETE VAR_MaVariable END_IF RETURN
| |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 11:07 | |
| Heu, là, je ne suis pas d'accord Nardo, On peut déjà écrire des sous programme qui déclare les variables avec des noms complexes et qui les libère en de traitement du sous programme. C'est en effet des variables 'globales' puisqu'elles ne doivent pas être utilisé dans le programme principal a d'autres fin, mais pendant le traitement, elles sont utilisées comme globales ou locales. C'est la façon de les utiliser qui permet de 'simuler' des variables locales en respectant quelques règles comme la non utilisation d'événements pendant le traitement du sous programme, etc ... et la libération en fin de traitement.
C'est donc un pas vers les variables locales selon moi, mais c'est vrai que l'utilisation de variable a bon escient permet de faire des contrôlmes et de sécuriser le programme et d'utiliser la pile comme tu le fait dans ton programme (qui est très interessant et permet en effet d'avoir une structure pour 'localiser' les variables avec plus de sécurité)
(J'espère que ma réponse n'est pas trop confuse ... )
| |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 11:55 | |
| - Citation :
- Heu, là, je ne suis pas d'accord Nardo,...
Au contraire, je crois que l'on est d'accord ! La description que tu donnes correspond à ce que j'appelle "des variables globales temporaires"... il n'y a qu'à voir les noms à rallonge que j'utilise dans certains programmes : j'essaye de "normaliser" ma façon de les nommer :" Nomprocedure_NomVariable" de manière à avoir un nom unique... Je pourrais très bien faire un free à la fin de chaque procédure mais vu la capacité des RAM sur nos bécane, cela n'est pas vraiment nécessaire... mes DIMs sont mis dans les procédures et je fais un test avec variable(), de manière à pouvoir plus facilement faire un copier/coller de ces procédures d'un programme à un autre... Là dans le cas présent, pourquoi je met l'accent sur cette notion de pile? Tu dois bien t'en douter... non ? -> C'est pour pouvoir gérer les appels récursifs. (c'est un des points important dans la gestion des variables locales...) Pour la réentrance, il faudrait (peut être) également mémoriser l'indice de la variable dans la pile.. mais là, c'est un autre problème... Mon exemple est une simulation, car j'utilise aussi une variable globale. Mais sa gestion en beaucoup plus proche de ce que devrait être une véritable variable locale... Mon erreur c'est d'avoir écrit l'exemple en Panoramic: pour éviter toute confusion, j'aurais dû écrire l'exemple en pseudo-code... | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 12:09 | |
| Non, c'est bien, ça permet de commencer à structurer nos programmes, c'est cool (Enfin, il va falloir prendre l'habitude qu'en même ...). La libération des varaibles est sympa, ne serait-ce que pour ne pas remplir inutillement la pile, d'autant que l'on sait que l'on finit toujours par atteindre des limites dans les piles. (En plus toi qui aime bien les trucs propres et structurés ...) | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 14:24 | |
| Il n'y a aucune habitude à apprendre, c'est ma façon de faire, chacun est libre procéder comme il l'entend... La commande FREE NomVariable offre un intêret dans le cas d'utilisation de variables globales à nom unique sans appels récursifs (pour faire propre ). Par exemple : - Code:
-
LABEL Math_Init:GOSUB Math_Init Racine_param = 5 : GOSUB Racine PRINT "Racine(";Racine_param;") = ";Racine_return Factorielle_param = 5: GOSUB Factorielle PRINT Factorielle_param;"! = ";Factorielle_return END
' ------------------------------------ ' Librairie ' ------------------------------------ Math_Init: LABEL Racine : DIM Racine_param, Racine_return LABEL Factorielle : DIM Factorielle_param, Factorielle_return RETURN
' Methode Newton Racine: DIM Racine_i : ' variable pour calcul interne à la procédure Racine_return = 7 FOR Racine_i = 0 TO 6 Racine_return = ((Racine_param / Racine_return) + Racine_return) / 2 NEXT Racine_i FREE Racine_i RETURN
Factorielle: DIM Factorielle_i Factorielle_return = 1 FOR Factorielle_i = 1 TO Factorielle_param Factorielle_return = Factorielle_return * Factorielle_i NEXT Factorielle_i FREE Factorielle_i RETURN Dans cet exemple, les variables ######_i sont ce que j'appelle, des variables "jetables" donc on peut se permettre de les supprimer... J'ai pas d'exemples flagrants concernant la commande FREE mais je suppose que d'autres personnes trouverons des exemples plus parlants... | |
|
| |
Klaus
Nombre de messages : 12331 Age : 75 Localisation : Ile de France Date d'inscription : 29/12/2009
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 17:32 | |
| Génial, Jack ! Les commandes HANDLE_FORM et FREE_VARIABLE sont d'un grand intérêt pour moi ! As-tu considéré d'ajouter une commande FREE_LABEL également ? | |
|
| |
Jicehel
Nombre de messages : 5947 Age : 52 Localisation : 77500 Date d'inscription : 18/04/2011
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Lun 28 Nov 2011 - 17:38 | |
| Je sens que Klaus a déjà des idée de DLL qui arrivent avec ces fonctions ^^ (Enfin, tu as déjà de quoi faire avec les DLL d'impression, tu commences sans doute juste a avoir des idées pour celles d'après) | |
|
| |
Nardo26
Nombre de messages : 2294 Age : 56 Localisation : Valence Date d'inscription : 02/07/2010
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Mer 30 Nov 2011 - 0:00 | |
| Bonsoir, Apparemment Handle_form ne fonctionne pas correctement sous Win7 : Dans l'exemple ci-dessus, le bloc-notes n'est pas détecté... Je testerai demain sous XP... | |
|
| |
Yannick
Nombre de messages : 8635 Age : 53 Localisation : Bretagne Date d'inscription : 15/02/2010
| Sujet: re Mer 30 Nov 2011 - 6:34 | |
| le pb est apparemment avec le bloc notes cela fonctionne pour une fenêtre OpenOffice.org Writer | |
|
| |
JL35
Nombre de messages : 7112 Localisation : 77 Date d'inscription : 29/11/2007
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 Mer 30 Nov 2011 - 9:57 | |
| Exact, ça semble être un problème avec le bloc-notes, j'ai essayé avec d'autres (Win 7), ça marche. (j'ai même essayé le bloc-notes avec 'Untitled - Notepad', c'est pas mieux ! ) Incidemment, le Handle_Form est insensible à la casse, c'est bien. | |
|
| |
Contenu sponsorisé
| Sujet: Re: Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 | |
| |
|
| |
| Version instantanée du 27 novembre 2011:PANORAMIC V 0.9.23i1 | |
|