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
» Gestion d'un système client-serveur.
Programme portable Emptypar Klaus Ven 17 Mai 2024 - 14:02

» item_index(résolu)
Programme portable Emptypar jjn4 Mar 14 Mai 2024 - 19:38

» Bataille terrestre
Programme portable Emptypar jjn4 Lun 13 Mai 2024 - 15:01

» SineCube
Programme portable Emptypar Marc Sam 11 Mai 2024 - 12:38

» Editeur EliP 6 : Le Tiny éditeur avec 25 onglets de travail
Programme portable Emptypar Marc Sam 11 Mai 2024 - 12:22

» Philharmusique
Programme portable Emptypar jjn4 Ven 10 Mai 2024 - 13:58

» PANORAMIC V 1
Programme portable Emptypar papydall Jeu 9 Mai 2024 - 3:22

» select intégrés [résolu]
Programme portable Emptypar jjn4 Mer 8 Mai 2024 - 17:00

» number_mouse_up
Programme portable Emptypar jjn4 Mer 8 Mai 2024 - 11:59

» Aide de PANORAMIC
Programme portable Emptypar jjn4 Mer 8 Mai 2024 - 11:16

» trop de fichiers en cours
Programme portable Emptypar lepetitmarocain Mer 8 Mai 2024 - 10:43

» Je teste PANORAMIC V 1 beta 1
Programme portable Emptypar papydall Mer 8 Mai 2024 - 4:17

» bouton dans autre form que 0(résolu)
Programme portable Emptypar leclode Lun 6 Mai 2024 - 13:59

» KGF_dll - nouvelles versions
Programme portable Emptypar Klaus Lun 6 Mai 2024 - 11:41

» @Jack
Programme portable Emptypar Jack Mar 30 Avr 2024 - 20:40

Navigation
 Portail
 Index
 Membres
 Profil
 FAQ
 Rechercher
Rechercher
 
 

Résultats par :
 
Rechercher Recherche avancée
Mai 2024
LunMarMerJeuVenSamDim
  12345
6789101112
13141516171819
20212223242526
2728293031  
CalendrierCalendrier
Le Deal du moment : -28%
Précommande : Smartphone Google Pixel 8a 5G ...
Voir le deal
389 €

 

 Programme portable

Aller en bas 
2 participants
AuteurMessage
JL35




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

Programme portable Empty
MessageSujet: Programme portable   Programme portable EmptySam 28 Fév 2015 - 16:24

Je ne veux pas parler ici d'un programme qui ne pèse pas lourd (il y en a Very Happy ), mais d'un exécutable autonome qui ne nécessite pas d'adjoindre des fichiers annexes.
L'idée est d'intégrer au programme principal les fichiers binaires annexes: petite dll, imagettes, icônes etc. sous forme de lignes de datas en hexadécimal, et de reconstituer ces fichiers sur place au moment de l'exécution. Ça évite donc le transport de plusieurs fichiers, au risque d'en oublier un.
Il est bien évident qu'il ne s'agit ici que de fichiers binaires peu volumineux (sous forme hexa leur volume est multiplié par deux). Je ne conseillerais pas d'essayer d'intégrer kgf.dll, à moins d'avoir des idées suicidaires...

L'essentiel est constitué de deux petites subs:
- Bin2Data, utilisé en dehors du programme principal, qui convertir le fichier binaire en lignes de datas en hexadécimal et écrit le tout dans un fichier texte.
Ce fichier texte est ensuite lu dans un éditeur et incorporé par copier/coller dans le programme principal, en y ajoutant des repères de début et de fin.
(le fichier texte peut ensuite être détruit).
- Data2Bin, dans le programme, qui lit les lignes de datas et reconstitue le fichier binaire à un emplacement choisi, pour utilisation par le reste du programme.

Je pensais en particulier au programme de dessin ci-contre, qui utilise Mouse.dll de Nardo.
Cette dll fait environ 40k octets, et génère 1024 lignes de datas, c'est beaucoup, mais bon, il faut ce qu'il faut.

Les subs avec exemple d'utilisation (pour l'anecdote, j'avais fait précédemment un long baratin et joint la totalité des datas, et j'ai eu droit à 'Message trop long...' et paf, j'ai perdu la totalité du texte Sad . Donc là, échaudé, je ne mets qu'une petite partie des datas)
Code:
DIM f$,fr$,fb$
f$ = "C:\PANORAMIC\Mouse.dll": ' fichier dll d'origine
fr$ = "Z:\Mouse.txt": ' fichier texte provisoire des datas, à supprimer ensuite
fb$ = "Z:\Mouse.dll": ' fichier dll résultat (utilisé par le programme cible)

' Conversion d'un fichier binaire en suite de DATAs
Bin2Data(f$,fr$)
PRINT "Terminé phase 1 !"

' Conversion de la suite de DATAs en fichier binaire (restore)
Data2Bin("Mouse.dll","F",fb$)
PRINT "Terminé phase 2 !"
END
' ==============================================================================
SUB Bin2Data(f$,fr$)
' Conversion d'un fichier binaire en suite de DATAs (dans fichier texte fr$)
DIM_LOCAL a$,sz%,i%,j%,ncl%,rs%
ncl% = 40: ' octets par ligne, arbitraire
FILEBIN_OPEN_READ 8,f$: sz%=FILEBIN_SIZE(8)
FILE_OPEN_WRITE 9,fr$
j% = INT(sz%/ncl%): rs% = sz%-j%*ncl%
FOR i% = 1 TO j%
    FILEBIN_HEXA_READ 8,ncl%,a$: FILE_WRITELN 9,"DATA "+CHR$(34)+a$+CHR$(34)
NEXT i%
IF rs%>0 THEN FILEBIN_HEXA_READ 8,rs%,a$: FILE_WRITELN 9,"DATA "+CHR$(34)+a$+CHR$(34)
FILEBIN_CLOSE 8: FILE_CLOSE 9
END_SUB
' ==============================================================================
SUB Data2Bin(Seqd$,Seqf$,fb$)
' Conversion de la suite de DATAs en fichier binaire (restore)
' Seqd$ = repère de début, Seqf$ = séquence de fin (= "F")
' fb$ = chemin du fichier binaire résultat
DIM_LOCAL a$
RESTORE: READ a$: WHILE a$<>Seqd$: END_WHILE
FILEBIN_OPEN_WRITE 9,fb$
    READ a$
    WHILE a$<>Seqf$: FILEBIN_HEXA_WRITE 9,LEN(a$)/2,a$: READ a$: END_WHILE
FILEBIN_CLOSE 9
END_SUB
' ==============================================================================
DATA "Mouse.dll"
DATA "4D5A50000200000004000F00FFFF0000B80000000000000040001A00000000000000000000000000"
DATA "000000000000000000000000000000000000000000010000BA10000E1FB409CD21B8014CCD219090"
DATA "546869732070726F6772616D206D7573742062652072756E20756E6465722057696E33320D0A2437"
...
...
DATA "00000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "00000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "00000000000000000000000000000000000000000000000000000000000000000000000000000000"
DATA "F"
Revenir en haut Aller en bas
Klaus

Klaus


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

Programme portable Empty
MessageSujet: Re: Programme portable   Programme portable EmptySam 28 Fév 2015 - 17:01

Est-ce que tu as essayé de simplement renommer un fichier binaire en TXT ou BMP ? En générant l'exécutable sous forme "application", ce fichier sera alors inclus. Et lors de l'exécution, tu devrais pouvoir l'utiliser, soit directement en donnant son nom modifié, soit en le copiant à partir de son nom modifié vers un dossier temporaire et de l'utiliser là. A ce régime, tu peux inclure des DLLs, même KGF.dll, et de reconstituer l'environnement d'exécution au démarrage.
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

Programme portable Empty
MessageSujet: Re: Programme portable   Programme portable EmptySam 28 Fév 2015 - 17:12

J'avoue à ma grande honte que je n'ai jamais compilé d'exécutable sous forme d'application mais toujours sous forme exe... Effectivement ce que tu dis doit être possible (si je comprends bien, d'après ce que tu dis ça n'accepte en fichiers associés que les txt ou bmp)... à voir...

Par contre je ne comprends pas du tout comment on désigne les fichiers associés.
Si je lance ma compilation en 'Application', le compilateur me liste un tas de fichiers txt, jpg ou bmp qui seront joints et qui n'ont rien à voir avec le source en question... je ne vois pas du tout où il va chercher tout ça scratch et ça finit d'ailleurs par une erreur sur un fichier jpg scratch et il me génère un exécutable inutilisable.
Revenir en haut Aller en bas
Klaus

Klaus


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

Programme portable Empty
MessageSujet: Re: Programme portable   Programme portable EmptySam 28 Fév 2015 - 17:20

Il inclut automatiquement tous les fichiers TXT, BMP et JPG qu'il trouve dans le dossier. Il les propose dans une liste (mémo ?), et tu peux en rajouter ou en enlever. Puis tu valides cette liste.

Il est donc conseillé d'avoir un dossier dans lequel tout est réuni, mais seulement ce qui est nécessaire pour le programme en question.

Je viens de faire l'essai: ça ne marchera pas avec l'extension BMP, car il vérifie la validité du format BMP avant.
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

Programme portable Empty
MessageSujet: Re: Programme portable   Programme portable EmptySam 28 Fév 2015 - 17:24

Merci pour le tuyau, effectivement je faisais ça dans le répertoire des sources, alors là il y a du monde !

J'avoue que je n'arrive pas à grand chose (allez, disons-le, à rien) avec cette méthode, je ne dois pas savoir m'y prendre...

A priori ça ne marche pas.
Je mets dans un répertoire Test.bas:
Code:
DIM mm$
mm$ = "Mouse.dll"
EXECUTE_WAIT "CMD.exe /c REN Mouse.jpg "+mm$: ' rename
DLL_ON mm$
END
et Mouse.dll renommé en Mouse.txt ou en Mouse.jpg
Je compile en application Test.exe, avec Mouse.txt (ou Mouse.jpg)
et à l'exécution j'ai toujours une erreur de chargement dll (et pas de dll créée évidemment)

Et si je compile directement avec Mouse.dll, je n'ai pas d'erreur à la compilation, mais même résultat.

Après essais, je dirai que pour moi, a priori, ce système ne marche pas, et donc que je maintiens mes subs là-haut.
Revenir en haut Aller en bas
Contenu sponsorisé





Programme portable Empty
MessageSujet: Re: Programme portable   Programme portable Empty

Revenir en haut Aller en bas
 
Programme portable
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» ce fut mon 2ème programme en panoramic! (mauvais programme)
» fermer le programme qui lance un autre programme
» PC portable Gamer.
»  Détecter le type du PC Portable ou Fixe
» Tester un programme

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: