Bonjour,

je ne comprend pas pourquoi mon code est faux !

c'est une erreur de debutant mais la notion de pointeur, j'ai bcp de mal a l'assimilé. quand je pense l'avoir compris j'ai un exemple qui me montre que non lol.

voila mon cas :

j'ai une classe TCSA qui est dans un dll :

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
 
  IMPORT_EXPORT class TCSA
  {
     public :
    __fastcall TCSA(TComponent* Owner);
    __fastcall ~TCSA();
    char* __fastcall RechercheInfosCSA(AnsiString filenameCSA);
    char* __fastcall RechercheVariantes(AnsiString filenameCSA);
 
    TFichier*    mpInfosCSA;
    TComposant*  mpComposantCSA;
    TStringList* mpVariantes;
    TStringList* mpPartName;
 
    private :
 
    TStringList* mpFichierCSA;
  };
j'ai une autre classe dans la meme dll :

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
 
  IMPORT_EXPORT class TXML
  {
    public :
    __fastcall TXML(TComponent* Owner);
    char* __fastcall CreerFichier(void);
    char* __fastcall SetVersion(AnsiString filenameXML, AnsiString versionCSA, AnsiString versionPRE, AnsiString versionPRO, AnsiString versionIND);
    char* __fastcall SetVariantes(AnsiString filenameXML, TStringList *listvariante);
    char* __fastcall GetNom(void);
 
     private :
 
    char* NomFichierXML;
    TSaveDialog *SaveDialog1;
    TComponent  *mpXMLOwner;
    TStringList *mpContenu;
et j'ai une j'utilise la fonction SetVariantes dont je voudrais passer en parametre Le TstringList* variante de ma classe CSA qui a été rempli prealablement pas ma fonction RechercheVariante de ma classe CSA

Mon constructeur de classe CSA est le suivant :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
 
__fastcall TCSA::TCSA(TComponent* Owner)
{
  mpInfosCSA = new TFichier;
  mpComposantCSA = new TComposant;
  mpVariantes = new TStringList;
  mpPartName = new TStringList;
}
je crée une isntance de chaque classe dans mon programme comme suit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
 
  XML = new TXML(this->Owner);
  CSA = new TCSA(this->Owner);
j'ai donc acces a tous ce qui est public de chaque classe.

Je recherche mes variantes (sans aucun souci)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
CSA->RechercheVariantes(CheminCSALblEd->Text);
ensuite j'ai essyé de les affiché en fesant un ShowMessage ca marche comme il faut.

et c'est la que ca se complique (pour moi):

je fais appel à mon fichier XML qui est comme il faut et je veux donner le TStringList* mpVariantes dans ma classe CSA en parametres.

En fesant comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
XML->SetVariantes((AnsiString)XML->GetNom(),(CSA->mpVariantes))
il me compile sans probleme mais apres jai des erreurde linkage.

en fesant comme ça ( ce que je pensais la bonne methode) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
XML->SetVariantes((AnsiString)XML->GetNom(),&(CSA->mpVariantes))
Il em dit que je donne un TStringList ** à la place d'un TstringList *

Mais le & permet bien de donné l'adresse non ?


Merci de m'aider les pointeurs me rendent fou !