Erreur à l'installation d'un composant "maison" (Builder 10) [Résolu]

Polack77 1096 Messages postés mercredi 22 mars 2006Date d'inscription 13 décembre 2017 Dernière intervention - 7 sept. 2016 à 18:15 - Dernière réponse : Polack77 1096 Messages postés mercredi 22 mars 2006Date d'inscription 13 décembre 2017 Dernière intervention
- 9 sept. 2016 à 14:15
Bonjour,
Je rencontre une erreur à l'installation d'un composant que j'ai crée et je n’arrive pas à m'en sortir. :

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 :
//---------------------------------------------------------------------------
#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
//---------------------------------------------------------------------------


#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);
 }
}
//---------------------------------------------------------------------------


Si il semble que si je désactive les packages :
TurboPack SysTools CBuilder Designtime package
TurboPack SysTools CBuilder DB Designtime package

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) le message revient...

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

Amicalement
Polack77

PS :
Juste histoire d'être transparent j'ai 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
Afficher la suite 

2 réponses

Répondre au sujet
Polack77 1096 Messages postés mercredi 22 mars 2006Date d'inscription 13 décembre 2017 Dernière intervention - 8 sept. 2016 à 11:11
0
Utile
Heeeeeeee 8O 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 ;)
Commenter la réponse de Polack77
Polack77 1096 Messages postés mercredi 22 mars 2006Date d'inscription 13 décembre 2017 Dernière intervention - 9 sept. 2016 à 14:15
0
Utile
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
Commenter la réponse de Polack77

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.