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 nonlol.
voila mon cas :
j'ai une classe TCSA qui est dans un dll :
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
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; };
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
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;
Mon constructeur de classe CSA est le suivant :
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
4
5
6
7
8 __fastcall TCSA::TCSA(TComponent* Owner) { mpInfosCSA = new TFichier; mpComposantCSA = new TComposant; mpVariantes = new TStringList; mpPartName = new TStringList; }
j'ai donc acces a tous ce qui est public de chaque classe.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 XML = new TXML(this->Owner); CSA = new TCSA(this->Owner);
Je recherche mes variantes (sans aucun souci)
ensuite j'ai essyé de les affiché en fesant un ShowMessage ca marche comme il faut.
Code : Sélectionner tout - Visualiser dans une fenêtre à part CSA->RechercheVariantes(CheminCSALblEd->Text);
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 :
il me compile sans probleme mais apres jai des erreurde linkage.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 XML->SetVariantes((AnsiString)XML->GetNom(),(CSA->mpVariantes))
en fesant comme ça ( ce que je pensais la bonne methode) :
Il em dit que je donne un TStringList ** à la place d'un TstringList *
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 XML->SetVariantes((AnsiString)XML->GetNom(),&(CSA->mpVariantes))
Mais le & permet bien de donné l'adresse non ?
Merci de m'aider les pointeurs me rendent fou !
Partager