[Debutant]Point sur TStringList
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:
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:
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:
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:
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:
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:
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:
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 !