Retour d'une AnsiString (code valable ?)

[Résolu]
Signaler
Messages postés
6
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
10 juin 2008
-
Messages postés
6
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
10 juin 2008
-
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

Messages postés
3212
Date d'inscription
lundi 7 novembre 2005
Statut
Membre
Dernière intervention
16 février 2009
15
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++ (@++)<!--
Messages postés
6
Date d'inscription
samedi 22 septembre 2007
Statut
Membre
Dernière intervention
10 juin 2008

Merci pour cette réponse rapide ;)