Bonjour, je suis en train de développer un petit jeux réseau. Je voudrais
transferer des structure de données via le winsock.
Dans ma structure y a plein de type différents boolean / byte / long .....
donc pour faire ca j'ai commencer par généré un string avec un copymemory de
ma structure ... mais hélas ... lorsque je recopie mon string sur ma
structure je perd des informations ... certaine valeur sont remplacé par un
code "?" soit le numéro 63 ...
quelqu'un peut m'expliquer ?
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
Zoury
Salut Mathieu! :)
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la structure avec copymemory) ? ça semble être un problème d'encodage de texte (du fait que tu passes par une chaine) 2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de Byte..
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2eb2d$0$11225$
Bonjour, je suis en train de développer un petit jeux réseau. Je voudrais transferer des structure de données via le winsock. Dans ma structure y a plein de type différents boolean / byte / long ..... donc pour faire ca j'ai commencer par généré un string avec un copymemory
de
ma structure ... mais hélas ... lorsque je recopie mon string sur ma structure je perd des informations ... certaine valeur sont remplacé par
un
code "?" soit le numéro 63 ... quelqu'un peut m'expliquer ?
Salut Mathieu! :)
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la
structure avec copymemory) ? ça semble être un problème d'encodage de texte
(du fait que tu passes par une chaine)
2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de
Byte..
--
Cordialement
Yanick
MVP pour Visual Basic
"Mathieu JAY" <finelatutum.e@laposte.net> a écrit dans le message de
news:41c2eb2d$0$11225$8fcfb975@news.wanadoo.fr...
Bonjour, je suis en train de développer un petit jeux réseau. Je voudrais
transferer des structure de données via le winsock.
Dans ma structure y a plein de type différents boolean / byte / long .....
donc pour faire ca j'ai commencer par généré un string avec un copymemory
de
ma structure ... mais hélas ... lorsque je recopie mon string sur ma
structure je perd des informations ... certaine valeur sont remplacé par
un
code "?" soit le numéro 63 ...
quelqu'un peut m'expliquer ?
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la structure avec copymemory) ? ça semble être un problème d'encodage de texte (du fait que tu passes par une chaine) 2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de Byte..
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2eb2d$0$11225$
Bonjour, je suis en train de développer un petit jeux réseau. Je voudrais transferer des structure de données via le winsock. Dans ma structure y a plein de type différents boolean / byte / long ..... donc pour faire ca j'ai commencer par généré un string avec un copymemory
de
ma structure ... mais hélas ... lorsque je recopie mon string sur ma structure je perd des informations ... certaine valeur sont remplacé par
un
code "?" soit le numéro 63 ... quelqu'un peut m'expliquer ?
Zoury
> On peut transferer un tableau de byte avec un winsock ?
yep! :O)
> On peut transferer un tableau de byte avec un winsock ?
> On peut transferer un tableau de byte avec un winsock ?
yep! :O)
Zoury
reSalut!
passer une string pourrait fonctionner. c'est le manière d'appeler la fonction copymemory qui cause le résultat que tu obtiens..
déclare CopyMemory comme suit : '*** Declare Sub CopyMemory _ Lib "kernel32" _ Alias "RtlMoveMemory" _ ( _ ByVal pDst As String, ByRef pSrc As Long, _ ByVal ByteLen As Long _ ) '***
et utilise le comme ceci : '*** Call CopyMemory(StringCOM, Comm, LenB(Comm)) '***
Ainsi, VB passe la version ANSI de la chaine à l'api copymemory et non la version Unicode comme tu fesais (StrPtr() renvoit le pointeur de la version Unicode d'une chaine). Regarde ce lien pour plus de détail : http://www.mvps.org/vb/tips/varptr.htm
et regarde ce lien pour passer par un byte() http://groups.google.com/groups?threadmëZR6o%23TEHA.3476%40tk2msftngp13.phx.gbl
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2f534$0$10229$
et voici le code ...
Public Type ControlJ Action As Long Select As Long Haut As Long Bas As Long Gauche As Long Droite As Long End Type
Public Type COM_Joueur Char(1 To 20) As Long Ctrl As ControlJ Enable As Long Ready As Long ID As Long Score As Long Skin As Long PosX As Long PosY As Long VitX As Long VitY As Long Ang As Long End Type
Public Type COM_Missille IDJoueur As Long Skin As Long PosX As Long PosY As Long Ang As Long End Type
Public Type COM_Decor ID As Long TypeColision As Long Gravite As Long Skin As Long PosX As Long PosY As Long End Type
Public Type COM Joueur(1 To 8) As COM_Joueur Missille(1 To 80) As COM_Missille Decor(1 To 100) As COM_Decor End Type
passer une string pourrait fonctionner. c'est le manière d'appeler la
fonction copymemory qui cause le résultat que tu obtiens..
déclare CopyMemory comme suit :
'***
Declare Sub CopyMemory _
Lib "kernel32" _
Alias "RtlMoveMemory" _
( _
ByVal pDst As String,
ByRef pSrc As Long, _
ByVal ByteLen As Long _
)
'***
et utilise le comme ceci :
'***
Call CopyMemory(StringCOM, Comm, LenB(Comm))
'***
Ainsi, VB passe la version ANSI de la chaine à l'api copymemory et non la
version Unicode comme tu fesais (StrPtr() renvoit le pointeur de la version
Unicode d'une chaine). Regarde ce lien pour plus de détail :
http://www.mvps.org/vb/tips/varptr.htm
et regarde ce lien pour passer par un byte()
http://groups.google.com/groups?threadmëZR6o%23TEHA.3476%40tk2msftngp13.phx.gbl
--
Cordialement
Yanick
MVP pour Visual Basic
"Mathieu JAY" <finelatutum.e@laposte.net> a écrit dans le message de
news:41c2f534$0$10229$8fcfb975@news.wanadoo.fr...
et voici le code ...
Public Type ControlJ
Action As Long
Select As Long
Haut As Long
Bas As Long
Gauche As Long
Droite As Long
End Type
Public Type COM_Joueur
Char(1 To 20) As Long
Ctrl As ControlJ
Enable As Long
Ready As Long
ID As Long
Score As Long
Skin As Long
PosX As Long
PosY As Long
VitX As Long
VitY As Long
Ang As Long
End Type
Public Type COM_Missille
IDJoueur As Long
Skin As Long
PosX As Long
PosY As Long
Ang As Long
End Type
Public Type COM_Decor
ID As Long
TypeColision As Long
Gravite As Long
Skin As Long
PosX As Long
PosY As Long
End Type
Public Type COM
Joueur(1 To 8) As COM_Joueur
Missille(1 To 80) As COM_Missille
Decor(1 To 100) As COM_Decor
End Type
passer une string pourrait fonctionner. c'est le manière d'appeler la fonction copymemory qui cause le résultat que tu obtiens..
déclare CopyMemory comme suit : '*** Declare Sub CopyMemory _ Lib "kernel32" _ Alias "RtlMoveMemory" _ ( _ ByVal pDst As String, ByRef pSrc As Long, _ ByVal ByteLen As Long _ ) '***
et utilise le comme ceci : '*** Call CopyMemory(StringCOM, Comm, LenB(Comm)) '***
Ainsi, VB passe la version ANSI de la chaine à l'api copymemory et non la version Unicode comme tu fesais (StrPtr() renvoit le pointeur de la version Unicode d'une chaine). Regarde ce lien pour plus de détail : http://www.mvps.org/vb/tips/varptr.htm
et regarde ce lien pour passer par un byte() http://groups.google.com/groups?threadmëZR6o%23TEHA.3476%40tk2msftngp13.phx.gbl
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2f534$0$10229$
et voici le code ...
Public Type ControlJ Action As Long Select As Long Haut As Long Bas As Long Gauche As Long Droite As Long End Type
Public Type COM_Joueur Char(1 To 20) As Long Ctrl As ControlJ Enable As Long Ready As Long ID As Long Score As Long Skin As Long PosX As Long PosY As Long VitX As Long VitY As Long Ang As Long End Type
Public Type COM_Missille IDJoueur As Long Skin As Long PosX As Long PosY As Long Ang As Long End Type
Public Type COM_Decor ID As Long TypeColision As Long Gravite As Long Skin As Long PosX As Long PosY As Long End Type
Public Type COM Joueur(1 To 8) As COM_Joueur Missille(1 To 80) As COM_Missille Decor(1 To 100) As COM_Decor End Type
On peut transferer un tableau de byte avec un winsock ?
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:
Salut Mathieu! :)
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la structure avec copymemory) ? ça semble être un problème d'encodage de
texte
(du fait que tu passes par une chaine) 2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de Byte..
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2eb2d$0$11225$ > Bonjour, je suis en train de développer un petit jeux réseau. Je
voudrais
> transferer des structure de données via le winsock. > Dans ma structure y a plein de type différents boolean / byte / long
.....
> donc pour faire ca j'ai commencer par généré un string avec un
copymemory
de > ma structure ... mais hélas ... lorsque je recopie mon string sur ma > structure je perd des informations ... certaine valeur sont remplacé par un > code "?" soit le numéro 63 ... > quelqu'un peut m'expliquer ? > >
On peut transferer un tableau de byte avec un winsock ?
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de
news:eaHeneE5EHA.3648@TK2MSFTNGP11.phx.gbl...
Salut Mathieu! :)
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la
structure avec copymemory) ? ça semble être un problème d'encodage de
texte
(du fait que tu passes par une chaine)
2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de
Byte..
--
Cordialement
Yanick
MVP pour Visual Basic
"Mathieu JAY" <finelatutum.e@laposte.net> a écrit dans le message de
news:41c2eb2d$0$11225$8fcfb975@news.wanadoo.fr...
> Bonjour, je suis en train de développer un petit jeux réseau. Je
voudrais
> transferer des structure de données via le winsock.
> Dans ma structure y a plein de type différents boolean / byte / long
.....
> donc pour faire ca j'ai commencer par généré un string avec un
copymemory
de
> ma structure ... mais hélas ... lorsque je recopie mon string sur ma
> structure je perd des informations ... certaine valeur sont remplacé par
un
> code "?" soit le numéro 63 ...
> quelqu'un peut m'expliquer ?
>
>
On peut transferer un tableau de byte avec un winsock ?
"Zoury" <yanick_lefebvre at hotmail dot com> a écrit dans le message de news:
Salut Mathieu! :)
1. Peux-tu nous montrer ton code (seulement le bout de conversion de la structure avec copymemory) ? ça semble être un problème d'encodage de
texte
(du fait que tu passes par une chaine) 2. Je te recommanderais plutôt de copier ta strucutre dans un tableau de Byte..
-- Cordialement Yanick MVP pour Visual Basic
"Mathieu JAY" a écrit dans le message de news:41c2eb2d$0$11225$ > Bonjour, je suis en train de développer un petit jeux réseau. Je
voudrais
> transferer des structure de données via le winsock. > Dans ma structure y a plein de type différents boolean / byte / long
.....
> donc pour faire ca j'ai commencer par généré un string avec un
copymemory
de > ma structure ... mais hélas ... lorsque je recopie mon string sur ma > structure je perd des informations ... certaine valeur sont remplacé par un > code "?" soit le numéro 63 ... > quelqu'un peut m'expliquer ? > >
Mathieu JAY
et voici le code ...
Public Type ControlJ Action As Long Select As Long Haut As Long Bas As Long Gauche As Long Droite As Long End Type
Public Type COM_Joueur Char(1 To 20) As Long Ctrl As ControlJ Enable As Long Ready As Long ID As Long Score As Long Skin As Long PosX As Long PosY As Long VitX As Long VitY As Long Ang As Long End Type
Public Type COM_Missille IDJoueur As Long Skin As Long PosX As Long PosY As Long Ang As Long End Type
Public Type COM_Decor ID As Long TypeColision As Long Gravite As Long Skin As Long PosX As Long PosY As Long End Type
Public Type COM Joueur(1 To 8) As COM_Joueur Missille(1 To 80) As COM_Missille Decor(1 To 100) As COM_Decor End Type
Public Type ControlJ
Action As Long
Select As Long
Haut As Long
Bas As Long
Gauche As Long
Droite As Long
End Type
Public Type COM_Joueur
Char(1 To 20) As Long
Ctrl As ControlJ
Enable As Long
Ready As Long
ID As Long
Score As Long
Skin As Long
PosX As Long
PosY As Long
VitX As Long
VitY As Long
Ang As Long
End Type
Public Type COM_Missille
IDJoueur As Long
Skin As Long
PosX As Long
PosY As Long
Ang As Long
End Type
Public Type COM_Decor
ID As Long
TypeColision As Long
Gravite As Long
Skin As Long
PosX As Long
PosY As Long
End Type
Public Type COM
Joueur(1 To 8) As COM_Joueur
Missille(1 To 80) As COM_Missille
Decor(1 To 100) As COM_Decor
End Type
Public Type ControlJ Action As Long Select As Long Haut As Long Bas As Long Gauche As Long Droite As Long End Type
Public Type COM_Joueur Char(1 To 20) As Long Ctrl As ControlJ Enable As Long Ready As Long ID As Long Score As Long Skin As Long PosX As Long PosY As Long VitX As Long VitY As Long Ang As Long End Type
Public Type COM_Missille IDJoueur As Long Skin As Long PosX As Long PosY As Long Ang As Long End Type
Public Type COM_Decor ID As Long TypeColision As Long Gravite As Long Skin As Long PosX As Long PosY As Long End Type
Public Type COM Joueur(1 To 8) As COM_Joueur Missille(1 To 80) As COM_Missille Decor(1 To 100) As COM_Decor End Type