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

Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
- - Dernière réponse : georgeduke
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
- 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
Messages postés
28
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
31 janvier 2009
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 +.

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 108 internautes nous ont dit merci ce mois-ci

Commenter la réponse de bathof
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
0
Merci
Un petit coups de pouce pour arriver enfin à retourner ce wxString[] correctement ?
Commenter la réponse de georgeduke
Messages postés
2865
Date d'inscription
samedi 2 novembre 2002
Statut
Membre
Dernière intervention
11 mai 2009
10
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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
Messages postés
28
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
31 janvier 2009
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
Messages postés
28
Date d'inscription
jeudi 5 mai 2005
Statut
Membre
Dernière intervention
31 janvier 2009
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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
Messages postés
171
Date d'inscription
dimanche 6 février 2005
Statut
Membre
Dernière intervention
13 avril 2007
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.