Bonjour =E0 tous,
je gal=E8re un ptit peu pour faire un truc qui me paraissait =E0 la base
tout bete, enfait voil=E0 :
j'utilise une DLL en C++ qui poss=E8de une fonction ayant pour param=E8tre
une r=E9f=E9rence vers une chaine de type wchar_t.
Si j'ai bien compris, le type wchar_t correspond =E0 un tableau de
caract=E8re unicode.
Supposons que la fonction ecrite dans la DLL ressemble =E0 ca :
sChaineretour est une cha=EEne UNICODE
API(dll,"TestRetourCh",&sChaineretour)
Info(sChaineretour)
Mais voil=E0 je me doute bien que ce n'est pas si facile! enfait, j'en
suis sur puisque, si cette technique marche avec les entiers, l=E0,
c'est un =E9chec total :)
J'ai essayer ChaineRecupere(), Transfert() et ce , sans succ=E8s, je m'y
suis peut etre mal pris..
S'agit t'il du bon type ?
Comment faire pour r=E9cup=E9rer mon wchar_t ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
patrice
Olivier a écrit :
Bonjour à tous, je galère un ptit peu pour faire un truc qui me paraissait à la base tout bete, enfait voilà :
j'utilise une DLL en C++ qui possède une fonction ayant pour paramètre une référence vers une chaine de type wchar_t. Si j'ai bien compris, le type wchar_t correspond à un tableau de caractère unicode.
Supposons que la fonction ecrite dans la DLL ressemble à ca :
sChaineretour est une chaîne UNICODE API(dll,"TestRetourCh",&sChaineretour) Info(sChaineretour)
Mais voilà je me doute bien que ce n'est pas si facile! enfait, j'en suis sur puisque, si cette technique marche avec les entiers, là, c'est un échec total :)
J'ai essayer ChaineRecupere(), Transfert() et ce , sans succès, je m'y suis peut etre mal pris..
S'agit t'il du bon type ? Comment faire pour récupérer mon wchar_t ?
A l'aide !
Merci à tous Olivier
c'est pas le bon type, l'appel API décrit la haut correspond a fun(char *) et non fun(char *&)
il faut passer une référence vers un pointeur et non un pointeur.
j'avoue que je connais pas la différence sur la pile entre les 2. en tout cas, en C pure, c'est pas équivalent. faut ptet essayer de considérer que le & est une astuce pour éviter l'indirection.
on aurait alors : > void TestRetourCh(wchar_t* &ch){ > ch = L"coucou"; > return; > } qui serait (peut être) équivalent à void TestRetourCh(wchar_t* *ch){ (*ch) = L"coucou"; return; } ptet essayer :
PtrRetour est un entier sans signe sur 4 octets API(dll,"TestRetourCh",&PtrRetour) PtrRetour contient un pointeur vers L"COUCOU" donc essayer un chainerecupere avec PtrRetour
Olivier a écrit :
Bonjour à tous,
je galère un ptit peu pour faire un truc qui me paraissait à la base
tout bete, enfait voilà :
j'utilise une DLL en C++ qui possède une fonction ayant pour paramètre
une référence vers une chaine de type wchar_t.
Si j'ai bien compris, le type wchar_t correspond à un tableau de
caractère unicode.
Supposons que la fonction ecrite dans la DLL ressemble à ca :
sChaineretour est une chaîne UNICODE
API(dll,"TestRetourCh",&sChaineretour)
Info(sChaineretour)
Mais voilà je me doute bien que ce n'est pas si facile! enfait, j'en
suis sur puisque, si cette technique marche avec les entiers, là,
c'est un échec total :)
J'ai essayer ChaineRecupere(), Transfert() et ce , sans succès, je m'y
suis peut etre mal pris..
S'agit t'il du bon type ?
Comment faire pour récupérer mon wchar_t ?
A l'aide !
Merci à tous
Olivier
c'est pas le bon type, l'appel API décrit la haut correspond a
fun(char *) et non fun(char *&)
il faut passer une référence vers un pointeur et non un pointeur.
j'avoue que je connais pas la différence sur la pile entre les 2.
en tout cas, en C pure, c'est pas équivalent.
faut ptet essayer de considérer que le & est une astuce pour éviter
l'indirection.
on aurait alors :
> void TestRetourCh(wchar_t* &ch){
> ch = L"coucou";
> return;
> }
qui serait (peut être) équivalent à
void TestRetourCh(wchar_t* *ch){
(*ch) = L"coucou";
return;
}
ptet essayer :
PtrRetour est un entier sans signe sur 4 octets
API(dll,"TestRetourCh",&PtrRetour)
PtrRetour contient un pointeur vers L"COUCOU"
donc essayer un chainerecupere avec PtrRetour
Bonjour à tous, je galère un ptit peu pour faire un truc qui me paraissait à la base tout bete, enfait voilà :
j'utilise une DLL en C++ qui possède une fonction ayant pour paramètre une référence vers une chaine de type wchar_t. Si j'ai bien compris, le type wchar_t correspond à un tableau de caractère unicode.
Supposons que la fonction ecrite dans la DLL ressemble à ca :
sChaineretour est une chaîne UNICODE API(dll,"TestRetourCh",&sChaineretour) Info(sChaineretour)
Mais voilà je me doute bien que ce n'est pas si facile! enfait, j'en suis sur puisque, si cette technique marche avec les entiers, là, c'est un échec total :)
J'ai essayer ChaineRecupere(), Transfert() et ce , sans succès, je m'y suis peut etre mal pris..
S'agit t'il du bon type ? Comment faire pour récupérer mon wchar_t ?
A l'aide !
Merci à tous Olivier
c'est pas le bon type, l'appel API décrit la haut correspond a fun(char *) et non fun(char *&)
il faut passer une référence vers un pointeur et non un pointeur.
j'avoue que je connais pas la différence sur la pile entre les 2. en tout cas, en C pure, c'est pas équivalent. faut ptet essayer de considérer que le & est une astuce pour éviter l'indirection.
on aurait alors : > void TestRetourCh(wchar_t* &ch){ > ch = L"coucou"; > return; > } qui serait (peut être) équivalent à void TestRetourCh(wchar_t* *ch){ (*ch) = L"coucou"; return; } ptet essayer :
PtrRetour est un entier sans signe sur 4 octets API(dll,"TestRetourCh",&PtrRetour) PtrRetour contient un pointeur vers L"COUCOU" donc essayer un chainerecupere avec PtrRetour
Olivier
Merci beaucoup, tu m'enlève une bonne épine du pied :)
PtrsChaineRetour est un entier sans signe sur 4 octets API(dll,"TestRetourCh",&PtrsChaineRetour) Info("Retour UNICODE : " + ChaîneRécupère(PtrsChaineRetour,crAdresseUNICODE))
Ca marche comme sur des roulettes, en espèrant que ce post serve aussi à d'autres personnes!
Merci encore Olivier
Merci beaucoup, tu m'enlève une bonne épine du pied :)
PtrsChaineRetour est un entier sans signe sur 4 octets
API(dll,"TestRetourCh",&PtrsChaineRetour)
Info("Retour UNICODE : " +
ChaîneRécupère(PtrsChaineRetour,crAdresseUNICODE))
Ca marche comme sur des roulettes, en espèrant que ce post serve aussi
à d'autres personnes!
Merci beaucoup, tu m'enlève une bonne épine du pied :)
PtrsChaineRetour est un entier sans signe sur 4 octets API(dll,"TestRetourCh",&PtrsChaineRetour) Info("Retour UNICODE : " + ChaîneRécupère(PtrsChaineRetour,crAdresseUNICODE))
Ca marche comme sur des roulettes, en espèrant que ce post serve aussi à d'autres personnes!