Retourner un const wxString[] ! [Résolu]

georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 28 juil. 2005 à 16:20 - Dernière réponse : georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention
- 31 juil. 2005 à 11:13
Voilà mon problème :



Pour alimenter les différents éléments qu'un wxCombobox devra afficher, j'ai besoin d'indiquer à ce dernier un wxString[].



Pour tester ce menu déroulant, j'ai définit :

const wxString choix[] = {"bonjour" };



puis je charge le menu déroulant :

cb_mods = new wxComboBox(this, ID_MODS,"" ,wxPoint(140,150), wxSize(200, 10),

1, choix, wxCB_READONLY, wxDefaultValidator, "listbox") ;



Et ça fonctionne Le menu s'alimente bien avec la variable choix que je lui donne en paramètres.

Seulement j'aimerais construire un fonction qui me renvoit un wxString
car j'ai pas mal de choses à faire pour alimenter le menu déroulant.



Je pensais que cette fonction pourrait suffire :

const wxString[] choix()

{

wxString liste[] = {"bonjour!"};

return liste;

}

Et je pensais charger simplement le menu déroulant comme ça :

cb_mods = new wxComboBox(this, ID_MODS,"" ,wxPoint(140,150), wxSize(200, 10),

1, choix(), wxCB_READONLY, wxDefaultValidator, "listbox") ;



Mais vous vous en doutez ça ne marche pas !



Je vous serez vraiment reconnaissant pour votre aide !!!
Afficher la suite 

Votre réponse

12 réponses

Meilleure réponse
bathof 28 Messages postés jeudi 5 mai 2005Date d'inscription 31 janvier 2009 Dernière intervention - 29 juil. 2005 à 12:52
3
Merci
Salut,



Essai de remplacer



wxString* templiste = new wxString [ strlen(liste) + 1 ];

par

wxString* templiste = new wxString [ (sizeof(wxString) + sizeof(templiste)) ];



et



strcpy( templiste, liste )



par



memcpy( temppiste, liste, sizeof(liste) )



Bonne chance et a +.

Merci bathof 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de bathof
cs_LordBob 2865 Messages postés samedi 2 novembre 2002Date d'inscription 11 mai 2009 Dernière intervention - 28 juil. 2005 à 16:49
0
Merci
et si tu fais tout simplement:

wxString[] choix()
{
wxString liste[] = {"bonjour!"};
return liste;
}
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Commenter la réponse de cs_LordBob
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 28 juil. 2005 à 17:59
0
Merci
Non pas mieux ; on dirait que le compilo n'aime pas les crochets après wxString...



122 C:\prog\Devcpp\Dev-Cpp\sources\g3M\main.h expected unqualified-id before '[' token
Commenter la réponse de georgeduke
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 28 juil. 2005 à 18:31
0
Merci
Un petit coups de pouce pour arriver enfin à retourner ce wxString[] correctement ?
Commenter la réponse de georgeduke
cs_LordBob 2865 Messages postés samedi 2 novembre 2002Date d'inscription 11 mai 2009 Dernière intervention - 28 juil. 2005 à 20:03
0
Merci
peut etre comme ceci:
wxString* choix()
{
wxString liste[] = {"bonjour!"};
return liste;
}

en remplacent le tableau par un pointeur ?
Bob...

"La chance accorde ses faveur aux esprits avertis..."
Commenter la réponse de cs_LordBob
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 28 juil. 2005 à 21:15
0
Merci
Ce n'est toujours par la bonne méthode :-(



Ca me dit qu'il n'arrive pas à convertir un wxstring en wxstring* !



C'est bête de buter là-dessus ; quelqu'un a une idée ? ça doit être courant de genre de méthode...
Commenter la réponse de georgeduke
bathof 28 Messages postés jeudi 5 mai 2005Date d'inscription 31 janvier 2009 Dernière intervention - 28 juil. 2005 à 21:27
0
Merci
Salut,



Je connais pas cette librairie, mais je pense que dans cette situation
si tu retournes un pointeur tu auras des problèmes car la variable
"wsString liste" que tu crées dans ta fonction est local pour ta
fonction, donc une fois la fonction executée la variable n'existe plus,
donc je te conseils de la creer dynamiquement comme cela.



Ex, (c++) :



wxString* choix()

{

wxString liste[] = {"Bonjour!"};



wxString* templiste = new char [ strlen(liste) + 1 ];

strcpy( templiste, liste );



return templiste;

}



Attention quand tu récupères ta variable n'oublie pas de l'effacer quand tu ne l'utilises plus.



ex (C++):



int main()

{

wxString* liste = choix();



delete [] liste; // efface ton tableau

return 0;

}
Commenter la réponse de bathof
bathof 28 Messages postés jeudi 5 mai 2005Date d'inscription 31 janvier 2009 Dernière intervention - 28 juil. 2005 à 21:31
0
Merci
Oups,



une erreur c'est glissé dans mon code c'est pas wxString*
templiste = new char [ strlen(liste) + 1 ]; mais wxString*
templiste = new wxString [ strlen(liste) + 1 ];



Bonne chance et a +.
Commenter la réponse de bathof
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 28 juil. 2005 à 21:37
0
Merci
Je regarde ça ce soir, merci dans tous les cas de m'avoir répondu !!
Je vous tiens au courant car je penses que ça peut peut-être aider d'autres personnes !
Commenter la réponse de georgeduke
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 29 juil. 2005 à 08:01
0
Merci
Ca ne fonctionne toujours pas ! Je vous présente ici les infos du compilo !!


wxString* choix()

{

wxString liste[] = {"Bonjour!"};

wxString* templiste = new wxString [ strlen(liste) + 1 ];
-> cannot convert `wxString*' to `const char*' for argument `1' to
`size_t






strlen(const char*)'



strcpy( templiste, liste ); -> cannot convert `wxString*' to `char*' for argument `1' to `char* strcpy(char*, const char*)'

return templiste;

}

Une idée ?
Commenter la réponse de georgeduke
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 29 juil. 2005 à 09:46
0
Merci
Bon ben faute de temps j'abandonne la mise en place de cette fonction,
je vais coder sans ça sera pas propre mais tant pis ; Si vous avez la
solution ça serait bien évidemment génial...

Je ne trouve pas d'info sur wxString, mais si j'ai bien compris la langue de shakespeare elle se comporte comme std::String...

Si ça peut aider...
Commenter la réponse de georgeduke
georgeduke 171 Messages postés dimanche 6 février 2005Date d'inscription 13 avril 2007 Dernière intervention - 31 juil. 2005 à 11:13
0
Merci
Oui ça marche merci !!
Commenter la réponse de georgeduke

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.