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

Langage C++ Discussion :

Erreur à l'installation d'un composant "maison" (Builder 10)


Sujet :

Langage C++

  1. #1
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut Erreur à l'installation d'un composant "maison" (Builder 10)
    Bonjour,
    Je rencontre une erreur à l'installation d'un composant que j'ai crée et je n’arrive pas à m'en sortir. :
    Nom : wdJLGMVtwsXlHX24gD958vPPkoQn3LGQrq8N6sVMi7aL87xOqRoDZqelZ05o7Kwl-sans-titre2.png
Affichages : 96
Taille : 8,8 Ko

    Impossible de charger le package 'Nom' Il contient l'unité 'Stconst', qui est aussi contenue dans le package 'SysToolsCR230'

    Mon code (complet en plus) :
    .hpp :
    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
     
    //---------------------------------------------------------------------------
    #ifndef QrSpCodeBar_VWH
    #define QrSpCodeBar_VWH
    //---------------------------------------------------------------------------
    #include <SysUtils.hpp>
    #include <Controls.hpp>
    #include <Classes.hpp>
    #include <QRCtrls.hpp>
    #include <QuickRpt.hpp>
    #include <StBarC.hpp>
     
    //---------------------------------------------------------------------------
     
    class PACKAGE TQRSpCodeBar : public TQRImage
    {
    private:
     TStBarCode* m_StBarCode;
    protected:
     void __fastcall Paint();
     void __fastcall Print(int OfsX,int OfsY);
    public:
     //Contructeurs / destructeur
     __fastcall TQRSpCodeBar(TComponent* Owner);
     __fastcall ~TQRSpCodeBar();
     //Propertys
     __property TStBarCode* StBarCode = {read=m_StBarCode, write=m_StBarCode};
     
    __published:
    };
    //---------------------------------------------------------------------------
    #endif
    .cpp
    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
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    //---------------------------------------------------------------------------
    #pragma hdrstop
     
    #include "QrSpCodeBar_VW.h"
    #pragma link "QRCtrls"
    #pragma link "QuickRpt"
    #pragma link "StBarC"
     
    #pragma package(smart_init)
    //---------------------------------------------------------------------------
    // ValidCtrCheck est utilisée pour garantir que les composants créés n'ont pas
    // de fonctions virtuelles pures.
    //
     
    static inline void ValidCtrCheck(TQRSpCodeBar *)
    {
     new TQRSpCodeBar(NULL);
    }
    //---------------------------------------------------------------------------
    __fastcall TQRSpCodeBar::TQRSpCodeBar(TComponent* Owner)
     : TQRImage(Owner)
    {
     m_StBarCode = new TStBarCode(this);
    }
    __fastcall TQRSpCodeBar::~TQRSpCodeBar()
    {
     delete m_StBarCode;
    }
    //---------------------------------------------------------------------------
     
    void __fastcall TQRSpCodeBar::Paint()
    {
     //Ajout de l'image surle QR
     m_StBarCode->PaintToCanvas(this->Canvas, this->ClientRect);
     //Appel de paint de qrimage::paint();
     TQRImage::Paint();
    }
     
    void __fastcall TQRSpCodeBar::Print(int OfsX,int OfsY)
    {
     //Ajout de l'image surle QR
     m_StBarCode->PaintToCanvas(this->Canvas, this->ClientRect);
     //Appel de paint de qrimage::paint();
     double CodeLeft, CodeTop, CodeHeight;
     int PixelsPerInchX, PixelsPerInchY;
     
     PixelsPerInchX = GetDeviceCaps(this->ParentReport->QRPrinter->Canvas->Handle, LOGPIXELSX);
     PixelsPerInchY = GetDeviceCaps(this->ParentReport->QRPrinter->Canvas->Handle, LOGPIXELSY);
     
     CodeLeft  = this->ParentReport->QRPrinter->XPos(OfsX + this->Size->Left) * (1 / (long double)PixelsPerInchX);
     CodeTop  = this->ParentReport->QRPrinter->YPos(OfsY + this->Size->Top)  * (1 / (long double)PixelsPerInchY);
     CodeHeight  = this->ParentReport->QRPrinter->YPos(OfsY + this->Size->Top + this->Size->Height) * (1 / (long double)PixelsPerInchY) - CodeTop;
     
     m_StBarCode->PaintToCanvasSize(this->ParentReport->QRPrinter->Canvas, CodeLeft, CodeTop, CodeHeight);
    }
     
     
    namespace Qrspcodebar_vw
    {
     void __fastcall PACKAGE Register()
     {
      TComponentClass classes[1] = {__classid(TQRSpCodeBar)};
      RegisterComponents("TEST", classes, 0);
     }
    }
    //---------------------------------------------------------------------------
    Petit début de piste, il semble que si je désactive les packages :
    TurboPack SysTools CBuilder Designtime package
    TurboPack SysTools CBuilder DB Designtime package

    Nom : GsRdN57TdzuWw2kUHxAvpGBmkA2ktuIOZgXDLGb5VRsvARbQMISrR5n0PbkHhc1H-sans-titre3.png
Affichages : 115
Taille : 30,9 Ko

    L'installation se passe bien, mais à l'utilisation (dans un projet qui demande un StBarCode donc où je ne peut pas désactiver les package en question, ... encore que ... à tester ... mais je ne suis pas certain que la BONNE solution soit là :/) le message revient...

    J'ai déjà passé BEAUCOUP d'heures sur ce problème et je n'avance pas d'un pouce, si qq'un avait une solution ça serais mon sauveur ^^

    Amicalement
    Polack77

    PS :
    Juste histoire d'être transparent j'ai déjà posé cette question sur un autre forum mais je n'ai pas reçu de réponse pour le moment (je posterais bien sur la réponse des deux cotés si/quand tout sera résolu ). Et ce composant n'est pas vraiment de moi à la base je n'ai fait que reprendre l'équivalent écrit par un autre en Pascal

  2. #2
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Heeeeeeee J'ai "résolu" mon problème...

    Tout du moins j'ai trouvé comme faire fonctionner le truc sur mon PC (aucune idée de la réalité des choses)

    J'avais (et mon problème de base était sans doute là) inclue un dossier dans les fichiers à inclure de mon projet pour que le compilo trouve le fichier StBarC.Obj

    J'ai supprimer ce dossier d'inclusion (erreur de compil StBarC.obj introuvable)

    J'ai :
    - mis en commentaire tout mon code de mon composant
    - ajouter un nouveau composant à mon projet qui hérite cette fois de StBarC.
    - compilation (génération d'un fichier StBarC.Obj dans le dossier de compilation, cool)
    - Passage en commentaire de l'ensemble du code contenu dans ce nouveau composant
    - réactivation du code de mon 1er composant
    - compilation / installation
    - plus de problème

    Si qu'un à une solution moins bidouille je suis preneur

  3. #3
    Nouveau membre du Club
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2007
    Messages
    35
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2007
    Messages : 35
    Points : 27
    Points
    27
    Par défaut
    Bon nouveau test aujourd'hui, et je conserve cette nouvelle solution pour le moment (un collègue cherche autre pistes) :

    Je crée un composant qui hérite du StCodeBar et ne fait rien de plus (en gros je crée un composant avec l'interface et basta).
    J'inclue le fichier .h de ce nouveau composant dans mon composant qui hérite du Q.R. et j'utilise cette nouvelle classe et non StBarCode directement (pour l'exposer & l'utiliser).

    Et pouf, plus de problème, tout ce passe bien.

    Bon encore une fois j'ai trouvé une solution à un problème de link sans rien y comprendre... C'est triste quand même...

    Si quelqu'un connais un bon cours/tuto sur le link ça me serait utile je pense xD

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

Discussions similaires

  1. Erreur d'installation des composant TMSUnicode
    Par dan_lizhot dans le forum Débuter
    Réponses: 0
    Dernier message: 10/02/2008, 14h41

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