Retour d'une AnsiString (code valable ?)

Résolu
KiKoMaSo Messages postés 6 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 10 juin 2008 - 16 mars 2008 à 21:11
KiKoMaSo Messages postés 6 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 10 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.

Merci pour votre aide future.

2 réponses

SAKingdom Messages postés 3212 Date d'inscription lundi 7 novembre 2005 Statut Membre Dernière intervention 16 février 2009 15
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.

C++ (@++)<!--
3
KiKoMaSo Messages postés 6 Date d'inscription samedi 22 septembre 2007 Statut Membre Dernière intervention 10 juin 2008
17 mars 2008 à 00:12
Merci pour cette réponse rapide ;)
0
Rejoignez-nous