KiKoMaSo
Messages postés6Date d'inscriptionsamedi 22 septembre 2007StatutMembreDernière intervention10 juin 2008
-
16 mars 2008 à 21:11
KiKoMaSo
Messages postés6Date d'inscriptionsamedi 22 septembre 2007StatutMembreDernière intervention10 juin 2008
-
17 mars 2008 à 00:12
Bonjour à tous.
Voilà, j'ai une application principale qui doit envoyer une ansistring vers une application pour PDA.
Dans l'application principale j'ai 3 .cpp dont: ServeurTCP.cpp et WaitFile.cpp.
Dans ServeurTCP.cpp j'effectu un test puis envoi l'ansistring au PDA:
if(Test= ="P:"){ // Si le PDA demande la file d'attente
AnsiString PDA1;
PDA1 = WaitFile1->PrintPDA();
Socket->SendText(PDA1);
}
Voici ce qui se passe dans PrintPDA (WaitFile.cpp):
AnsiString WaitFile :: PrintPDA(void){
int i = 0;
AnsiString PDA;
...........
..:: Il y a du code mais je l'ai enlevé car pas important pour la question ::..
...........
return PDA;
}
Voici comment est déclaré Print dans mon WaitFile.h:
AnsiString PrintPDA(void);
Tout ça fonctionne mais j'aimerai savoir si ce qui est en rouge est valable car j'ai eu un peu de mal pour retourner mon ansistring PDA.
Je suis loin d'être très bon en programmation et j'ai pas trop l'habitude de jongler avec les classes.
Voilà pourquoi je fais appel à vos connaissanes.
SAKingdom
Messages postés3212Date d'inscriptionlundi 7 novembre 2005StatutMembreDernière intervention16 février 200915 16 mars 2008 à 21:55
Oui c'est valide. Cependant, cette manière de procéder génèrera un (ou plus, je ne sais plus trop) appel au constructeur de copie de AnsiString à chaque appel de la méthode PrintPDA. Pour éviter cela, on passera la chaine que l'on souhaite retourner en paramètre (via une référence).
void WaitFile::PrintPDA(AnsiString &PDA) {
// On travail direct sur le paramètre
}
Puis on appel comme ça
WaitFile1->PrintPDA(PDA1);
Pour WaitFile1->PrintPDA()
si WaitFile1 est un pointeur sur une classe WaitFile et qu'il a été correctement instancié, il ne devrait pas y avoir de problème. Ne pas oublier le delete.