MÉMORISER DES DONNÉES DANS L'EXE

jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017 - 26 avril 2010 à 11:31
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 - 4 mai 2010 à 12:26
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/51685-memoriser-des-donnees-dans-l-exe

cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
4 mai 2010 à 12:26
Salut JIHELB,
désolé j'ai inversé ta source avec celle de caribensila,
d'où l'incompréhension de mes commentaires ( le boulet ).
Mais si le temps me le permet je posterai une demo qui
ressemble donc plus à celle de caribensila.
Mais les commentaires de cari resume bien la situation entre
les 2 méthodes, progressé sur les deux voies peut donner des
résultats intéressants et complémentaires.
@+ yanb.
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
4 mai 2010 à 11:41
Voilà, une version à jour fonctionnelle qui ne laisse pas de trace sur le DD. Merci Caribensila et Cirec.
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
4 mai 2010 à 09:02
A Yanb...mets nous en ligne une démo. Peut-être celà rendra t-il service à quelqu'un.
A Adelpro...Merci.
A Caribensila. Merci pour tes commentaires. Je suis en accord à 100% avec ta dernière phrase.
Mais dans les inconvénients :
- taille fixe (d'accord !!!)(mais on doit pouvoir enregistrer des données de tailles variables, à condition de réserver un espace suffisant de taille max de toutes les données. Je vais y réfléchir)
- taille pas trop importante (on peut réserver autant de place que nécessaire dans la limite de ce qu'accepte l'EDI (???) et de son propre courage (initialisation))
- backup sur le disque (hé oui ... :( aucun des procédés que j'ai testé n'a résolu ceci (à moins que tu puisse faire fonctionner le tien chez moi ou que YANB nous poste une solution viable)
Effectivement "...les inconvénients...des avantages".
En ce qui concerne la taille des données en général, je te mets un message sur ton poste.
Cordialement.
Caribensila Messages postés 2527 Date d'inscription jeudi 15 janvier 2004 Statut Membre Dernière intervention 16 octobre 2019 18
3 mai 2010 à 16:06
Bonne idée !
Je suis content que mon dernier post ait suscité ce genre d'initiative. C'était le but.
Bravo JiHelB, et vive l'émulation ! :)

Pour répondre à JEAN_JEAN :
En effet, la méthode de JiHelB est très différente de la mienne. Alors que j'écris des données à la suite du flux de l'exe, JiHelB les écrit directement DANS le flux de l'exe.
Les avantages :
- c'est plus simple
- une meilleure sécurité
Les inconvénients :
- des données de taille fixe
- taille des données pas trop importante (car elles sont toutes chargées en mémoire lors du lancement)
- la plupart du temps, présence sur le disque dur d'un backup de la taille de l'exe (on retombe dans le défaut de l'.ini)

On peut voir que les inconvénients découlent directemennt des avantages. Mais je crois que nous allons pouvoir encore progresser sur cette voie... ;)
cs_adelpro Messages postés 47 Date d'inscription mercredi 15 janvier 2003 Statut Membre Dernière intervention 7 février 2009
3 mai 2010 à 12:25
très bon travaille félicitation et merci pour ple partage de ce précieuse code source
adelpro
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
3 mai 2010 à 09:11
Salut JIHELB,
oups "viable" "fiable", en fait je teste simplement le nouvel exe
avec l'ancien, style les eventuels codages etc...
puis je supprime l'ancien avec mon nouvel exe.
Ceci m'évite un backup de 2 Mo qui peut-être pénalisant sur une clès USB.
C'est donc tous simplement un petit test de sécurité pour vérifier si mon nouvel exe est fiable en exécution avant remplacement de l'ancien.
@+ Yanb
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
3 mai 2010 à 01:13
Salut Jean_Jean et merci pour la note.
Le marqueur ne sert ...que de marqueur. Tu peux donc mettre ce que tu veux.
J'ai rendu hommage à Caribensila en le citant et le remerciant. Voir "Conclusion" la-haut !
Je n'ai pas fait çà pour comparer des méthodes (qui de plus ont des principes trés différents). Et je ne comprends toujours pas pourquoi son code ne marche pas chez moi.
Salut et merci à toi aussi Jean-Pierre.
A Yanb, Il n'y a pas de raison que l'exe (ni déconstruit, ni reconstruit) ne soit pas "viable" ? Aussi je ne vois pas l'intéret de 2 exe et de les faire discuter ???
Merci à tous de votre intérêt !
cs_yanb Messages postés 271 Date d'inscription lundi 27 octobre 2003 Statut Membre Dernière intervention 7 juillet 2022 14
2 mai 2010 à 23:17
Salut JIHELB,
juste une petite truc, j'utilise ce style de méthode,
mais pour tester si mon exe reconstruit est viable je créé une passerelle entre mes 2 exe.
Pour simplifier je lance le nouvel exe je pose des questions et j'attends des réponses.
De plus par rapport aux commentaires de cirec sur la source de Caribensila pour la copie sur clés USB, j'utilise le répertoire temp en fonction de l'OS, et le ménage se fait avec un exe compilé en ressource.
Cette méthode est très utile, elle permet d'avoir une config modifiable dans l'exe, comme ça pas de petit fichier annexe modifiable.
Bravo pour cette source.
PS : j'avais eu le même problème avec IE.
@+ yanb
cs_Jean-Pierre Messages postés 82 Date d'inscription jeudi 25 septembre 2003 Statut Membre Dernière intervention 20 avril 2010
2 mai 2010 à 20:23
Bonjour,

Superbe démonstration, principe qui peut devenir très utile.

Bravo et merci !
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 mai 2010 à 12:34
J'avais oublié la note!
cs_Jean_Jean Messages postés 615 Date d'inscription dimanche 13 août 2006 Statut Membre Dernière intervention 13 décembre 2018 3
2 mai 2010 à 12:33
Bj JJHelb!
1. ça fonctionne en D7 perso.
2. Bravo à toi et ceux qui t'ont aidé. Effectivement ça semble mieux sécurisé que le code Précédent de Caribensila!
3. Au fait tu aurais pu lui rendre hommage pour cette idée brillante! Bon comme j'ai été enthousiasmé par cette idée et que je lui ai mis 10, je te met cette même gratification, puisque je pense que j'exploiterai cette idée!
4. Sur un autre registre, mais ça n'est pas une critique car je sais que tout le monde postent pour le plaisir ici; Tu décris bien ce que tu as fait, mais dans un but pédagogique, j'aurai eu plaisir à lire ce qui différencie ton code de celui de Cari et profité que tu as ton analyse en surface des neurones... Bon tu vas me dire, il suffit que je regarde les deux codes!
5. Sur le code, Il y a encore un truc qui me chagrine encore : _Ta constante marqueur : longword = $FE12ED23. Est-elle libre, imposée par windows ou Delphi? qu'adviendra t-il pour les nouvelles versions de Windows ou de Delphi?
Bien à vous
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
30 avril 2010 à 12:52
Merci Cirec pour tes précisions.
Cirec Messages postés 3833 Date d'inscription vendredi 23 juillet 2004 Statut Modérateur Dernière intervention 18 septembre 2022 50
30 avril 2010 à 12:15
Non non non ...
ça n'a rien à voir avec la version de Delphi mais juste avec les options de compilation !!!
Alors pourquoi ça fonctionne chez JiHelB et pas chez YvesSimon

ben tout simplement JiHelB doit avoir les "constantes typées affectables" activé
Menu "Projet" ---> "Options..." ---> onglet "Compilateur"

en règle générale cette option n'est pas activé par défaut et il est préférable de l'activer par le code ce qui permet de cibler l'action sur les constantes qui nous intéressent et pas toute l'application
const
{$J+} // <--------- ACTIVATION des Constantes typées Affectables
//----- ces variables initialisées sont sauvées dans l'EXE -------------------
_Repere : longword = $FE12ED23;//ne pas modifier (sert de marqueur de zone)
Enr: Tenregistrement =
(Titre : 'JiHelB';
NuSauvegarde : 0; //incrémenté à chaque écriture dans l'EXE
texte : '123456789012';
F_Left : 0; //position de la fenètre au démarrage
F_Top : 0); //
//----- FIN des variables initialisées sauvées dans l'EXE --------------------
{$J-} // <--------- DÉSACTIVATION des Constantes typées Affectables

tu peux donc remettre le code comme il était avant sans oublier les deux directives de compilation {$J+} & {$J-}

Cordialement
@++
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
30 avril 2010 à 11:46
Bonjour yvessimon,
n'ayant que d5 je ne savais pas qu'il y avait un pb pour les versions ultérieures. (peut-être certains choix de compilation permettent-ils quand même le fonctionnement ?)
Je te remercie, et j'ai mis en ligne la version modifiée utilisant les variables initialisées (dont ce n'est pas tout à fait le propos ici).
J'ai l'habitude d'utiliser les constantes typées car on peut les mettre en LECTURE SEULE par {$J-} ce qui est parfois pratique (pour moi du moins).
Ce code est en ligne surtout pour montrer une méthode SIMPLE et sure d'écrire autant de données que l'on veut dans l'EXE.
Salutations,
JiHelB
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
30 avril 2010 à 08:55
Bonjour,

Avec delphy 7 en gardant " const Enr: Tenregistrement =..."
j'ai l'erreur "Enr.. la partie gauche n'est pas affectable".

par contre avec VAR la compilation est bonne et de plus le programme mémorise le contenu du edit1.

salutations
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
29 avril 2010 à 01:18
bonjour yvessimon,
Tu n'as pas bien compris le principe me semble t-il.
Une variable ne réserve aucun espace dans l'exe, tandis qu'une constante variable, se comporte comme une constante pour la réservation d'espace dans l'exe (ce que l'on souhaite pour pouvoir réécrire dans cet espace) et comme une variable, pour pouvoir changer sa valeur par code.
En espérant que celà t'ouvre des horizons...
Salutations
yvessimon Messages postés 637 Date d'inscription mardi 22 avril 2003 Statut Membre Dernière intervention 9 janvier 2017
28 avril 2010 à 13:42
Bonjour,

la déclaration variable doit être
Enr: Tenregistrement =

doit être en " var " et au lieu de " const "

Salutations
jihelb Messages postés 49 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 24 mars 2017
26 avril 2010 à 11:31
Un grand MERCI à Cirec grâce à qui ce source est en ligne :)
En tant qu'AdminCS, il s'est occupé de mon problème 3 fois un dimanche.
Je suis maintenant sous Firefox 3.6.3. Quel bonheur de voir enfin ce bouton "Terminer" de l'étape 3 :). Adieu et sans regret IE.
Rejoignez-nous