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
» PANORAMIC V 1
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar Klaus Aujourd'hui à 23:12

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar Marc Aujourd'hui à 12:14

» @Jack
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar Jack Hier à 20:40

» trop de fichiers en cours
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar papydall Lun 29 Avr 2024 - 23:39

» Une calculatrice en une ligne de programme
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jean_debord Dim 28 Avr 2024 - 8:47

» Form(résolu)
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar leclode Sam 27 Avr 2024 - 17:59

» Bataille navale SM
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jjn4 Ven 26 Avr 2024 - 17:39

» Gestion d'un système client-serveur.
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar Pedro Jeu 25 Avr 2024 - 19:31

» Les maths du crocodile
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jean_debord Jeu 25 Avr 2024 - 10:37

» Naissance de Crocodile Basic
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jean_debord Jeu 25 Avr 2024 - 8:45

» Dessine-moi une galaxie
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar papydall Dim 21 Avr 2024 - 23:30

» 2D_fill_color(résolu)
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Emptypar leclode Mer 17 Avr 2024 - 11:07

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier

 

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

Aller en bas 
+8
Francis-mr
Pedro
Minibug
papydall
Jean Claude
JL35
Marc
Jack
12 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Jack
Admin
Jack


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 17: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%

_________________
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
Marc

Marc


Nombre de messages : 2384
Age : 63
Localisation : TOURS (37)
Date d'inscription : 17/03/2014

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 17:52

Un grand MERCI Jack !
Revenir en haut Aller en bas
En ligne
Jack
Admin
Jack


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 17: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 ...

_________________
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Webdav username : panoramic@jack-panoramic password : panoramic123
Revenir en haut Aller en bas
https://panoramic.1fr1.net
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 18: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
Jean Claude

Jean Claude


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 19: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
papydall

papydall


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 19: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
http://papydall-panoramic.forumarabia.com/
Minibug

Minibug


Nombre de messages : 4566
Age : 57
Localisation : Vienne (86)
Date d'inscription : 09/02/2012

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 20: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
http://gpp.panoramic.free.fr
Jean Claude

Jean Claude


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptyVen 22 Avr 2016 - 21: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
papydall

papydall


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 6: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 :

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

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
http://papydall-panoramic.forumarabia.com/
Pedro

Pedro


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Version 27i7.   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 7: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
Francis-mr




Nombre de messages : 185
Date d'inscription : 26/11/2012

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 8: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
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 10: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
bignono

bignono


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 12: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
jjn4

jjn4


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: +++   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 12:34

Merci Jack
cheers alien cheers
Revenir en haut Aller en bas
http://jjn4.e-monsite.com
Klaus

Klaus


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 12: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
http://klauspanoramic.comxa.com/index.html En ligne
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 13: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
Klaus

Klaus


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 13: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
http://klauspanoramic.comxa.com/index.html En ligne
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 13: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
papydall

papydall


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 14: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
http://papydall-panoramic.forumarabia.com/
papydall

papydall


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 15: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
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 15: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
http://klauspanoramic.comxa.com/index.html En ligne
papydall

papydall


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 15: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
http://papydall-panoramic.forumarabia.com/
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 16:00

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

Jean Claude


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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 17: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
JL35




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

Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 Empty
MessageSujet: Re: Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7   Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7 EmptySam 23 Avr 2016 - 18: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
Contenu sponsorisé





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

Revenir en haut Aller en bas
 
Version instantanée du 22 avril 2016 : PANORAMIC V 0.9.27i7
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» Version instantanée du 30/12/2016 : PANORAMIC V 0.9.27i9
» Version instantanée du 2 juin 2016 : PANORAMIC V 0.9.27i8
» Version instantanée du 20 mars 2016 : PANORAMIC V 0.9.27i6
» Version instantanée du 26 avril 2013 : PANORAMIC V 0.9.25i2
» Version instantanée du 20 avril 2013 : PANORAMIC V 0.9.25i1

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: