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
» mise a jour calculatrice
par JL35 Aujourd'hui à 14:14

» [solved] 3D_LINE How to ?
par papydall Aujourd'hui à 6:51

» supprimé
par joeeee2017 Dim 15 Oct 2017 - 20:02

» calculatrice avec touches movibles
par joeeee2017 Dim 15 Oct 2017 - 1:11

» Convertisseur de base 10 de 2 à 36
par gigi75 Sam 14 Oct 2017 - 21:54

» CORTANA
par gigi75 Sam 14 Oct 2017 - 16:32

» supprimé
par Jean Claude Sam 14 Oct 2017 - 12:30

» Compilateur FBPano
par jean_debord Jeu 12 Oct 2017 - 9:53

» KGF_dll - nouvelles versions
par Klaus Mar 10 Oct 2017 - 18:49

» à propos de Panoramic_Editor [Résolu]
par Klaus Mar 10 Oct 2017 - 3:19

» Un petit "coucou" à tous les Panoramiciens !
par Jack Ven 6 Oct 2017 - 10:24

» Pourquoi le compilateur stagne
par mindstorm Mer 4 Oct 2017 - 20:38

» Panoramic ?
par Marc37 Mer 4 Oct 2017 - 0:39

» Premiers pas avec Arduino
par Marc37 Mer 4 Oct 2017 - 0:29

» Mise à jour PANOMAND
par jean_debord Mar 26 Sep 2017 - 11:33

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Octobre 2017
LunMarMerJeuVenSamDim
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
CalendrierCalendrier

Partagez | 
 

 Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7

Voir le sujet précédent Voir le sujet suivant Aller en bas 
Aller à la page : 1, 2  Suivant
AuteurMessage
Jack
Admin
avatar

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

MessageSujet: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 18:46

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7

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

Voici les changements par rapport à la version du 20 mars 2016 :

1 - Correction des bugs de la version du 20 mars 2016  :
Régression sur la commande  POSITION
Commandes liés à l'impression et qui provoquaient un plantage :
PRINT_TARGET_IS
2D_CLEAR
PRINT_LOCATE
PRINT_X_LOCATE
PRINT_Y_LOCATE


Ces bugs viennent du fait que je maintiens en parallèle la version Windows et la version MAC de Panoramic et que je n'avais pas bien fait la part des choses dans les PRINT (ce qui est une galère à coder sous MAC)

2 - Nouvelle commande :
SPRITE_TEXT N,T$ qui permet au SPRITE de numéro N d'afficher le texte T$.
Les paramètres du texte : police, taille, couleur et attributs (gras, italique, ...) sont ceux affectés au SCENE2D dans lequel se trouve le SPRITE.
Pour cela, les commandes de la famille FONT ont été étendues au SCENE2D (les commandes de la famille FONT étaient jusqu'à présent inactives sur un SCENE2D).

Voici un petit exemple :

Code:
dim X10,Y10
dim X11,Y11
dim X12,Y12
dim X13,Y13

dim i%

scene2D 1

width 0,600:height 0,600
full_space 1

sprite_create_hide

rem création de 4 SPRITEs à partir d'un texte
rem les paramètres du texte sont ceux des Fonts sur le SCENE2D

sprite 10
font_size 1,20
font_color 1,255,0,0
font_bold 1
sprite_text 10,"Panoramic"

sprite 11
font_size 1,15
font_color 1,0,255,0
font_bold_off 1
sprite_text 11,"est un langage"

sprite 12
font_color 1,255,0,255
font_bold_off 1
sprite_text 12,"FACILE"

sprite 13
font_size 1,20
font_color 1,0,255,255
font_underline 1
sprite_text 13,"à utiliser"

rem postions initiales
x10=700:y10=700
x11=0:y11=700
x12=700:y12=0
x13=-100:y13=0

sprite_position 10,x10,y10
sprite_position 11,x11,y11
sprite_position 12,x12,y12
sprite_position 13,x13,y13

sprite_show_all

REM LES POSITIONS FINALES SONT :
REM POUR SPRITE 10 : (200,200)
REM POUR SPRITE 11 : (205,230)
REM POUR SPRITE 12 : (235,260)
REM POUR SPRITE 13 : (215,280)

for i%=1 to 80
 x10=curve_value(200,x10,0.3)
 y10=curve_value(200,y10,0.3)
 sprite_position 10,x10,y10
 x11=curve_value(205,x11,0.3)
 y11=curve_value(230,y11,0.3)
 sprite_position 11,x11,y11
 x12=curve_value(235,x12,0.3)
 y12=curve_value(260,y12,0.3)
 sprite_position 12,x12,y12
 x13=curve_value(215,x13,0.3)
 y13=curve_value(280,y13,0.3)
 sprite_position 13,x13,y13
 pause 40
next i%

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
Marc37



Nombre de messages : 453
Age : 56
Localisation : TOURS
Date d'inscription : 18/03/2014

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 18:52

Un grand MERCI Jack !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jack
Admin
avatar

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

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 18:58

J'ai pris un réel plaisir à coder cette commande.
Je vais regarder maintenant l'application aux SPRITEs de BRIGHTNESS, CONTRAST et GAMMA.
J'envisage aussi de coder un SNAPSHOT pour enregistrer un SCENE2D (avec ses SPRITEs) dans un fichier .bmp ou .jpg

Le problème c'est le temps qui me manque ...

_________________
username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://panoramic.free-boards.net
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 19:29

Ça c'est super ! je vais commencer à m'amuser avec illico !

Et le futur (?) Snapshot me plairait bougrement aussi, ça ouvre plein de perspectives.
Pourvu que le boulot te fiche un peu la paix et te laisse un peu de temps libre.

Merci Jack.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5032
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 20:08

Super !

Je vais tester ça, assez vite car je suis sur une création d'un jeu en 2D.

A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5537
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 20:37

Merci Jack.

Et cette autre nouveauté : une nouvelle fonction curve_value(x,y,p)

Un petit mot là-dessus ?
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Laurent (Minibug)

avatar

Nombre de messages : 2353
Age : 51
Localisation : Vienne (86)
Date d'inscription : 10/02/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 21:32

Merci Jack pour cette nouvelle version et ses corrections Wink

Je télécharge et je teste de suite... drunken
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5032
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Ven 22 Avr 2016 - 22:21

Papydall a écrit:
Et cette autre nouveauté : une nouvelle fonction curve_value(x,y,p)

Bonne observation Papydall.

Du coup, j'ai fait des tests, pour voir ce qu'il y a derrière. Very Happy
Voici un exemple qui reprend le code de Jack, c'est intéressant.

Code:
dim X10,Y10
dim X11,Y11
dim X12,Y12
dim X13,Y13

dim i%

scene2D 1

width 0,600:height 0,600
full_space 1

sprite_create_hide

rem création de 4 SPRITEs à partir d'un texte
rem les paramètres du texte sont ceux des Fonts sur le SCENE2D

sprite 10
font_size 1,20
font_color 1,255,0,0
font_bold 1
sprite_text 10,"Panoramic"

sprite 11
font_size 1,15
font_color 1,0,255,0
font_bold_off 1
sprite_text 11,"est un langage"

sprite 12
font_color 1,255,0,255
font_bold_off 1
sprite_text 12,"FACILE"

sprite 13
font_size 1,20
font_color 1,0,255,255
font_underline 1
sprite_text 13,"à utiliser"

rem postions initiales
x10=700:y10=700
x11=0:y11=700
x12=700:y12=0
x13=-100:y13=0

sprite_position 10,x10,y10
sprite_position 11,x11,y11
sprite_position 12,x12,y12
sprite_position 13,x13,y13

sprite_show_all

REM LES POSITIONS FINALES SONT :
REM POUR SPRITE 10 : (200,200)
REM POUR SPRITE 11 : (205,230)
REM POUR SPRITE 12 : (235,260)
REM POUR SPRITE 13 : (215,280)

for i%=1 to 80
 x10=200 : y10=curve_value(190,y10,0.2)
 sprite_position 10,x10,y10
 x11=205 : y11=230
 sprite_position 11,x11,y11
 x12=235 : y12=260
 sprite_position 12,x12,y12
 x13=215 : y13=280
 sprite_position 13,x13,y13
 pause 40
next i%
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5537
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 7:42

Toujours le même problème avec TERMINATE
C’est même pire avec cette version V.09.27i7 !

Voici un extrait de mon programme
Code:

rem ============================================================================
label clic
dim i
main_menu 10
        sub_menu 11 : parent 11,10 : caption 11 ,"Tirage"
        sub_menu 12 : parent 12,11 : caption 12, "Aléatoire"
           sub_menu 13 : parent 13,12 : caption 13, "Votre jeu"
           sub_menu 14 : parent 14,12 : caption 14, "Les quatre jeux"
        sub_menu 15 : parent 15,11 : caption 15, "Quitter"
        sub_menu 16 : parent 16,10 : caption 16, "Infos"
    for i = 11 to 16 : on_click i,clic : next i
    
end
rem ============================================================================
Clic:
    select number_click
        case 13 : Votre_Jeu()
        case 14 : Les_4_Jeux()
        case 15 : Quitter()
        case 16 : Infos()
    end_select

return
rem ============================================================================
SUB Votre_Jeu()

END_SUB
rem ============================================================================
SUB Les_4_Jeux()

END_SUB
rem ============================================================================
SUB Infos()

END_SUB
rem ============================================================================
 SUB Quitter()

    terminate
 END_SUB
rem ============================================================================

Si je choisis de quitter, j’obtiens :


Et mon menu disparait !

Pour quitter mon programme sans utiliser TERMINATE, j’ai crée ma propre procédure qui est efficace à tous les coups.

Code:

rem ============================================================================
SUB Quitter()
    dim_local ret%,hWnd
    hWnd = handle(0)
    dll_on "user32"
    ret% = dll_call4("PostMessageA",hWnd,16,0,0) : ' 16 c'est la constante de fermeture
END_SUB
rem ============================================================================

Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Pedro Alvarez

avatar

Nombre de messages : 829
Date d'inscription : 19/01/2014

MessageSujet: Version 27i7.   Sam 23 Avr 2016 - 8:59

Bonjour.

Pourquoi se casser la tête avec 'Terminate' ?

Personnellement, je l'ai remplacé définitivement par ce qui suit:

res%=dll_call1("KillProcessByHandle",handle(0))
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Francis-mr



Nombre de messages : 160
Age : 65
Localisation : Corrèze
Date d'inscription : 26/11/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 9:11

Bonjour
Merci Papydall et Pedro Avlarez, mais je trouve illogique de faire appel à une dll pour fermer Panoramic.
Je reste donc pour l'instant avec la version 0.9.27i5.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://cfmr.e-monsite.com
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 11:09

Moi au Terminate j'ai: "PANORAMIC.exe a cessé de fonctionner ... etc."

D'accord avec toi Francis, on ne va pas installer une dll uniquement pour ça.

Tu as cette solution, à la place du Terminate:
Code:
EXECUTE "cmd.exe /c Taskkill.exe /F /IM PANORAMIC.exe /T": RETURN
Mais c'est un palliatif, en attendant.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
bignono

avatar

Nombre de messages : 1086
Age : 60
Localisation : Val de Marne
Date d'inscription : 13/11/2011

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 13:07

Bonjour à tous!
Merci Jack pour cette nouvelle version!
Tiens, tiens! Voilà la commande curve_value() qui revient après une brève apparition dans la version 0.9.22i3! Ça date!
Pour ceux qui souhaitent l'utiliser, j'avais copier à l'époque les explications de Jack dessus avec son exemple!
CURVE_ANGLE(DESTINATION, CURRENT, SPEED) : retourne un angle auto-interpolé basé sur une vitesse donnée
CURVE_VALUE(DESTINATION, CURRENT, SPEED) : retourne une valeur auto-interpolée basée sur une vitesse donnée

Ces 2 dernières fonctions sont des aides pour le programmeur, car elles évitent de programmer des calculs compliqués de position intermédiaire.
Vous indiquez la valeur que vous voulez atteindre (destination), la valeur actuelle (current), et la valeur de la vitesse (speed) avec laquelle vous voulez atteindre la destination.
Vous ne vous cassez pas la tête et vous mettez cette fonction dans une boucle: tous les valeurs intermédiaires seront calculées !

Par exemple, on veut amener une caméra d'une position haute vers l'arrière d'un véhicule (un cube rouge), on met 3 fois cette fonction dans une boucle (une fois pour X, une fois pour Y et une fois pour Z) et le tour est joué ! Toutes les positions de la caméra sont calculées automatiquement !

Exemple appliqué au lissage d'un mouvement de caméra:

Code:
' déclaration des variables pour tracer le quadrillage
dim maxi,nb_case,taille_case,i
dim vehicx,vehicy,vehicz
dim cam_posx,cam_posy,cam_posz
dim posx_cible,posy_cible,posz_cible
dim deltax,deltay,deltaz,lissage

' taille maximale du quadrillage
maxi=800

' nombre de cases sur X ou Y
nb_case=100

' taille d'une case
taille_case=int(maxi/nb_case)

full_space 0:scene3D 1:full_space 1
color 1,0,0,0

' tracé des des nb-case+1 lignes horizontales
for i=0 to nb_case
    3d_line i+2, 0, i*taille_case, 0
    3d_line i+2, nb_case*taille_case, i*taille_case, 0
    3d_line_width i+2,3
    3d_color i+2,255,255,0
next i

' tracé des nb-case+1 lignes verticales
for i=0 to nb_case
    3d_line i+nb_case+3, i*taille_case, 0, 0
    3d_line i+nb_case+3, i*taille_case, nb_case*taille_case, 0
    3d_line_width i+nb_case+3,3
    3d_color i+nb_case+3,255,255,0
next i

' création du véhicule
3d_cube 1,8:3d_color 1,255,0,0

' position initiale du véhicule
vehicx=nb_case*taille_case/2
vehicy=nb_case*taille_case/2
vehicz=4
3d_x_position 1,vehicx
3d_y_position 1,vehicy
3d_z_position 1,vehicz

' position initiale de la caméra
cam_posx=vehicx
cam_posy=vehicy
cam_posz=500
cam_position cam_posx, cam_posy, cam_posz

' la caméra pointe sur le véhicule
point_position vehicx, vehicy, vehicz

' point à atteindre par la caméra
posx_cible=vehicx
posy_cible=vehicy-25
posz_cible=vehicz

' vitesse de lissage
lissage=0.3

for i=1 to 90
 ' les positions intermédiaires sont calculées ici
 cam_posx=curve_value(posx_cible,cam_posx,lissage)
 cam_posy=curve_value(posy_cible,cam_posy,lissage)
 cam_posz=curve_value(posz_cible,cam_posz,lissage)
 cam_position cam_posx,cam_posy,cam_posz
 wait 50
next i

terminate

Voilà à plus!

PS pour Jack!
Quand comptes-tu intégrer les commandes d'animation des mesh 3d à Panoramic. 3d_animation_play N,P ; 3d_animation_loop N,P ;  o3d_animation_count(N), etc... Pour les 3d_actor, fichiers md2. Merci
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
jjn4

avatar

Nombre de messages : 1601
Date d'inscription : 13/09/2009

MessageSujet: +++   Sam 23 Avr 2016 - 13:34

Merci Jack
cheers alien cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://jjn4.e-monsite.com
Klaus

avatar

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

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 13:45

@Francis-mr:
Tu dis:
Citation :
Bonjour
Merci Papydall et Pedro Avlarez, mais je trouve illogique de faire appel à une dll pour fermer Panoramic.
Je reste donc pour l'instant avec la version 0.9.27i5.
Je te comprends. Alors, il y a une autre solution. Va sur mon WebDav, dossier DLLs, et télécharge le petit programme KillMySelf.exe (375 ko). Place-le dans le dossier de ron application, et utilise une SUB TERMINATE() selon ce modèle:
Code:
label fini

button 1 : caption 1,"Terminate"
on_click 1,fini
end

fini:
  terminate()
  message "Oups..."
  return

sub terminate()
  dim_local s$, scr$, bat$, axp$
  s$ = chr$(34)+dir_current$+"\KillMySelf.exe"+chr$(34)+" "+str$(handle(0))
  scr$ = "C:\TEMP\Vbscript.vbs"
  bat$ = "C:\TEMP\Bat.bat"
  file_open_write 9, bat$: file_writeln 9, s$: file_close 9
  axp$ = "CreateObject("+chr$(34)+"Wscript.Shell"+chr$(34)+").Run "
  axp$ = axp$ + chr$(34) + bat$ + chr$(34) + ", 0, True"
  file_open_write 9, scr$: file_writeln 9, axp$: file_close 9
  execute_wait "WSCRIPT.exe "+scr$
  file_delete bat$: file_delete scr$
end_sub

J'ai utilisé l'excellente sub de JL35 pour appeler KillMySelf.exe en lui passant le handle de la form 0. Et cet utilitaire, sans ouvrir une fenêtre noire, va tuer le programme Panoramic par la même fonction de KillProcessByHandle de KGF.dll, mais sans KGF.dll. Et voilà, tu es en Panoramic pur, sans DLL.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 14:14

Oui Klaus, mais inconvénient: il faut quand même une ressource externe qui est KillMySelf.exe.

Si c'est juste pour supprimer la fenêtre noire, on peut remplacer le s/p qui contient TERMINATE (ici Quit) par:
Code:
Quit:
  DIM prog$,vb$, qu$: vb$ = "C:\Temp\Vb.vbs": qu$ = CHR$(34)
  prog$ = "Taskkill /F /IM PANORAMIC.exe /T": ' tâche à tuer
  FILE_OPEN_WRITE 9, vb$: ' ===== Création du script .vbs =====
    FILE_WRITELN 9,"CreateObject("+qu$+"Wscript.Shell"+qu$+").Run "+qu$+prog$+qu$+",0,True"
  FILE_CLOSE 9
  EXECUTE_WAIT "WSCRIPT.exe "+vb$: ' ===== Exécution du script =====
  FILE_DELETE vb$
RETURN

On peut aussi mettre ça sous forme de sub.
C'est valable pour les nouveaux programmes, en attendant mieux, mais il reste un inconvénient majeur pour tous les programmes existants (sous forme de source): il faut les modifier avant de les lancer, et ça c'est un peu rédhibitoire...
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Klaus

avatar

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

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 14:17

Ben, oui...  certes. Mais Taskkill  est une ressource externe également. Et dangereuse, car elle peut tuer des programmes en cours qu'on voulait préserver. Alors que KillMySelf ne tue que le processus dont le handle est passé en paramètre, ou rien du tout si le handle n'est pas valide. D'ailleurs, tel que tu le publies, ça ne tue que le processus lancé par PANORAMIC_EDITOR (en espérant qu'il n'y en a pas d'autres...). Ce n'est pas applicable en l'état à des programmes générés en EXE. Alors que KillMyProcess marche dans tous les cas.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 14:31

? A ma connaissance, Taskkill est intégré à Windows (C:\Windows\System32\taskkill.exe) ?
Et on peut obtenir les paramètres acceptés en tapant en ligne de commande:
taskkill /?
Et on ne risque pas de se tromper de paramètre si c'est en dur dans le programme.
Ceci dit, tu as raison, tel qu'écrit ça tue tous les processus Panoramic.exe, mais je suis parti de l'hypothèse qu'on est en phase de mise au point d'un programme, sous forme de source.

En ce qui concerne les exécutables, ce défaut du Terminate n'est censé se produire que pour les sources compilés avec la dernière version en cause, donc qui devraient contenir la correction ci-dessus.

Dans tous les cas ce Terminate défectueux est quand même assez insupportable, et je crois bien que je vais revenir à la version précédente de l'Editeur.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
papydall

avatar

Nombre de messages : 5537
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 15:54

Salut tout le monde
Merci pour toute cette littérature sur comment terminate un programme Panoramic.
Certains (j’en fais parti moi-même) n’aiment pas toujours trimballer une DLL non native pour des raisons de partage.
Mais quand la DLL en question est une DLL native (qui se trouve nécessairement sur vos PC), il n’y a aucune raison pour aller chercher midi à quatorze heures.  Il suffit de l’utiliser, c’est tout.
La SUB suivante qui fait ce que devrait faire TERMINATE, n’est pas si compliqué que ça et elle n’alourdit pas le programme pour autant.
Code:

rem ============================================================================
SUB Quitter()
   dim_local ret%,hWnd
   hWnd = handle(0)
   dll_on "user32"
   ret% = dll_call4("PostMessageA",hWnd,16,0,0) : ' 16 c'est la constante de fermeture
END_SUB
rem ============================================================================

Ceci dit, c’est à Jack de trouver une bonne fois pour toute, une solution complète et définitive à ce problème qui traine depuis longtemps.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
papydall

avatar

Nombre de messages : 5537
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 16:01

Merci Bignono pour les explications et la demonstration de CURVE_ANGLE(DESTINATION, CURRENT, SPEED) et CURVE_VALUE(DESTINATION, CURRENT, SPEED)

Grâce à toi, je me sens que je suis un peu plus cultivé qu'il y a une minute! cheers
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
Klaus

avatar

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

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 16:07

Mouais... le code 16 correspond au message WM_CLOSE. Ce message est envoyé normalement par Windows à une forme lorsqu'on clique sur la croix rouge et doit provoquer la fermeture de la form, après suppression de tous les objets qui en font partie. En fait, cela déclenche l'évènement ON_CLOSE de la form, si cela a été spécifié dans le programme Panoramic.

Tout cela est très bien si tout se passe bien... Par contre, si dans une DLL par exemple, certaines ressources sont encore allouées et non libérées, cela peut conduire à des violations de mémoire.

Voici le source de KilMySelf:
Code:
program KillMySelf;

{$APPTYPE CONSOLE}

uses
  Windows, SysUtils, Messages, dialogs;

var
  par1: string;
  hnd: hwnd;

function KillProcessByHandle(hWindowHandle: HWND):integer; stdcall; export;      // KGF64
var
  hprocessID: INTEGER;
  processHandle: THandle;
  DWResult: DWORD;
begin
  try
    SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0, SMTO_ABORTIFHUNG or SMTO_NORMAL, 5000, DWResult);
    if isWindow(hWindowHandle) then begin
        { Get the process identifier for the window}
        GetWindowThreadProcessID(hWindowHandle, @hprocessID);
        if hprocessID <> 0 then begin
            { Get the process handle }
            processHandle := OpenProcess(PROCESS_TERMINATE or PROCESS_QUERY_INFORMATION, False, hprocessID);
            if processHandle <> 0 then begin
                { Terminate the process }
                TerminateProcess(processHandle, 0);
                CloseHandle(ProcessHandle);
            end;
        end;
    end;
  finally
  end;
  result := 0;
end;


begin
  { TODO -oUser -cConsole Main : placez le code ici }
  if ParamCount=0 then exit;
  par1 := paramstr(1);
  try
    hnd := strtoint(par1);
  except
    showmessage('? handle invalide');
  end;
  try
    KillProcessByHandle(hnd);
  except
    showmessage('? handle inconnu');
  end;

end.

On voit qu'à partir du handle de la form, on trouve le handle du process ce qui n'est pas la même chose ! Puis, on "tue" le processus de façon "dure", avant de libérer le handle réservé. C'est beaucoup plus sûr et marche dans tous les cas.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://klauspanoramic.comxa.com/index.html
papydall

avatar

Nombre de messages : 5537
Age : 67
Localisation : Moknine (Tunisie) Entre la chaise et le clavier
Date d'inscription : 03/03/2012

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 16:53

Oui Maitre Klaus, on ne peut pas te contredire et te lire est une bonne source d’informations pour celui qui veut comprendre.
Tout ça élargit notre horizon et pousse à réfléchir et c’est bien ainsi.
Mais l’idéal c’est que Jack puisse tordre le cou une bonne fois pour toute à TERMINATE en lui ordonnant (sur un ton militaire) de se comporter comme il se doit !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur http://papydall-panoramic.forumarabia.com/
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 17:00

Surtout que ça marchait jusqu'à ces derniers temps, c'est d'autant plus agaçant !
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Jean Claude

avatar

Nombre de messages : 5032
Age : 63
Localisation : 83 Var
Date d'inscription : 07/05/2009

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 18:47

Il existe aussi une autre solution, mais je suis d'accord TERMINATE doit rentrer dans le rang. Very Happy

L'autre solution: ne pas utiliser TERMINATE, mais plutôt END et laisser l'utilisateur fermer la fenêtre par la croix rouge. Bien sur, ce n'est pas valable à tous les coups.


A+
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
JL35



Nombre de messages : 5952
Localisation : 77
Date d'inscription : 29/11/2007

MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Sam 23 Avr 2016 - 19:07

Certes, ça marche mais ce n'est pas satisfaisant.
Si tu veux compiler un programme, il contiendra l'erreur dans l'exécutable.

Moi perso je suis retourné à la version précédente, ça m'embête trop, en attendant les beaux jours.
Revenir en haut Aller en bas
Voir le profil de l'utilisateur
Contenu sponsorisé




MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   

Revenir en haut Aller en bas
 
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7
Voir le sujet précédent Voir le sujet suivant Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Version instantanée du 7 janvier 2015 : PANORAMIC V 0.9.26i5
» Version instantanée du 30 mai 2015 : PANORAMIC V 0.9.26i6
» Version instantanée 26 septembre 2014 : PANORAMIC V 0.9.26i2
» nuvi 34xx (GCD File) software version 8.30 du 03/10/2016
» PANORAMIC_IDE: version instantanée du 25 septembre 2010

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: