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 Ressource Borland C++ 6.0 [FAQ]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut Fichier Ressource Borland C++ 6.0
    Bonjour

    Mon fichier ressource bdd.rc se presente comme cela :

    Film RCDATA Films.mdb

    J'ai inclu le fichier .rc a mon projet quand je compile mon projet il me cree bien un fichier .res

    Maintenant j'aimerais pouvoir utiliser ce fichier (Films.mdb) pour le copier ou le lire etc...
    J'ai cree pour cela un composant TMemo et j'ai ecrit ca dans mon .cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Memo1->Lines->LoadFromFile(Film);
    ou Film est l'identifiant marque dans le fichier bdd.rc

    Quand je le compile j'obtient cette erreur :

    [C++ Error] main.cpp(16): E2451 Undefined symbol 'Film'

    On me dit de rajouter cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma ressource "bdd.res"
    mais rien n'y fait

    Merci d'avance si quelqu'un a la reponse.

    ++ Nexus

  2. #2
    Membre éprouvé Avatar de ken_le_videur
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    129
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 129
    Par défaut
    1) Il faudrait dèja déclarer ta variable Film avant de l'utiliser ( le Film de bdd.rc n'est PAS une variable)

    2) La méthode LoadFromFile ne charge un fichier qu'à partir du DD, et pas à partir d'une ressource. Utilise les fonctions adéquates pour ce faire.

    3) M'étonnerais qu'un mémo puisse charger une basse access

  3. #3
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Slt,

    1) Comment déclarer la variable Film ???

    2) Je testais juste un exemple moi ce que je voudrais que le programme fasse c'est qu'il prenne le fichier Films.mdb contenu dans al ressource et le copie a un emplacement spécifique du DD.

    Merci ++ Nexus

  4. #4
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Regardes si tu peux te débrouiller avec ça.
    C'est du Delphi mais c'est assez proche de C++ Builder pour pouvoir être compréhensible.

  5. #5
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Merci ca m'a un peu servi alors voila mtnt mon erreur
    Je redonne le code de mon fichier .rc

    1 RCDATA "Films.mdb"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Res = new TResourceStream(0, 1, "RT_RCDATA");
    ShowMessage(Res->Size);
    Res->SaveToFile("C:\\Films.mdb");
    Aucune erreur au compilateur mais quand je lance l'appli il me met qu'il y a une erreur EAccessViolation sur la premiere ligne

    Merci de votre aide
    ++ Nexus

  6. #6
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Essayes avec ça (je promets rien...)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TResourceStream* Res = new TResourceStream(hInstance,"Film","RT_RCDATA");

  7. #7
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    hInstance est une variable non declaree

    L'aide de borland dit :
    Le paramètre Instance indique le handle d'instance Windows associé à l'exécutable ou la DLL contenant la ressource.
    Ne faudrait t-il pas creer une instance sur la ressource mais ... Comment faire ???

    Merci ++ Nexus

  8. #8
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    Remplaces le hInstance par 0. je viens de tester comme ça et ça marche autant au niveau de la récupération de la taille que de la création de la base à partir du fichier ressource.

    Je ne sais pas si c'est la meilleure méthode mais elle marche.

  9. #9
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    ReSalut,

    J'ai beau remplacee par 0 tjs cette erreur EAccessViolation au lancement.

    Si ca passe chez toi px tu me donner ce que tu as marque exactement que je puisse le tester

    Merci ++ Nexus

  10. #10
    Membre Expert
    Avatar de bakaneko
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 268
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 268
    Par défaut
    OK,
    1 - j'ai créé un fichier ressource vide à l'ide de l'éditeur d'images de BCB.
    2 - j'ai ajouté une base avec une table et 3 champs dans ce fichier ressource grâce à ResourceHacker. La ressource s'appelle Base (vachement original, non ).
    3 - J'ai inclus mon fichier ressource à mon projet.
    4 - J'ai fait le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    AnsiString ResName = "Base";
     TResourceStream* Res = new TResourceStream(0,ResName,"RT_RCDATA");
     Label1->Caption = Res->Size;
     Res->SaveToFile(Edit1->Text);//contient le chemin cible pour le fichier
     delete Res;
    5 - j'ai testé et ça à marcher.

  11. #11
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Pfouuu je sais pas si c moi ou le logiciel qui le fait expres mais bon

    Code du fichier base.rc : BASE RCDATA "RCData_2.bin"

    Le Fichier RCData_2.bin est un fichier que le logiciel ResourceHacker a cree automatiquement quand je lui est donne mon fichier .mdb

    une fois cree je rajoute au projet le fichier base.rc et ce code dans le .cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    AnsiString ResName = "BASE";
    TResourceStream* Res = new TResourceStream(0,ResName,"RT_RCDATA");
    ShowMessage(Res->Size);
    Res->SaveToFile("C:\\Films.mdb");
    delete Res;
    Mais quand je lance l'application il me met
    Resource BASE not found
    Alors la je comprend vraiment plus pack avant j'arrivais au moins a trouver ma resource

    ++ Nexus

  12. #12
    CGi
    CGi est déconnecté
    Expert confirmé
    Avatar de CGi
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    1 061
    Détails du profil
    Informations personnelles :
    Localisation : France, Allier (Auvergne)

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 061
    Par défaut
    enleve les guillemets sur RT_RCDATA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TResourceStream* Res = new TResourceStream(0,"Film",RT_RCDATA);
    il n'y a pas besoin d'utiliser ResourceHacker
    Ceci est suffisant dans le fichier rc:
    Site : http://chgi.developpez.com

    Pourquoi faire simple quand on peut faire compliqué ? (Jacques Rouxel)

  13. #13
    Membre Expert
    Homme Profil pro
    Consultant en sécurité
    Inscrit en
    Novembre 2004
    Messages
    1 286
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Consultant en sécurité
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 286
    Par défaut
    Salut effectivement en enlevant les guillemets ca marche

    J'ai essaye aussi en ecrivant manuelement le fichier rc masi sans aucun resultat

    Ben encore merci et a la prochaine

    ++ Nexus

  14. #14
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Bonsoir,
    la syntaxe correcte pour cette fonction est la suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TResourceStream* Res = new TResourceStream((int)HInstance,ResName,RT_RCDATA);
    cordialement
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Fichier Ressource
    Par kurul1 dans le forum C++Builder
    Réponses: 5
    Dernier message: 28/04/2005, 15h47
  2. [WinForms] Fichier ressource + icone
    Par freddyboy dans le forum Général Dotnet
    Réponses: 9
    Dernier message: 15/04/2005, 17h06
  3. [NASM] Utiliser des fichiers ressources
    Par trax44 dans le forum Assembleur
    Réponses: 8
    Dernier message: 26/09/2004, 18h42
  4. Fichier ressource et infos de version
    Par gord's dans le forum Langage
    Réponses: 4
    Dernier message: 25/06/2004, 17h05
  5. Fichier ressource contenant une icône
    Par k_boy dans le forum x86 32-bits / 64-bits
    Réponses: 9
    Dernier message: 26/09/2002, 20h59

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