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.
Créer un EXE dans un programme Panoramic ? Emptypar Pedro Sam 23 Nov 2024 - 15:50

» Un autre pense-bête...
Créer un EXE dans un programme Panoramic ? Emptypar Froggy One Jeu 21 Nov 2024 - 15:54

» Récupération du contenu d'une page html.
Créer un EXE dans un programme Panoramic ? Emptypar Pedro Sam 16 Nov 2024 - 14:04

» Décompilation
Créer un EXE dans un programme Panoramic ? Emptypar JL35 Mar 12 Nov 2024 - 19:57

» Un album photos comme du temps des grands-mères
Créer un EXE dans un programme Panoramic ? Emptypar jjn4 Mar 12 Nov 2024 - 17:23

» traitement d'une feuille excel
Créer un EXE dans un programme Panoramic ? Emptypar jjn4 Jeu 7 Nov 2024 - 3:52

» Aide-mémoire mensuel
Créer un EXE dans un programme Panoramic ? Emptypar jjn4 Lun 4 Nov 2024 - 18:56

» Des incomprèhension avec Timer
Créer un EXE dans un programme Panoramic ? Emptypar Klaus Mer 30 Oct 2024 - 18:26

» KGF_dll - nouvelles versions
Créer un EXE dans un programme Panoramic ? Emptypar Klaus Mar 29 Oct 2024 - 17:58

» instructions panoramic
Créer un EXE dans un programme Panoramic ? Emptypar maelilou Lun 28 Oct 2024 - 19:51

» Figures fractales
Créer un EXE dans un programme Panoramic ? Emptypar Marc Ven 25 Oct 2024 - 12:18

» Panoramic et Scanette
Créer un EXE dans un programme Panoramic ? Emptypar Yannick Mer 25 Sep 2024 - 22:16

» Editeur d étiquette avec QR évolutif
Créer un EXE dans un programme Panoramic ? Emptypar JL35 Lun 23 Sep 2024 - 22:40

» BUG QR Code DelphiZXingQRCode
Créer un EXE dans un programme Panoramic ? Emptypar Yannick Dim 22 Sep 2024 - 11:40

» fichier.exe
Créer un EXE dans un programme Panoramic ? 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 : -25%
PC Portable Gamer 16,1” HP Victus 16 – 16 ...
Voir le deal
749.99 €

 

 Créer un EXE dans un programme Panoramic ?

Aller en bas 
5 participants
Aller à la page : 1, 2  Suivant
AuteurMessage
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyJeu 27 Oct 2016 - 16:29

J'ai fait un petit code en Panoramic pur qui peut créer un EXE à partir d'un source Panoramic quelconque. Est-ce que ça iintéresse quelqu'un ?

En Panoramic pur, c'est assez lent (30 à 40 secondes). Avec l'utilisation d'une fonction dans KGF.dll, ça pourrait être réduit à une seconde. Voici la version en Panoramic pur (il faut donner le nom de l'EXE en sortie dans une variable, et le source est à copier dans le mémo de gauche. Le mémo de droite, juste pour contrôle, montre le source encodé façon Panoramic:
Code:
label encoder

dim nom$

full_space 0
alpha 1 : top 1,10  : left 1,10  : caption 1,"En clair:"
alpha 2 : top 2,10  : left 2,520  : caption 2,"Encodé:"
memo 11 : top 11,40 : left 11,10  : width 11,500 : height 11,600 : bar_both 11
memo 12 : top 12,40 : left 12,520 : width 12,500 : height 12,600 : bar_both 12
button 21 : top 21,660 : left 21,300 : caption 21,"Encoder" : on_click 21,encoder
progress_bar 31 : hide 31 : top 31,690 : left 31,10 : width 31,500

end

encoder:
  nom$ = "ProgrammeEncode.exe"
  EncoderSource(nom$)
  return

sub EncoderSource()
'  dim_local res%, prg$
'  dll_on "KGF.dll"
'  prg$ = param_value$(0)
'  if file_exists(nom$)=1 then file_delete nom$
'  res% = dll_call3("CompilePanoramicToEXE",adr(prg$),handle(11),adr(nom$))
'  message "res%="+str$(res%)
'  dll_off
'  exit_sub

  dim_local  tin$, tout$, prg$, i%, k%, n%, n1%, cnt%, out$
  dim_local p%, s$, t$, c%, m%, vide%(64000)
  dim decoder%(255)

  data  0, 22, 21, 20, 19, 18, 17, 16, 31, 30,  0, 28, 27,  0, 25, 24
  data  7,  6,  5,  4,  3,  2,  1,  0, 15, 14, 13, 12, 11, 10,  9,  8
  data  55, 54, 53, 52, 51, 50, 49, 48, 63, 62, 61, 60, 59, 58, 57, 56
  data  39, 38, 37, 36, 35, 34, 33, 32, 47, 46, 45, 44, 43, 42, 41, 40
  data  87, 86, 85, 84, 83, 82, 81, 80, 95, 94, 93, 92, 91, 90, 89, 88
  data  71, 70, 69, 68, 67, 66, 65, 64, 79, 78, 77, 76, 75, 74, 73, 72
  data 119,118,117,116,115,114,113,112,127,126,125,124,123,122,121,120
  data 103,102,101,100, 99, 98, 97, 96,111,110,109,108,107,106,105,104
  data 151,150,149,148,147,146,145,144,159,158,157,156,155,154,153,152
  data 135,134,133,132,131,130,129,128,143,142,141,140,139,138,137,136
  data 183,182,181,180,179,178,177,176,191,190,189,188,187,186,185,184
  data 167,166,165,164,163,162,161,160,175,174,173,172,171,170,169,168
  data 215,214,213,212,211,210,209,208,223,222,221,220,219,218,217,216
  data 199,198,197,196,195,194,193,192,207,206,205,204,203,202,201,200
  data 247,246,245,244,243,242,241,240,255,254,253,252,251,250,249,248
  data 231,230,229,228,227,226,225,224,239,238,237,236,235,234,233,232

  for i% = 0 to 255
    read decoder%(i%)
  next i%


  prg$ = param_value$(0)
  filebin_open_read 2,prg$
  m% = filebin_size(2) - 8
  filebin_position 2,m%
  filebin_block_read 2,4,vide%(0)
  n% = 0
  for i%=3 to 0 step -1
    n% = n%*256 + vide%(i%)
  next i%
  m% = m% - n%
  filebin_position 2,0
 
  if file_exists(nom$)=1 then file_delete nom$
  filebin_open_write 1,nom$
  max 31,m%
  position 31,m%
  show 31
  while 64000<=m%
    filebin_block_read 2,64000,vide%(0)
    filebin_block_write 1,64000,vide%(0)
    m% = m% - 64000
    position 31,m%
  end_while
  if m%>0
    filebin_block_read 2,m%,vide%(0)
    filebin_block_write 1,m%,vide%(0)
  end_if
  filebin_close 2
  position 31,0
'  message "phase 1 ok"

  out$ = ""
  clear 12
  cnt% = 0
  if count(11)>0
    for i%=1 to count(11)
      s$ = item_read$(11,i%)
      t$ = ""
      if len(s$)>0
        for k%=1 to len(s$)
          n% = asc(mid$(s$,k%,1))
          t$ = t$ +chr$(decoder%(n%))
          vide%(k%-1) = decoder%(n%)
        next k%
      end_if
      item_add 12,t$
      cnt% = cnt% + len(t$) + 1
      n% = len(t$)
      vide%(n%) = 0
      filebin_block_write 1,n%+1,vide%(0)
    next i%
  end_if

  n% = cnt%
  for i%=0 to 3
    c% = bin_and(n%,255)
    n% = int(n%/256)
    vide%(i%) = c%
  next i%
  vide%(4) = 51
  vide%(5) = 66
  vide%(6) = 46
  vide%(7) = 70
  filebin_block_write 1,8,vide%(0)
  filebin_close 1
'  message "phase 2 ok"
  hide 31
end_sub


Dernière édition par Klaus le Ven 28 Oct 2016 - 0:48, édité 2 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyJeu 27 Oct 2016 - 19:55

Si l'on tente d'encoder ton code, une erreur apparaît a la fin du traitement en ligne 82 ! drunken Suspect affraid

J'aimerai bien voir la différence avec la DLL ! Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re   Créer un EXE dans un programme Panoramic ? EmptyJeu 27 Oct 2016 - 21:10

Je suis intéressé mais condamné a répondre depuis une tablette.
J' ai un squatteur sur mon ordi... 
...vive les vacances scolaires .
Laughing
Revenir en haut Aller en bas
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyJeu 27 Oct 2016 - 23:56

@Minibug:
Exact ! J'ai déterminé un peu rapidement la table d'encodage... Désolé. Cette fois, ça marche !
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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 0:51

Ce n'était toujours pas bon. J'ai refait la partie "table de conversion", et maintenant, on peut encoder le présent programme et exécuter le résultat qui est identique à ce que ferait l'EXE généré par l'éditeur de Panoramic.

Tel quel, toujours en 100 % Panoramic, le code est utilisable pour n'importe quel IDE écrit en Panoramic pour exécuter directement, sans avoir besoin d'une ligne de commande par Panoramic.exe. C'est un gros progrès.

Je suis en train de faire une fonction DLL pour faire la même chose, mais en beaucoup plus rapide.
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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 3:09

Voici la dernière version, utilisant la toute nouvelle fonction DLL pour faire le travail (télécharger KGF.dll avant d'utiliser !):
Code:
label encoder

dim nom$

full_space 0
alpha 1 : top 1,40  : left 1,10  : caption 1,"En clair:"
alpha 2 : top 2,40  : left 2,520  : caption 2,"Encodé:"
memo 11 : top 11,70 : left 11,10  : width 11,500 : height 11,600 : bar_both 11
memo 12 : top 12,70 : left 12,520 : width 12,500 : height 12,600 : bar_both 12
button 21 : top 21,690 : left 21,300 : caption 21,"Encoder" : on_click 21,encoder
progress_bar 31 : hide 31 : top 31,720 : left 31,10 : width 31,500
check 41 : top 41,10 : left 41,100 : width 41,400 : caption 41,"Exécuter avec KGF.dll"
  font_size 41,16 : font_bold 41 : font_color 41,255,0,0
 
end

encoder:
  nom$ = "ProgrammeEncode.exe"
  EncoderSource(nom$)
  return

sub EncoderSource()
  if checked(41)=1
    dim_local res%, prg$
    dll_on "KGF.dll"
    prg$ = param_value$(0)
    if file_exists(nom$)=1 then file_delete nom$
    res% = dll_call3("CompilePanoramicToEXE",adr(prg$),handle(11),adr(nom$))
    message "res%="+str$(res%)
    dll_off
    exit_sub
  end_if

  dim_local  tin$, tout$, prg$, i%, k%, n%, n1%, cnt%, out$
  dim_local p%, s$, t$, c%, m%, vide%(64000)
  dim decoder%(255)

  data  0, 22, 21, 20, 19, 18, 17, 16, 31, 30,  0, 28, 27,  0, 25, 24
  data  7,  6,  5,  4,  3,  2,  1,  0, 15, 14, 13, 12, 11, 10,  9,  8
  data  55, 54, 53, 52, 51, 50, 49, 48, 63, 62, 61, 60, 59, 58, 57, 56
  data  39, 38, 37, 36, 35, 34, 33, 32, 47, 46, 45, 44, 43, 42, 41, 40
  data  87, 86, 85, 84, 83, 82, 81, 80, 95, 94, 93, 92, 91, 90, 89, 88
  data  71, 70, 69, 68, 67, 66, 65, 64, 79, 78, 77, 76, 75, 74, 73, 72
  data 119,118,117,116,115,114,113,112,127,126,125,124,123,122,121,120
  data 103,102,101,100, 99, 98, 97, 96,111,110,109,108,107,106,105,104
  data 151,150,149,148,147,146,145,144,159,158,157,156,155,154,153,152
  data 135,134,133,132,131,130,129,128,143,142,141,140,139,138,137,136
  data 183,182,181,180,179,178,177,176,191,190,189,188,187,186,185,184
  data 167,166,165,164,163,162,161,160,175,174,173,172,171,170,169,168
  data 215,214,213,212,211,210,209,208,223,222,221,220,219,218,217,216
  data 199,198,197,196,195,194,193,192,207,206,205,204,203,202,201,200
  data 247,246,245,244,243,242,241,240,255,254,253,252,251,250,249,248
  data 231,230,229,228,227,226,225,224,239,238,237,236,235,234,233,232

  for i% = 0 to 255
    read decoder%(i%)
  next i%


  prg$ = param_value$(0)
  filebin_open_read 2,prg$
  m% = filebin_size(2) - 8
  filebin_position 2,m%
  filebin_block_read 2,4,vide%(0)
  n% = 0
  for i%=3 to 0 step -1
    n% = n%*256 + vide%(i%)
  next i%
  m% = m% - n%
  filebin_position 2,0
 
  if file_exists(nom$)=1 then file_delete nom$
  filebin_open_write 1,nom$
  max 31,m%
  position 31,m%
  show 31
  while 64000<=m%
    filebin_block_read 2,64000,vide%(0)
    filebin_block_write 1,64000,vide%(0)
    m% = m% - 64000
    position 31,m%
  end_while
  if m%>0
    filebin_block_read 2,m%,vide%(0)
    filebin_block_write 1,m%,vide%(0)
  end_if
  filebin_close 2
  position 31,0
'  message "phase 1 ok"

  out$ = ""
  clear 12
  cnt% = 0
  if count(11)>0
    for i%=1 to count(11)
      s$ = item_read$(11,i%)
      t$ = ""
      if len(s$)>0
        for k%=1 to len(s$)
          n% = asc(mid$(s$,k%,1))
          t$ = t$ +chr$(decoder%(n%))
          vide%(k%-1) = decoder%(n%)
        next k%
      end_if
      item_add 12,t$
      cnt% = cnt% + len(t$) + 1
      n% = len(t$)
      vide%(n%) = 0
      filebin_block_write 1,n%+1,vide%(0)
    next i%
  end_if

  n% = cnt%
  for i%=0 to 3
    c% = bin_and(n%,255)
    n% = int(n%/256)
    vide%(i%) = c%
  next i%
  vide%(4) = 51
  vide%(5) = 66
  vide%(6) = 46
  vide%(7) = 70
  filebin_block_write 1,8,vide%(0)
  filebin_close 1
'  message "phase 2 ok"
  hide 31
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 8:26

Merci Klaus, ça c'est vraiment une super idée !

Du coup je vais pouvoir rajouter la conversion en EXE à GPP.
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 9:54

Oui, c'était un peu l'idée... Moi aussi, je vais m'en servir pour l'ajouter à Synedit_Editor.
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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: re   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 11:01

cheers Bravo Klaus !
Encore une ouverture pour panoramic.

J' ai une idée derrière la tête et dès qu' elle passe devant je la mettrai sur le forum...
Laughing
Revenir en haut Aller en bas
pascal10000

pascal10000


Nombre de messages : 812
Localisation : Troyes
Date d'inscription : 05/02/2011

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 12:56

bjr a tous
Je n'ai pas très bien compris ton programme
Peut tu donner plus d'explication et comment s'en servir
merci cordialement
Revenir en haut Aller en bas
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 13:05

Mon programme est simplement une démonstration de la nouvelle fonction DLL: CompilePanoramicToEXE.

Cette fonction permet de prendre un source Panoramic quelconque, contenu dans un mémo Panoramic, et de générer le fichier EXE correspondant, directement sans passer par l'éditeur de Panoramic. Jusqu'à maintenant, il était impossible d'exécuter du code Panoramic généré par un programme Panoramic, directement, sans passer, soit par l'éditeur, soir par Panoramic.exe.

Cette restriction est maintenant levée et on peut avoir des programmes Panoramic qui génèrent un source Panoramic et l'exécutent directement. Cela est surtout pensé pour des logiciels du genre IDE, comme Synedit_Editor ou GPP, mais cela peut servir plus largement à des programmes qui veulent faire du "scripting", donc la génération et l'exécution de code, dynamiquement.

Mon programme de démo fonctionne comme ceci:
- au lancement, un écran s'affiche, avec les champs suivants:
1 check_box pour choisir l'utilisation de la DLL si cochée (très rapide, utilise KGF.dll), ou un code en 100 % Panoramic parfaitement fonctionnel (lent, entre 30 et 50 secondes chaque fois)
1 mémo à gauche dans lequel on colle ou on saisit le code à exécuter
1 mémo à droite qui sera rempli par le code source encodé pour Panoramic (juste pour contrôle, sans utilité fonctionnelle)
1 bouton de lancement

Donc, le fonctionnement est simple: coller le code dans le mémo de gauche, choisir de cocher la check_box ou pas, puis cliquer sur le bouton de lancement.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
pascal10000

pascal10000


Nombre de messages : 812
Localisation : Troyes
Date d'inscription : 05/02/2011

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 14:41

ok klaus j'ai compris son system
dommage que l'EX ne soit pas compilé!
merci
Revenir en haut Aller en bas
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 16:00

@klaus
Si ça peux te servir, il est possible de générer la table d'encodage, c'est une fonction XOR. Une demo qui compare la table lu et celle généré:
Code:
full_space 0
font_name 0,"dejavu sans mono"
dim i%,k%,c$

   data  0, 22, 21, 20, 19, 18, 17, 16, 31, 30,  0, 28, 27,  0, 25, 24
   data  7,  6,  5,  4,  3,  2,  1,  0, 15, 14, 13, 12, 11, 10,  9,  8
   data  55, 54, 53, 52, 51, 50, 49, 48, 63, 62, 61, 60, 59, 58, 57, 56
   data  39, 38, 37, 36, 35, 34, 33, 32, 47, 46, 45, 44, 43, 42, 41, 40
   data  87, 86, 85, 84, 83, 82, 81, 80, 95, 94, 93, 92, 91, 90, 89, 88
   data  71, 70, 69, 68, 67, 66, 65, 64, 79, 78, 77, 76, 75, 74, 73, 72
   data 119,118,117,116,115,114,113,112,127,126,125,124,123,122,121,120
   data 103,102,101,100, 99, 98, 97, 96,111,110,109,108,107,106,105,104
   data 151,150,149,148,147,146,145,144,159,158,157,156,155,154,153,152
   data 135,134,133,132,131,130,129,128,143,142,141,140,139,138,137,136
   data 183,182,181,180,179,178,177,176,191,190,189,188,187,186,185,184
   data 167,166,165,164,163,162,161,160,175,174,173,172,171,170,169,168
   data 215,214,213,212,211,210,209,208,223,222,221,220,219,218,217,216
   data 199,198,197,196,195,194,193,192,207,206,205,204,203,202,201,200
   data 247,246,245,244,243,242,241,240,255,254,253,252,251,250,249,248
   data 231,230,229,228,227,226,225,224,239,238,237,236,235,234,233,232

' lecture de la table de codage
print "LECTURE DES DATAS:"
 for i%=0 to 255
    ' lire
    read k%
    '
    ' affichage
    c$=str$(k%)
    if k%<10 then c$="00"+str$(k%)
    if k%>9 and k%<100 then c$="0"+str$(k%)
    '
    print c$;"   ";
    if mod(i%+1,16)=0 then print
 next i%

print : print

' générer la table de codage
print "CODAGE NUMERIQUE:"
 for i%=0 to 255
    ' encoder
    k%=bin_xor(i%,23)
    if i%=0 or i%=10 or i%=13 then k%=0
    '
    ' affichage
    c$=str$(k%)
    if k%<10 then c$="00"+str$(k%)
    if k%>9 and k%<100 then c$="0"+str$(k%)
    '
    print c$;"   ";
    if mod(i%+1,16)=0 then print
 next i%
Revenir en haut Aller en bas
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 16:10

Merci, Silverman ! C'est intéressant, et je vais intégrer cela au lieu de la longue liste des DATA.

EDIT

Bravo ! Ca marche. Je vais l'intégrer dans la version Panoramic et dans la version DLL.
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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 16:39

C'est intégré et ça marche en Panoramic pur et en DLL. J'ai donc mis à jour également Synedit_Editor et KGF.dll, ainsi que le programme de démo que voici:
Code:
label encoder

dim nom$

full_space 0
alpha 1 : top 1,40  : left 1,10  : caption 1,"En clair:"
alpha 2 : top 2,40  : left 2,520  : caption 2,"Encodé:"
memo 11 : top 11,70 : left 11,10  : width 11,500 : height 11,600 : bar_both 11
memo 12 : top 12,70 : left 12,520 : width 12,500 : height 12,600 : bar_both 12
button 21 : top 21,690 : left 21,300 : caption 21,"Encoder" : on_click 21,encoder
progress_bar 31 : hide 31 : top 31,720 : left 31,10 : width 31,500
check 41 : top 41,10 : left 41,100 : width 41,400 : caption 41,"Exécuter avec KGF.dll"
  font_size 41,16 : font_bold 41 : font_color 41,255,0,0
 
end

encoder:
  nom$ = "ProgrammeEncode.exe"
  EncoderSource(nom$)
  return

sub EncoderSource()
  if checked(41)=1
    dim_local res%, prg$
    dll_on "KGF.dll"
    prg$ = param_value$(0)
    if file_exists(nom$)=1 then file_delete nom$
    res% = dll_call3("CompilePanoramicToEXE",adr(prg$),handle(11),adr(nom$))
    message "res%="+str$(res%)
    dll_off
    exit_sub
  end_if

  dim_local  tin$, tout$, prg$, i%, k%, n%, n1%, cnt%, out$
  dim_local p%, s$, t$, c%, m%, vide%(64000)
  dim decoder%(255)

'  data  0, 22, 21, 20, 19, 18, 17, 16, 31, 30,  0, 28, 27,  0, 25, 24
'  data  7,  6,  5,  4,  3,  2,  1,  0, 15, 14, 13, 12, 11, 10,  9,  8
'  data  55, 54, 53, 52, 51, 50, 49, 48, 63, 62, 61, 60, 59, 58, 57, 56
'  data  39, 38, 37, 36, 35, 34, 33, 32, 47, 46, 45, 44, 43, 42, 41, 40
'  data  87, 86, 85, 84, 83, 82, 81, 80, 95, 94, 93, 92, 91, 90, 89, 88
'  data  71, 70, 69, 68, 67, 66, 65, 64, 79, 78, 77, 76, 75, 74, 73, 72
'  data 119,118,117,116,115,114,113,112,127,126,125,124,123,122,121,120
'  data 103,102,101,100, 99, 98, 97, 96,111,110,109,108,107,106,105,104
'  data 151,150,149,148,147,146,145,144,159,158,157,156,155,154,153,152
'  data 135,134,133,132,131,130,129,128,143,142,141,140,139,138,137,136
'  data 183,182,181,180,179,178,177,176,191,190,189,188,187,186,185,184
'  data 167,166,165,164,163,162,161,160,175,174,173,172,171,170,169,168
'  data 215,214,213,212,211,210,209,208,223,222,221,220,219,218,217,216
'  data 199,198,197,196,195,194,193,192,207,206,205,204,203,202,201,200
'  data 247,246,245,244,243,242,241,240,255,254,253,252,251,250,249,248
'  data 231,230,229,228,227,226,225,224,239,238,237,236,235,234,233,232

'  for i% = 0 to 255
'    read decoder%(i%)
'  next i%

  for i%=0 to 255
    k%=bin_xor(i%,23)
    if i%=0 or i%=10 or i%=13 then k%=0
    decoder%(i%) = k%
  next i%

  prg$ = param_value$(0)
  filebin_open_read 2,prg$
  m% = filebin_size(2) - 8
  filebin_position 2,m%
  filebin_block_read 2,4,vide%(0)
  n% = 0
  for i%=3 to 0 step -1
    n% = n%*256 + vide%(i%)
  next i%
  m% = m% - n%
  filebin_position 2,0
 
  if file_exists(nom$)=1 then file_delete nom$
  filebin_open_write 1,nom$
  max 31,m%
  position 31,m%
  show 31
  while 64000<=m%
    filebin_block_read 2,64000,vide%(0)
    filebin_block_write 1,64000,vide%(0)
    m% = m% - 64000
    position 31,m%
  end_while
  if m%>0
    filebin_block_read 2,m%,vide%(0)
    filebin_block_write 1,m%,vide%(0)
  end_if
  filebin_close 2
  position 31,0
'  message "phase 1 ok"

  out$ = ""
  clear 12
  cnt% = 0
  if count(11)>0
    for i%=1 to count(11)
      s$ = item_read$(11,i%)
      t$ = ""
      if len(s$)>0
        for k%=1 to len(s$)
          n% = asc(mid$(s$,k%,1))
          t$ = t$ +chr$(decoder%(n%))
          vide%(k%-1) = decoder%(n%)
        next k%
      end_if
      item_add 12,t$
      cnt% = cnt% + len(t$) + 1
      n% = len(t$)
      vide%(n%) = 0
      filebin_block_write 1,n%+1,vide%(0)
    next i%
  end_if

  n% = cnt%
  for i%=0 to 3
    c% = bin_and(n%,255)
    n% = int(n%/256)
    vide%(i%) = c%
  next i%
  vide%(4) = 51
  vide%(5) = 66
  vide%(6) = 46
  vide%(7) = 70
  filebin_block_write 1,8,vide%(0)
  filebin_close 1
'  message "phase 2 ok"
  hide 31
end_sub
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
silverman

silverman


Nombre de messages : 970
Age : 52
Localisation : Picardie
Date d'inscription : 18/03/2015

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 18:07

J'ai une question bête, pourquoi ne pas utiliser 'file_copy' pour recopier l'exe du ...\temp, à la place des 'file_bin'?
En tout cas, c'est une belle trouvaille!
Revenir en haut Aller en bas
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 18:54

Parce que, justement, ce n'est pas le fichier entier qu'il faut copier.

Il faut juste copier le début du fichier. Le nombre d'octets à copier est égal à (la taille du fichier) -8 -(taille du code source Panoramic) du programme à l'origine du EXE servant d'origine. Et la taille de ce code se trouve dans les octets (taille du fichier)-8 et les 3 octets suivants.

Il font donc recopier le début du fichier EXE, puis installer le nouveau code source, puis copier derrière le nombre d'octets du nouveau code source, sous forme d'un entier de 4 octets, et finalement les 4 derniers octets qui sont une constante.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 20:30

Klaus,

Pourquoi n'as tu pas préféré partir du choix du nom du programme pour la création de l’exécutable directement ?
Est ce que c'est juste pour simplifié ton code ?
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 20:55

Mon petit programme est juste une petite, maigre démo, montrant comment appeler la fonction DLL et, pour la partie Panoramic pure, montrer la technique pour le faire. Il n'a pas la prétention d'être un vrai outil - il y a Panoramic_Editor pour cela qui fait ça très bien.

Rien n'empêche, dans mon petit code, d'ajouter un petit dialogue ou une fenêtre de sélection pour choisir le nom qui, pour le moment, est codé dans une variable
Code:
  nom$ = "ProgrammeEncode.exe"
L'important, ce sont les points suivants:
1. il faut un "modèle", une source pour le noyau de Panoramic, pour l'interpréteur. Et tout naturellement, j'ai choisi de le copier à partir du programme en cours, et son fichier EXE est déterminé par
Code:
    prg$ = param_value$(0)
2. le code Panoramic à utiliser est pris dans un mémo qui, dans un programme réel, sera certainement caché par HIDE. Ici, il est visible juste pour la démo.
3. le nom du fichier EXE résultant est dans la variable nom$ qu'on peut charger de multiples façons - chacun le fera à son goût. Dans Synedit_Editor, j'ai utilisé tout naturellement le nom du fichier BAS mémorisé, en remplaçant l'extension par EXE.
4. en utilisant la fonction DLL, ce sont ces 3 éléments qui sont passés en paramètre. La fonction est donc entièrement paramétrée et rien n'est imposée par elle. Ca va même plus loin: la fonction DLL refuse de faire le travail si un des paramètres est invalide, le fichier source inexistant ou le fichier EXE déjà existant - il est de la responsabilité du programme appelant de construire l'environnement correct.

J'ai intégré cette fonction dans Synedit_Editor avec une grande facilité:
Code:
  memo 92 : hide 92 : bar_both 92 : ' mémo pour recevoir le source à compiler en EXE
...
' ici, en cas de frappe F8 ou F9, si la cible de l'outil est $ (dollar):
    file_load 92,f$                                  : ' charger le source dans le mémo interne
    fexe$ = left$(f$,len(f$)-3) + ".exe"            : ' nom du fichier EXE à générer
    if file_exists(fexe$)=1 then file_delete fexe$  : ' supprimer un EXE déjà existant
    f$ = param_value$(0)                            : ' prendre le chemin de Synedit_Editor (programme actif)
    res% = dll_call3("CompilePanoramicToEXE",adr(f$),handle(92),adr(fexe$)) : ' générer le fichier EXE
    if res%<0
      message "Erreur "+str$(res%)+" en génération du fichier EXE"
      return
    end_if
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 21:40

Ok là c'est plus clair ! Merci pour ta réponse Klaus Wink
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Klaus

Klaus


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptyVen 28 Oct 2016 - 22:08

Et tu verras, si tu fais l'essai: la version avec la fonction DLL est ultra-rapide ! C'est quasiment instantané. C'est un vrai plaisir de générer un EXE "on the fly", comme diraient des Ricains.

Evidemment, tout cela est tributaire du codage de Jack. Cela reste valable tant que Jack ne change pas le principe de codage ni la façon de mémoriser le code dans l'EXE généré par Panoramic_Editor. J'espère que Jack ne prendra pas ombrage de l'initiative que j'ai prise en réalisant cette fonction - elle satisfait une demande qui a été faite depuis longtemps, sur le forum.

Maintenant, il est évident que cela ne s'applique qu'aux programmes lancés par Panoramic_Editor ou générés par lui. Cela ne s'applique pas aux programmes compilés par le compilateur sur lequel Jack travaille, mais ça, c'est une autre histoire.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptySam 29 Oct 2016 - 11:48

Bonjour klaus et bonjour à tous !

Du coup, voila ma modeste contribution pour ceux qui ne veulent que le nécessaire.
C'est vrai que ça parait tellement simple comme ça !
Encore merci pour ton travail Klaus. c'est une pure merveille...
Laughing  Laughing  Laughing

Code:
LABEL choix , sortie
DIM nom$, exe$ , res%, prg$

CAPTION 0,"CONVERTISSEUR DE FICHIER EXE" : BORDER_HIDE 0 : COLOR 0,0,0,0
LEFT 0,(SCREEN_X-320)/2 : TOP 0,(SCREEN_Y-70)/2 : WIDTH 0,320 : HEIGHT 0,70
ALPHA 1 : LEFT 1,10 : TOP 1,7  : FONT_SIZE 1,12 : CAPTION 1,CAPTION$(0) : FONT_BOLD 1 : COLOR 1,0,0,0 : FONT_COLOR 1,200,200,0
BUTTON 2 : LEFT 2,11 : TOP 2,32 : FONT_SIZE 2,10 : WIDTH 2,240 : HEIGHT 2,28 : CAPTION 2,"Choisir le fichier BAS à convertir" : ON_CLICK 2,choix
HINT 2,"Permet la conversion d'un fichier Panoramic"+CHR$(13)+"de type BAS en fichier EXE autonome."
BUTTON 3 : LEFT 3,255 : TOP 3,32 : FONT_SIZE 3,10 : WIDTH 3,57 : HEIGHT 3,28 : CAPTION 3,"Sortie" : ON_CLICK 3,sortie
HINT 3,"Permet la sortie du programme"+CHR$(13)+"sans aucune modification."
ALPHA 5 : HIDE 5 : LEFT 5,10 : TOP 5,35  : FONT_SIZE 5,10 : COLOR 5,0,0,0 : FONT_COLOR 5,220,220,220
OPEN_DIALOG 4 : FILTER 4,"fichiers Panoramic Basic|*.bas" : MEMO 6 : LEFT 6,400 : TOP 6,300 : HIDE 6
END

choix:
  SHOW 5 : CAPTION 5,"Vérification en cours ..." : HIDE 2 : HIDE 3 : nom$=FILE_NAME$(4)
  IF FILE_EXISTS(nom$)=0 THEN CAPTION 5,"Fichier introuvable !  Patientez..." : PAUSE 2000 : HIDE 5 : SHOW 2 : SHOW 3 : RETURN
  IF RIGHT$(LOWER$(nom$),3)<>"bas" THEN CAPTION 5,"Fichier invalide !  Patientez..." : PAUSE 2000 : HIDE 5 : SHOW 2 : SHOW 3 : RETURN
  exe$=LEFT$(nom$,LEN(nom$)-3)+"EXE"
  FILE_LOAD 6,nom$ : IF FILE_EXISTS(exe$)=1 THEN FILE_DELETE exe$
  CAPTION 5,"Conversion du fichier en cours ..."
  DLL_ON "D:\BASIC\DLLs\KGF.dll" : prg$ = PARAM_VALUE$(0)
  res% = dll_call3("CompilePanoramicToEXE",adr(prg$),handle(6),adr(exe$))
  CAPTION 5,"Conversion terminée !  Fermeture du programme..." : PAUSE 2000
TERMINATE

sortie:
TERMINATE

Et voila le résultat :

Créer un EXE dans un programme Panoramic ? Conver10


Dernière édition par Minibug le Sam 29 Oct 2016 - 17:56, édité 1 fois
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Yannick




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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: re   Créer un EXE dans un programme Panoramic ? EmptySam 29 Oct 2016 - 14:09

@Minibug,

tu pouvais aussi reprendre le "recover source" et avoir les deux sens de conversion...

Embarassed , c'est bon..., je sors...
lol!
Revenir en haut Aller en bas
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptySam 29 Oct 2016 - 14:27

oui par le bouton a droite...
lol! lol! lol!
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Minibug

Minibug


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

Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? EmptySam 29 Oct 2016 - 15:55

J'ai apporté quelques modifications au code.
Mise à jour faite au dessus
Revenir en haut Aller en bas
http://gpp.panoramic.free.fr
Contenu sponsorisé





Créer un EXE dans un programme Panoramic ? Empty
MessageSujet: Re: Créer un EXE dans un programme Panoramic ?   Créer un EXE dans un programme Panoramic ? Empty

Revenir en haut Aller en bas
 
Créer un EXE dans un programme Panoramic ?
Revenir en haut 
Page 1 sur 2Aller à la page : 1, 2  Suivant
 Sujets similaires
-
» ce fut mon 2ème programme en panoramic! (mauvais programme)
» creer des menu pour panoramic
» Insertion d'un petit fichier quelconque dans un programme
» Des vidéos dans vos programme
» Fermer un programme externe à PANORAMIC

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
FORUM DE DISCUSSION SUR LE LANGAGE PANORAMIC :: PANORAMIC :: Vos sources, vos utilitaires à partager-
Sauter vers: