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
» Une calculatrice en une ligne de programme
Création d'une application avec Panoramic_Editor Emptypar jean_debord Aujourd'hui à 8:01

» Gestion d'un système client-serveur.
Création d'une application avec Panoramic_Editor Emptypar Pedro Hier à 19:31

» Les maths du crocodile
Création d'une application avec Panoramic_Editor Emptypar jean_debord Hier à 10:37

» Naissance de Crocodile Basic
Création d'une application avec Panoramic_Editor Emptypar jean_debord Hier à 8:45

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Création d'une application avec Panoramic_Editor Emptypar Froggy One Mer 24 Avr 2024 - 18:38

» Dessine-moi une galaxie
Création d'une application avec Panoramic_Editor Emptypar jjn4 Lun 22 Avr 2024 - 13:47

» Erreur END_SUB
Création d'une application avec Panoramic_Editor Emptypar jjn4 Lun 22 Avr 2024 - 13:43

» Bug sur DIM_LOCAL ?
Création d'une application avec Panoramic_Editor Emptypar papydall Dim 21 Avr 2024 - 23:30

» Form
Création d'une application avec Panoramic_Editor Emptypar leclode Dim 21 Avr 2024 - 18:09

» trop de fichiers en cours
Création d'une application avec Panoramic_Editor Emptypar Marc Dim 21 Avr 2024 - 2:41

» 2D_fill_color(résolu)
Création d'une application avec Panoramic_Editor Emptypar leclode Sam 20 Avr 2024 - 8:32

» Consommation gaz électricité
Création d'une application avec Panoramic_Editor Emptypar leclode Mer 17 Avr 2024 - 11:07

» on_key_down (résolu)
Création d'une application avec Panoramic_Editor Emptypar leclode Mar 16 Avr 2024 - 11:01

» Sous-programme(résolu)
Création d'une application avec Panoramic_Editor Emptypar jjn4 Jeu 4 Avr 2024 - 14:42

» Bataille-navale
Création d'une application avec Panoramic_Editor Emptypar jjn4 Mer 3 Avr 2024 - 14:08

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Avril 2024
LunMarMerJeuVenSamDim
1234567
891011121314
15161718192021
22232425262728
2930     
CalendrierCalendrier
-28%
Le deal à ne pas rater :
Brandt LVE127J – Lave-vaisselle encastrable 12 couverts – L60cm
279.99 € 390.99 €
Voir le deal

 

 Création d'une application avec Panoramic_Editor

Aller en bas 
+2
papydall
Klaus
6 participants
AuteurMessage
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptySam 12 Mai 2018 - 20:18

Depuis longtemps, Panoramic_Editor sait créer un fichier EXE en incluant des fichiers TXT, BMP et JPG. C'est la fonction de création d'application du menu "Fichiers" qui le fait.

Or, dans certains cas, on aimerait embarquer d'autres fichiers, et surtout des fichiers binaires (DLL, ...). Impossible actuellement.

Je vous propose aujourd'hui une solution simplissime 100 % Panoramic pour le faire quand-même. Je l'ai testé en "embarquant" KGF.dll, c'est vous dire ...

L'astuce consiste en gros à créer, pour chaque fichier  binaire, un fichier TXT contenant un dump hexa su fichier binaire. Ce fichier portera le même nom et aura l'extension TXT. Voici un utilitaire simple pour produire cela:
Code:
' hexify.bas
'
' This utility converts any binary file into a TXT file containing an hexadecimal dump
' of the binary file, with lines containing BlockSize%*2 characters.
' This kind of file can easyly be included into a Panoramic Application EXE file.
' Thus, any binary file can be used, not only TXT, JPG and BMP files.
' Please use the ExtractFiles procedure from the test_application.bas file to rebuild
' the binary files on program startup - see this program for documentation.

label opn, ext

dim f$, fout$, no%, no1%, no2%, ext$, buf$, siz%, siz0%
dim BlockSize% : BlockSize% = 512

no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Files"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Open" : on_click no%,opn
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Exit" : on_click no%,ext
  
open_dialog 100
progress_bar 101 : top 101,40 : left 101,10 : width 101,width_client(0)-20

end

opn:
  ' ask for file to convert
  f$ = file_name$(100)
  if f$="_" then return
  if file_exists(f$)=0
    message "File not found"
    return
  end_if
  ' build TXT file name
  ext$ = file_extract_extension$(f$)
  fout$ = left$(f$,len(f$)-len(ext$))+".txt"
  ' get binary file size
  filebin_open_read 1,f$
  siz% = filebin_size(1)
  if siz%=0
    message "File is empty"
    filebin_close 1
    return
  end_if
  ' check if file exists
  if file_exists(fout$)=1
    if message_confirmation_yes_no("Output file already exists. Replace ?")<>1
      filebin_close 1
      return
    end_if
    file_delete fout$
  end_if
  
  ' conversion loop
  file_open_write 2,fout$
  siz0% = siz%
  max 101,siz0%
  ' do as many full block reads as possible
  while siz%>=BlockSize%
    position 101,siz0%-siz%
    buf$ = filebin_hexa_read$(1,BlockSize%)
    file_writeln 2,buf$
    siz% = siz% - BlockSize%
  end_while
  ' eventually, do a final partial block
  if siz%>0
    position 101,siz0%
    buf$ = filebin_hexa_read$(1,siz%)
    file_writeln 2,buf$
  end_if
  ' done
  position 101,siz0%  
  filebin_close 1
  file_close 2
  message "File created:"+chr$(13)+chr$(10)+fout$
  position 101,0
  return
  
ext:
  terminate
  

Et voici une démo simple montrant l'utilisation. Ce programme vérifie si KGF.dll est présent. Si oui, rien ne se passe. Si KGF.dll est absent, une procedure ExtractFiles() est appelée. Cette procédure va extraire tous les fichiers binaires emparquées, en s'aidant d'un fichier index en format TXT qui donne, pour chaque fichier binaire, le nom du fichier hexifiée, puis le nom du fichier binaire, éventuellement avec son chemin. Toutes les explications sont dans le code:
Code:
' test_application.bas
'
' This program is for demonstration purposes only.
' It show how to include any binary file into a Panoramic Application EXE file.
' Using the hexify utility, any binary file can be converted to an hexa dump
' in TXT format. Same file name, but *.TXT extension. Thus, the file will be
' flawlessly integrated into the application.
' As many binary files as required may be included in the same way.
' A supplemental TXT file must be supplied, giving the index of all included
' binary files, in the following format:
'   index file name: IndexOfIncludedFiles.txt
'   index file content:
'     first line: #IndexOfIncludedFiles
'     followed by 2 lines for each binary file. The first of them is the name
'     of the hexified TXT file, without path. The second of them is the target
'     file name, eventually including the destination path
' Example:
'    #IndexOfIncludedFiles       <=== first line as identifyer
'    KGFdll.txt                  <=== name of the hexified TXT file
'    KGF.dll                     <=== name of the resulting binary  output file
'    ...

dim res%, vers$, KGF$
KGF$ = "KGF.dll"

if file_exists(KGF$)=0 then ExtractFiles()
message "Ready..."

end

sub ExtractFiles()
  dim_local s$, fincluded$, foutput$, nobj%, n%
  
  nobj% = 1
  while object_exists(nobj%)=1
    nobj% = nobj% + 1
  end_while
  dlist nobj%
  file_load nobj%,"IndexOfIncludedFiles.txt"
  
  n% = 1
  s$ = item_read$(nobj%,n%)
  if s$<>"#IndexOfIncludedFiles"
    message "Invalid index file"
    delete nobj%
    exit_sub
  end_if
  
  while n%<count(nobj%)
    n% = n% + 1
    fincluded$ = item_read$(nobj%,n%)
    n% = n% + 1
    foutput$ = item_read$(nobj%,n%)
    
    file_open_read 1,fincluded$
    filebin_open_write 2,foutput$
      while file_eof(1)=0
        file_readln 1,s$
        filebin_hexa_write 2,len(s$)/2,s$
      end_while
    filebin_close 2
    file_close 1
  end_while  
  delete nobj%
end_sub


Dernière édition par Klaus le Dim 13 Mai 2018 - 8:18, édité 1 fois
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
papydall

papydall


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyDim 13 Mai 2018 - 2:38

Salut Klaus

Voilà une excellente idée !

J’ai testé.
Pour hexify.bas il y un caractère superflu en ligne 72 ( un point en fin de ligne)

Code:

position 101,siz0%  .

Pour test_application.bas, j’obtiens l’erreur
Impossible to load the File. Line : 39
Revenir en haut Aller en bas
http://papydall-panoramic.forumarabia.com/
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyDim 13 Mai 2018 - 8:27

Merci d'avoir testé !

Citation :
Pour hexify.bas il y un caractère superflu en ligne 72 ( un point en fin de ligne)
C'est corrigé en haut. Bizarre que ça ne génère pas d'erreur...

Citation :
Pour test_application.bas, j’obtiens l’erreur
Impossible to load the File. Line : 39
Est-ce que tu as généré ce programme en "application", en présence du fichier IndexOfIncludedFiles.txt tel que c'est décrit dans les commentaires, et un fichier TXT issu de hexify.bas ? Ce message vient en deux circonstances:
- tu as lancé le programme directement dans Panoramic_Editor, ou génére en exécutable (dans ce cas, le fichier IndexOfIncludedFiles.txt manque forcément...)
- tu tentes de lancer le programme généré en application par Panoramic_Editor, mais sans arrêter Panoramic_Editor (dans ce cas, tu tombes dans le problème que j'ai signalé ici

C'est une démo "proof of concept", montrant la faisabilité. On pourrait aisément ajouter toute une série de tests pour vérifier la présence ou non du fichier IndexOfIncludedFiles.txt, pour vérifier la présence de chacun des fichiers hexifiés indiqués dans IndexOfIncludedFiles.txt, etc.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyDim 13 Mai 2018 - 18:42

J'ai fait un petit programme 100 % Panoramic qui permet d'analyser un fichier EXE pour en extraire les noms des fichiers embarqués en tant qu'application, si tel est le cas. Et pour faire bonne mesure, j'ai ajouté le test si le petit fichier index est présent, ce fichier donnant la liste des fichiers binaires hexifiés:
Code:
' ExeResourceManager.bas


label open, exit

dim no%, no1%, no2%, no_open%, no_names%
dim f$, ext$, a%, an%, k%, s$, buf%(256), PEheader%, v%, SectionCount%
dim ResourceSection%, SectionOffset%, SizeOfResources%, PointerToResources%
dim ResourceNameEntries%, ResourceIdEntries%, RCDATApointer%
dim PointerToRCDATA%, RcDataResourceNameEntries%, RcDataResourceIdEntries%

no% = no% + 1 : main_menu no% : no1% = no%
  no% = no% + 1 : sub_menu no% : no2% = no% : parent no%,no1% : caption no%,"Files"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Open" : on_click no%,open
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"-"
    no% = no% + 1 : sub_menu no% : parent no%,no2% : caption no%,"Exit" : on_click no%,exit
   
no% = no% + 1 : open_dialog no% : no_open% = no%
  filter no%,"EXE or DLL files|*.exe;*.dll"
no% = no% + 1 : list no% : no_names% = no%
  top no%,10 : left no%,10 : width no%,300 : height no%,200 
                                           
caption 0,"ExeResourceManager"   


end
   
open:
  f$ = file_name$(no_open%)
  if f$="_" then return
  if file_exists(f$)=0
    message "File not found"
    return
  end_if
  ext$ = lower$(file_extract_extension$(f$))
  if (ext$<>".exe") and (ext$<>".dll")
    message "Wrong file type (EXE or DLL)"
    return
  end_if
 
  AnalyzeExeFile()
  if CheckIfFileIsIncluded("IndexOfIncludedFiles.txt")=1
    message "Le fichier index est bien présent"
  else
    message "Le fichier index est absent"
  end_if
  return
 
exit:
  terminate
 
 
 
sub AnalyzeExeFile()
  filebin_open_read 1,f$                  : ' open the selected EXE or DLL file
 
  ' at offset hex("3C") is located the length of the MS-DOS header.
  ' this is also the start offset for the PE header
  a% = Read32(hex("3C"))

  ' at this point, there must be the PE signature (letters PE followed by 2 zero bytes)
  v% = Read32(a%)
  if v%<>hex("00004550")
    message "Invalid EXE or DLL file"
    filebin_close 1                          : ' close the file
    exit_sub
  end_if
  PEheader% = a% + 4                        : ' skip the PE signature to point to the PE header
 
  ' at offset 2 of the PEheader, there is the section count as 16 bit number
  SectionCount% = Read16(PEheader%+2)

  ' at offset 16 of the PEheader, there is the size of the optional header as 16 bit number
  v% = Read16(PEheader%+16)

  ' now, point after the header (20 bytes) and after the optional header (v% bytes)
  a% = PEheader% + 20 + v%
 
  ' here is the section table - 40 bytes of section header for each section.
  ' the first 8 bytes are the ASCII section name:
  ResourceSection% = 0
  for k%=1 to SectionCount%
    s$ = ReadString$(a%,8)
    if s$=".rsrc"
      ResourceSection% = k%
      SectionOffset% = a%
    end_if
    a% = a% + 40
  next k%
  if ResourceSection%=0
    message "Resource section .rsrc not found"
    filebin_close 1                          : ' close the file
    exit_sub
  end_if

  ' here, the resource section header is identified.
  ' at offset 16, there is the 32 bit section size
  ' at offset 20, there is the 32 bit section pointer
  SizeOfResources% = Read32(SectionOffset%+16)
  PointerToResources% = Read32(SectionOffset%+20) 
 
  ' PointerToResources% contains the pointer to the resource directory table header
  ' at offset 12, there is the 16 bit number of name entries
  ' at offset 14, there is the 16 bit number of ID entries
  ResourceNameEntries% = Read16(PointerToResources%+12)
  ResourceIdEntries% = Read16(PointerToResources%+14)
 
  if ResourceNameEntries%>0
    a% = PointerToResources% + 16
    RCDATApointer% = 0
    for k%=1 to ResourceNameEntries%
      an% = PointerToResources% + bin_and(Read32(a%),hex("0FFFFFFF"))
      s$ = ReadUnicodeString$(an%)
      if s$="RCDATA"
        RCDATApointer% = Read32(a%+4)
      end_if
      a% = a% + 8
    next k%
  end_if
  if RCDATApointer%=0
    message "RCDATA section not found"
    filebin_close 1                          : ' close the file
    exit_sub
  end_if
 
  ' here, RCDATApointer% contains the pointer to the data for the RCDATA section.
  ' if high bit is set, this is an offset to a resource directory entry,
  '  otherwise, it is just an offset to the data.
  if bin_and(RCDATApointer%,hex("80000000"))=0
    ' actually not used... 
  else  : ' here, we have an offset to lower level resource directory header
    PointerToRCDATA% = PointerToResources% + bin_and(RCDATApointer%,hex("0FFFFFFF"))   
    ' at offset 12, there is the 16 bit number of name entries
    ' at offset 14, there is the 16 bit number of ID entries
    RcDataResourceNameEntries% = Read16(PointerToRCDATA%+12)
    RcDataResourceIdEntries% = Read16(PointerToRCDATA%+14)

    if RcDataResourceNameEntries%=0
      message "No included resource file"
      filebin_close 1                          : ' close the file
      exit_sub
    end_if
    ' here, the names entries indicate the included files for the applciation
    a% = PointerToRCDATA%+16
    clear no_names%
    for k%=1 to RcDataResourceNameEntries%
      an% = PointerToResources% + bin_and(Read32(a%),hex("0FFFFFFF"))
      s$ = ReadUnicodeString$(an%)
      ' here we have the names of the included resource files
      item_add no_names%,s$ 
      a% = a% + 8
    next k%
   
  end_if         
 
 
  filebin_close 1                          : ' close the file
end_sub
 
' this function reads a 32 bit word from the specified offset and returns its value 
fnc Read32(offset%)
  filebin_position 1,offset%
  filebin_block_read 1,4,buf%(0)
  result ((buf%(3)*256+buf%(2))*256+buf%(1))*256+buf%(0)
end_fnc

' this function reads a 16 bit word from the specified offset and returns its value 
fnc Read16(offset%)
  filebin_position 1,offset%
  filebin_block_read 1,2,buf%(0)
  result buf%(1)*256+buf%(0)
end_fnc

' this function reads a n byte string from the specified offset and returns the string
fnc ReadString$(offset%,n%)
  dim_local i%, s$, c%
  filebin_position 1,offset%
  s$ = ""
  for i%=1 to n%
    c% = filebin_read(1)
    if c%<>0 then s$ = s$ + chr$(c%)
  next i%
  result s$
end_fnc

' this function reads a Unicode resource name string from the specified offset and returns it as ASCII string
fnc ReadUnicodeString$(offset%)
  dim_local s$, c%, n%, i%
  s$ = ""
  n% = Read16(offset%)
  for i%=1 to n%
    c% = filebin_read(1)
    s$ = s$ + chr$(c%)
    c% = filebin_read(1)    : ' skip the Unicode extension unsused in Panoramic !
  next i%
  result s$
end_fnc

fnc CheckIfFileIsIncluded(file$)
  dim_local res%, i%
  res% = 0
  if count(no_names%)=0 then exit_fnc
  for i%=1 to count(no_names%)
    if item_read$(no_names%,i%)=upper$(file$) then res% = 1
  next i%
  result res%
end_fnc


Ca marche sur tous les EXEs créés par Panoramic, qu'ils soient "application" ou non. Mais quelle galère ! On pourrait éviter tout cela avec deux lignes si ma suggestion d'une fonction APPLICATION_FILE_EXISTS était implémentée ( voir ma proposition ici )
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Yannick




Nombre de messages : 8610
Age : 52
Localisation : Bretagne
Date d'inscription : 15/02/2010

Création d'une application avec Panoramic_Editor Empty
MessageSujet: re   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 12:35

Oui, effectivement.
Et on est loin d' avoir tous tes connaissances.
Wink

En tout cas, Bravo pour ce code.
Very Happy
Revenir en haut Aller en bas
Fredisland




Nombre de messages : 261
Date d'inscription : 30/03/2018

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 13:13

Eh bien c'est parfait tour ça, ça repond à mes questions.
Revenir en haut Aller en bas
Oscaribout




Nombre de messages : 471
Date d'inscription : 29/12/2016

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 13:58

Bonjour,
C'est pas méchant, mais je suis surpris que depuis quelques temps, alors qu'on est sur un site français, on mette systématiquement les commentaires en anglais.

On est devenu peu de choses. Sad

Il y en a qui vont dire que la programmation c'est l'affaire des américains, et qu'il n'y a rien à dire, c'est comme celà. C'est une phrase que des vendeurs tenaient dans les années 80 et qu'on m'a souvent dit à cette époque. Je sais que j'aimerai bien avoir 30 ans de moins mais tout de même!

Je sais ce que je dis et rien, c'est pareil. donc je m'en vais.
Revenir en haut Aller en bas
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 15:08

Sur le fond, je suis d'accord avec toi, Oscaribout. Formu français - contributions en français. D'ailleurs, tous mes programmes sont en français - code, commentaires et documentation.

Je viens de faire une exception, et je l'assume totalement. J'ai posté un utilitaire permettant de chercher dans un fichier EXE ou DLL, spécifiquement les ressources de la catégorie RCDATA. Ce sont ceux qui contiennent les fichiers embarqués en mode "application", par Panoramic_Editor.

C'est un outil extrêmement technique, pour un usage bien spécifique. et je pense qu'il peut avoir un intérêt, au-delà du forum français. Ce forum français intéresse d'ailleurs de temps en temps des membres non francophones, comme récemment Jennyk avec qui j'ai eu un petit échange en anglais. Et comme la fin de cette discussion portait sur les fichiers embarqués, je me suis dit que cet outil pourrait également l'intéresser.

J'ai déjà eu des échanges avec des membres en allemand et même en portugais (brésilien). Il se trouve que je suis plus que bilingue et peux, de ce fait, intervenir auprès de membres ayant des difficultés en Français. Je n'oublie jamais que le Français n'est pas ma langue maternelle, mais seulement ma deuxième langue étrangère à l'école (eh oui, ma première langue étrangère était le Latin...). Je fais donc cela, sporadiquement, simplement pour mettre à l'aise des Panoramiciens présents rarement pour cause de barrière de langue.

J'ai bien l'intention de continuer, si le besoin s'en fait sentir.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 17:10

Klaus, concernant ton système de conversion binaire -> hexa (texte), puis reconversion hexa -> binaire

Est-ce qu'il ne pourrait pas y avoir dans le binaire originel quelque part les valeurs successives 1310 qui seront traduites et écrites dans le fichier texte comme '0D0A'

A la relecture du fichier (mode texte, donc ligne par ligne) pour reconversion en binaire, ce sera considéré comme un saut de ligne et donc escamoté en lecture... ?

Ou je n'ai pas bien regardé ?

PS
Vérification faite, apparemment ça ne gêne pas, j'ai fait une sub qui recopie entièrement le binaire dans une seule variable, en hexa, laquelle variable est écrite dans un fichier texte.
A la reconversion, les '0D0A' éventuels sont bien reconstitués.
Revenir en haut Aller en bas
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 22:07

Oui, JL35, ça marche bien. J'ai même essayé avec un vrai fichier texte (un fichier source Panoramic).

Le fichier "hexifié" contient vraiment le dump hexa, y comprir d'éventuels CR LF convertis en 0D 0A. Chaque ligne contient le code hexa de 512 octets (donc 1024 caractères), suivi du CR LF délimitant la ligne du fichier texte. La dernière ligne du fichier hexifié contient le reste dépassant un multiple de 512 octes, également suivi d'un CR LF.

A la reconstitution, on lit le fichier hexifié en lecture séquentielle, et on obtient des lignes de 1024 caractères, évidemment sans le CR LF terminal. Après reconversion en binaire, on récupère les 512 octets binaires, y compris d'eventuels CR LF présents dans le fichier hexifié sous forme de 0D 0A et non CR LF. Donc, tout se goupille parfaitement.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
JL35




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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyLun 14 Mai 2018 - 22:15

Tu as raison Klaus, j'ai eu un doute qui s'est dissipé, avec l'expérience et tes explications.
Et effectivement c'est très intéressant et astucieux comme système pour intégrer du binaire dans une application Panoramic.
Avec éventuellement d'autres usages, à voir.
Revenir en haut Aller en bas
Klaus

Klaus


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

Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor EmptyMar 15 Mai 2018 - 0:36

J'apporte une information supplémentaire, même si, sur le fond, il n'y a rien de nouveau:
Comme ce mécanisme de hexification peut s'appliquer à n'importe quel fichier, il peut à l'évidence s'appliquer à un fichier ZIP. Et on peut ainsi embarquer, en un seul fichier ZIP hexifié, des dizaines de fichiers de toutes sortes, y compris leur arborescence de dossiers. Puis, au lancement du programme, on peut extraire ce fichier, reconstituer le ZIP d'origine, puis décompresser le ZIP selon les 3 moyens à disposition:
- les commandes ARCHIVER_xxx
- les fonctions ZIP de KGF.dll
- un fichier BAT appelant ZIP en mode DOS
On a là de puissants moyens d'installation d'applications complexes, sans avoir besoin de recourir à un logiciel externe de création d'un programme d'installation, au moins tant qu'une installation se résume à la création de dossiers et la copie de fichiers, ce qui devrait être la majeure partie des cas.
Revenir en haut Aller en bas
http://klauspanoramic.comxa.com/index.html
Contenu sponsorisé





Création d'une application avec Panoramic_Editor Empty
MessageSujet: Re: Création d'une application avec Panoramic_Editor   Création d'une application avec Panoramic_Editor Empty

Revenir en haut Aller en bas
 
Création d'une application avec Panoramic_Editor
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» Bug avec la création d'une application.
» creation d'un exe en application(fichiers txt ajoutés)
» application créée avec mon IDE
» Libération du EXE après la création d'une application
» Création de boutons avec images et textes dessinés

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: