Page 1 sur 1

Inclure un fichier dans l'exe avec Includebinary

Publié : dim. 26/oct./2008 17:46
par Xizvak
Bonjour, je rencontre un problème actuellement. J'aimerais pouvoir enregistrer une valeur dans un fichier txt et la lire ensuite, MAIS ce fichier doit être inclu dans l'.exe

J'ai testé ceci :

Code : Tout sélectionner

Global file$

DataSection
file$:
  IncludeFile "config.txt"
EndDataSection

OpenFile(1,file$)
WriteLong(1,10)
CloseFile(1)

OpenFile(1,file$)
var=ReadLong(1)
CloseFile(1)

MessageRequester("Test", Str(var), 0)
Mais ça n'a pas l'air de fonctionner, j'ai comme erreur File$ object not initialized. Pourtant je ne vois pas trop comment faire autrement =(

Merci d'avance.

Publié : dim. 26/oct./2008 18:24
par Anonyme
C'est simple

décompose ton petit programme ,

Code : Tout sélectionner

Global file$

Declaration d'un string , pour le moment il vaut 0

Code : Tout sélectionner

DataSection
file$:
  IncludeFile "config.txt"
EndDataSection 
tu inclus le fichier texte , l'étiquette file$: porte à confusion avec la variable déclaré plus haut.

Code : Tout sélectionner

OpenFile(1,file$)
File$ vaut 0 , donc impossible d'ouvrir le fichier 0.

il n'y a pas de commande qui te permettent de lire un fichier directement dans l'exe , y a une soluce qui consiste à choppé l'adresse du fichier puis de lire byte par byte , mais bon , trouve une autre soluce .

Publié : dim. 26/oct./2008 18:27
par Xizvak
Enfait pour être plus clair, ce que j'aimerais c'est pouvoir enregistrer une valeur de type LONG dans le programme. Quand on ferme le programme et qu'on l'ouvre a nouveau, pouvoir récupérer cette valeur.

Le soucis c'est que je parviens a faire ça en stockant dans un fichier externe mais pas sans fichier externe :s

Publié : dim. 26/oct./2008 18:34
par venom
Le soucis c'est que je parviens a faire ça en stockant dans un fichier externe mais pas sans fichier externe
moi personnellement c'est se que je fait souvent c'est mois casse tète. après il doit y avoir d'autre façon :wink:




@++

Publié : dim. 26/oct./2008 20:47
par Backup
Xizvak a écrit :Enfait pour être plus clair, ce que j'aimerais c'est pouvoir enregistrer une valeur de type LONG dans le programme. Quand on ferme le programme et qu'on l'ouvre a nouveau, pouvoir récupérer cette valeur.

Le soucis c'est que je parviens a faire ça en stockant dans un fichier externe mais pas sans fichier externe :s
ben t'es bien obligé de l'ecrire quelques part de toute façon !!

alors que ce soit un fichier ou bien la base de registre, c'est du kiff kiff

obligation d'utiliser la memoire de masse pour sauver ta valeur !! :)

sinon a l'extinction du prg, tout se perd .. c'est normal !! :)

Publié : dim. 26/oct./2008 22:32
par djes
Ce que tu demandes consistes à modifier l'exécutable de ton propre programme, alors qu'il tourne! Ca me parait difficile. Il y a deux solutions. Une que je vais garder pour moi et qui ne fonctionnerait de toutes façons que sur un système de fichiers NTFS, et l'autre : créer un processus en mémoire lancé depuis ton programme, et qui va continuer à tourner une fois que ton programme aura cessé de s'exécuter. Ceci fait, il modifiera le fichier de ton programme.
Pas super facile à réaliser, mais faisable. Est-ce que tu es capable de modifier un exe sans le corrompre?

Publié : dim. 26/oct./2008 22:37
par Anonyme
Pas super facile à réaliser, mais faisable. Est-ce que tu es capable de modifier un exe sans le corrompre?
Les datas sections doivent permettre se genre de truc
tu code une datasection avec une suite facile à trouvé , ( les valeur ascii de ton nom par exemple ) puis en fouillant dans l'exe byte par byte , on doit bien tombé dessus.

Y avais un truc similaire qui traine sur le forum ?

Publié : dim. 26/oct./2008 23:03
par djes
Cpl.Bator a écrit :
Pas super facile à réaliser, mais faisable. Est-ce que tu es capable de modifier un exe sans le corrompre?
Les datas sections doivent permettre se genre de truc
tu code une datasection avec une suite facile à trouvé , ( les valeur ascii de ton nom par exemple ) puis en fouillant dans l'exe byte par byte , on doit bien tombé dessus.

Y avais un truc similaire qui traine sur le forum ?
Je pense avoir déjà vu ça, pê sur le forum anglais.

Publié : dim. 26/oct./2008 23:18
par Backup
djes a écrit : Je pense avoir déjà vu ça, pê sur le forum anglais.
ici aussi !!
:wink:

http://www.purebasic.fr/french/viewtopi ... automod%2A

Publié : lun. 27/oct./2008 9:34
par djes
Dobro a écrit :
djes a écrit : Je pense avoir déjà vu ça, pê sur le forum anglais.
ici aussi !!
:wink:

http://www.purebasic.fr/french/viewtopi ... automod%2A
Quelle efficacité! 8O :D

Publié : lun. 27/oct./2008 13:17
par Backup
djes a écrit : Quelle efficacité! 8O :D
super bonne memoire du Forum surtout :lol: Merci