Api NetMessageBufferSend et type wchar_t ... [C++ Builder] - Programmation
Marsh Posté le 01-03-2002 à 10:36:16
wchar c'est pour l'unicode, 16bits par caractères
char c'est 8bits
et :
b[] = {'s', 'a', 'l', 'u', 't'};
c'est pas une chaîne hein ! c'est juste un tableau de caractères. Pour avoir une chaine valide faut faire
b[] = {'s', 'a', 'l', 'u', 't', 0};
ou plus simplement
b[] = "salut";
mais ca je sais pas si ca passe avec le wchar
[jfdsdjhfuetppo]--Message édité par antp--[/jfdsdjhfuetppo]
Marsh Posté le 02-03-2002 à 09:38:36
antp a écrit a écrit : wchar c'est pour l'unicode, 16bits par caractères char c'est 8bits et : b[] = {'s', 'a', 'l', 'u', 't'}; c'est pas une chaîne hein ! |
Oui je sais bien que c'est pas une chaîne ;-)
Pour l'API, pas de réponse ?
Marsh Posté le 02-03-2002 à 11:31:03
bhen je connais pas la fonction
mais le message d'erreur est clair : il veut une chaine de char et tu lui balance un tableau de wchar
Marsh Posté le 02-03-2002 à 11:39:14
antp a écrit a écrit : bhen je connais pas la fonction mais le message d'erreur est clair : il veut une chaine de char et tu lui balance un tableau de wchar |
Mais quand je lui balance des char *, il me reclame des w_char !!!!!!!!!
Marsh Posté le 02-03-2002 à 15:07:02
Peut être qu'un cast résouderait le problème. Mais je suis sur de rien !
Marsh Posté le 02-03-2002 à 17:51:58
antsite a écrit a écrit : Peut être qu'un cast résouderait le problème. Mais je suis sur de rien ! |
Salut,
Non je n'ai pas casté, il suffisait de faire :
wchar_t dest[] = {'o', 'r', 'd', 'i', '\0'};
wchar_t expe[] = {'J', 'U', 'J', 'U', '\0'};
____________
Par contre pour l'avant dernier paramètre, il demande un :
Pointer to a buffer of message text.
KeZeKsA ??? C'est koi un buffer (je sais très précisément)
Merci de votre aide
Si je fais :
char * msg = "salut";
NetMessageBufferSend(NULL, dest, expe, msg, sizeof(msg));
C'est pas bon ça renvoie des "??"
Marsh Posté le 02-03-2002 à 20:23:16
pourquoi tu te fatigues a mettre les chaines caractère par caractère, c'est quand même plus pratique entre " "...
Marsh Posté le 02-03-2002 à 21:28:12
sous vc++ (au moins), de la même manière que tu peux faire
char* str = "hello"
tu peux faire pour l'unicode :
LPCWSTR str = L"hello";
Marsh Posté le 02-03-2002 à 22:45:35
youdontcare a écrit a écrit : sous vc++ (au moins), de la même manière que tu peux faire char* str = "hello" tu peux faire pour l'unicode : LPCWSTR str = L"hello"; |
youdontcare >> oui mais bon je suis pas sous VC++, et pôôô
envie :-(
antp >> en wchar_t, je suis obligé (enfin, je crois) d'initialiser cara par cara. puis bon c'est pas le pb !!!
SVP !!!
Marsh Posté le 02-03-2002 à 23:41:11
youdontcare a écrit a écrit : sous vc++ (au moins), de la même manière que tu peux faire char* str = "hello" tu peux faire pour l'unicode : LPCWSTR str = L"hello"; |
bhen sous C++Builder aussi il me semble
Marsh Posté le 01-03-2002 à 09:56:57
Bonjour,
Déjà qu'est-ce exactement que le type wchar_t par rapport à char...
Ensuite pour déclarer une chaîne en wchar_t, je tape :
wchar_t a[] = {'6', '1'}, b[] = {'s', 'a', 'l', 'u', 't'};
Puis je veux utiliser l'API du titre de ce topic :
je fais #include <lm.h> //déjà dans l'aide de NetMessageBufferSend, ils disaient lmmsg.h, ça marchait pas, j'ai du voir MSDN sur le net ...
ensuite :
NetMessageBufferSend(NULL, a, NULL, b, sizeof(b));
mais le compilo break et dit :
Cannot convert 'wchar_t *' to 'unsigned char *'
puis
Type mismatch in parameter 'buf' (wanted 'unsigned char *', got 'wchar_t *'
Merci de votre aide
---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com