IdentifiantMot de passe
Loading...
Mot de passe oubli� ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les r�ponses en temps r�el, voter pour les messages, poser vos propres questions et recevoir la newsletter

C++Builder Discussion :

Fichier Text Dans Executable


Sujet :

C++Builder

  1. #1
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut Fichier Text Dans Executable
    Bonjours,
    Dans mon proget je me sert de plusieur fichier que je charge a louverture de l'application pour charg� des donn�e que le programme a besoin

    (donn�e qu'il doit lire dans l'automate, message d'evenement, message d'alarmes etc ...)
    Mais le prob est que ces fichiers sont modifiable par n'importe qui ... jai bien pens� les metre en fichier cach� mais ce n'est pas une bonne solution.

    Je voulais savoir si il etais possible de les inclure a l'executable lors de la compilation pour que l'utilisateur n'y ai plus acces ...

    Cordialement
    Baxter

  2. #2
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Tu peux l'ajouter en ressource dans ton ex�cutable.

    Je le fait pour le A Propos de mon application qui affiche toutes les modifications des diff�rentes versions de mon application.

    tu cr�e un fichier .rc dans lequel tu met :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Fichier RCDATA "fichier.txt"
    Fichier correspond au nom te permettant d'acc�der � ta ressource
    Ce fichier rc, tu l'ajoute � ton projet.

    Ensuite lorsque tu veux extraire le fichier tu fait ceci

    tu inclus ceci dans la form ou tu veux r�cup�rer le fichier texte
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    #include <fstream.h>
    et pour l'extraction du fichier, tu fais ceci :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // On Extrait le fichier de la ressource
    TResourceStream *Res = new TResourceStream((int)HInstance,"Fichier",RT_RCDATA);
     
    // On sauvegarde la ressource dans un fichier temporaire ou RepAppli est le répertoire de l'application
    Res->SaveToFile(RepAppli + "tmp.tmp");
     
    // On détruit la ressource
    delete Res;
    Moi j'ai choisit "tmp.tmp" pour le nom du fichier mais tu peux faire ce que tu veux. Il ne faut pas oublier de d�truire le fichier quand tu as termin� de l'utiliser.

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
     
    // On le supprime
    DeleteFile(RepAppli + "tmp.tmp");

  3. #3
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Si tu mets les fichier dans les ressources on peut toujours aller les chercher avec un programme comme Ressource Hacker.

    Tu peux toujours compresser les ressources dans l'ex�cutable avec UPX, mais c'est facile � d�compresser.

    Donc, peut-�tre que le mieux est d'encrypter ton texte.

    Sinon tu peux toujours utiliser les deux m�thodes.

  4. #4
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    encryption .. moui
    Le probleme n'est pas que je vais que les donn�e soi secrete .. mais etant donn�e que c'est un fichier structur�, il sufie de chang� un caract�re pour que le prog n'arrive plus a l'utilis� entierement.
    Et je voudrais conserver un pouvoir de modif facile si je dois chang� des donn�e a la ressource

  5. #5
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    bon jai tester ta m�thode kurul
    le fichier .rc

    Il me cr�e un fichier .res mais sa n'enleve pas le prob, on peut toujous l'ouvrir et le modifier :s .
    Mais sa me plait deja plus

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 412
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 412
    Par d�faut
    Salut !

    Peut-�tre avec RenameFile en utilisant une extension .BMP ou .WAV ...

    Donc avant de le charger, le modifier en tant que .TXT
    Traiter comme tel pendant l'ex�cution du programme.
    Le modifier en tant que .BMP ou .WAV quand on quitte le programme (ou d�s que l'on n'en a plus besoin).

    A moins d'une �norme co�ncidence, le .BMP ou le .WAV ne pourra pas �tre ouvert d'une fa�on normale...

    C'est juste une id�e !

    A plus !

  7. #7
    R�dacteur
    Avatar de blondelle
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    2 738
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 2 738
    Par d�faut
    salut Baxter67
    Je pense que dans la FAQ il y a ce que tu cherche
    Le lien

  8. #8
    Membre �m�rite
    Avatar de bandit boy
    Profil pro
    Inscrit en
    F�vrier 2006
    Messages
    916
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : F�vrier 2006
    Messages : 916
    Par d�faut
    Salut,
    Je te conseil de suivre le lien de mon ami blondelle c'est un bon lien.
    Attention apr�s la compilation, c'est normale que tu puisses voir le fichier. Il n'est pas d�plac� dans la ressource de l'exe mais copi�. Par contre, si tu le supprime (ou si tu d�place l'exe) la ressource sera identique et donc ton fichier sera dans l'exe disponible o� et quand tu le d�sires.

    Tu pourras inclure, modifier ou supprimer toi m�me ta ressource (donc ton fichier) assez facilement.

  9. #9
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    Citation Envoy� par henderson Voir le message
    Salut !

    Peut-�tre avec RenameFile en utilisant une extension .BMP ou .WAV ...

    Donc avant de le charger, le modifier en tant que .TXT
    Traiter comme tel pendant l'ex�cution du programme.
    Le modifier en tant que .BMP ou .WAV quand on quitte le programme (ou d�s que l'on n'en a plus besoin).

    A moins d'une �norme co�ncidence, le .BMP ou le .WAV ne pourra pas �tre ouvert d'une fa�on normale...

    C'est juste une id�e !

    A plus !
    mes fichier porte pas d'extention .txt

    c'est .mess .ala .MwR et .MwW

    jai utilis� des extension de mon invention (ce qui permet de savoir ce qu'il y a dedans) et pour eviter que quelqu'un les ouvre facilement. Quand on ve louvrir windows demande avec quelle programme on veut l'ouvir, mais si il choisie bloc note on arrive a l'ouvrie, le lire et meme le modifier

  10. #10
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    Pour mon exemple, ton fichier est en Txt dans la ressource car c'est � partir de ce fichier qu'il cr�e la ressource. Tu peux ainsi le modifier et en recompilant ton programme, la ressource sera modifi� en cons�quence.

    Par contre pour pouvoir l'utiliser lors de l'ex�cution, le programme est oblig� de l'extraire de la ressource pour ensuite pouvoir lire son contenu. "dans mon exemple, extraction en un fichier tmp.tmp".

    Ainsi le fichier n'est visible que lors de l'ex�cution. si tu le d�truit d�s que tu n'en a plus besoin, le fichier n'est plus visible et reste bien entendu dans la ressource de ton programme.

    Apr�s c'est sur que si tu va dans le r�pertoire de l'application ou se trouve le fichier tmp.tmp et que tu fais ouvrir avec le bloc-note, tu verras le contenu du fichier, ca avec cette m�thode, tu ne peux pas faire autrement

  11. #11
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    oui oui merci je vien de voir sa, qu'il ne falais pas que les fichier .rc et .res soit present
    J'ai fais comme sa :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
            ResTmp = new TResourceStream((int)HInstance,"FichierMess",RT_RCDATA);
            ResTmp->SaveToFile("Mess.tmp");
            ListTmp->LoadFromFile("Mess.tmp");
            DeleteFile("Mess.tmp");
            delete ResTmp;
     
               //stockage des info pour utilisation dans prog (dans des tableau)
     
     
            ResTmp = new TResourceStream((int)HInstance,"FichierAla",RT_RCDATA);
            ResTmp->SaveToFile("Ala.tmp");
            ListTmp->LoadFromFile("Ala.tmp");
            DeleteFile("Ala.tmp");
            delete ResTmp;
     
                   //stockage des info pour utilisation dans prog (dans des tableau)
     
     
            ResTmp = new TResourceStream((int)HInstance,"FichierMWRead",RT_RCDATA);
            ResTmp->SaveToFile("MWR.tmp");
            ListTmp->LoadFromFile("MWR.tmp");
            DeleteFile("MWR.tmp");
            delete ResTmp;
     
                    //stockage des info pour utilisation dans prog (dans des tableau)
     
     
            ResTmp = new TResourceStream((int)HInstance,"FichierMWWrite",RT_RCDATA);
            ResTmp->SaveToFile("MWW.tmp");
            ListTmp->LoadFromFile("MWW.tmp");
            DeleteFile("MWW.tmp");
            delete ResTmp;
     
                    //stockage des info pour utilisation dans prog (dans des tableau)
    mon fihcier .rc :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
     
    FichierMWRead RCDATA "FichierRessource/ListMWRead.MwR"
    FichierMWWrite RCDATA "FichierRessource/ListMWWrite.WMw"
    FichierMess RCDATA "FichierRessource/message.mess"
    FichierAla RCDATA "FichierRessource/messageAlarme.ala"
    et sur le pc qui utilise le prog je met que l'executable et sa fonctionne bien

    Confirmer moi juste que je fais tous bien et je met le [resolue]

  12. #12
    Membre �clair� Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par d�faut
    C'est bien �aa pas de souci

    Tu d�truis bien tes fichiers ainsi, personne ne peut les lire, c'est exactement ca.

    fait juste attention aux chemins de tes fichiers car des fois, tu peux avoir des surprise.

    Moi je metterais plut�t le chemin complet pour ne pas �tre emb�t�

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    // On récupère le répertoire de l'application
    AnsiString RepAppli = ExtractFilePath(Application->ExeName);
     
    ResTmp = new TResourceStream((int)HInstance,"FichierMess",RT_RCDATA);
            ResTmp->SaveToFile(RepAppli + "Mess.tmp");
            ListTmp->LoadFromFile(RepAppli + "Mess.tmp");
            DeleteFile(RepAppli + "Mess.tmp");
            delete ResTmp;

  13. #13
    Membre �clair� Avatar de Baxter67
    Profil pro
    Inscrit en
    Juin 2005
    Messages
    270
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2005
    Messages : 270
    Par d�faut
    ok , merci je vais le faire comme sa avec le chemin complet

    merci encore de votre aide, ce post est donc r�solue

    Merci encore

    Cordialement Baxter

  14. #14
    Membre Expert
    Avatar de Crayon
    Inscrit en
    Avril 2005
    Messages
    1 811
    D�tails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Avril 2005
    Messages : 1 811
    Par d�faut
    Salut, voici un moyen de mettre ton texte directement dans une AnsiString sans passer par un fichier temporaire. Voici le code tir� du site Web d'Experts Exchange:

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
            AnsiString Details;
            bool NextLine;
            HRSRC ResHandle;
            HGLOBAL MemHandle;
            void *ResPtr;
            int ResSize;
            char *lpName;
     
            ResHandle = FindResource((int)HInstance, "FichierMess", "RC_DATA");
            if(ResHandle == NULL){return false;}
            MemHandle = LoadResource(HInstance, ResHandle);
            if(MemHandle == NULL){return false;}
            ResPtr = LockResource(MemHandle);
            if(ResPtr == NULL){return false;}
            ResSize = SizeofResource(HInstance, ResHandle);
            char *pszBuffer = new char[ResSize+1];
            memcpy(pszBuffer, ResPtr, ResSize);
            Details = pszBuffer;
            delete []pszBuffer;
    PS: J'ai pas encore essayer le code

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 5
    Dernier message: 15/05/2005, 08h51
  2. [JAR]ouverture de fichier texte depuis executables jar
    Par julien31 dans le forum Eclipse Java
    R�ponses: 3
    Dernier message: 01/03/2005, 15h53
  3. [FB 1.5] ouvrir fichier texte dans une ps
    Par jlf dans le forum D�buter
    R�ponses: 4
    Dernier message: 16/02/2005, 20h29
  4. Insertion d'un fichier texte dans une moulinette PL/SQL
    Par Douanier007 dans le forum PL/SQL
    R�ponses: 3
    Dernier message: 24/01/2005, 16h08
  5. [CR] fichier texte dans un etat
    Par fab dans le forum SAP Crystal Reports
    R�ponses: 7
    Dernier message: 12/09/2003, 10h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo