Page 1 sur 1

[Resolu] Le chr(0) <<NULL>>

Publié : ven. 19/oct./2007 19:02
par yoman64
Salut je souhaite développer une aplication réseau et jusque la pas de probleme, mais maintenant je dois envoyé une chaine qui commence par 4 chr(0) du coup LEN (chaine$) me renvois 0 et ma chaine est vide !?!

Moi qui suis un habituer de VB , le code suivant fonctionne en vb:

Code : Tout sélectionner

Chr(0) & Chr(0) & Chr(0) & Chr(0) & "coucou"
de meme que en PHP

Code : Tout sélectionner

$variable="\xFF\xFF\xFF\xFFCeci est un test"
Fonctionne parfaitement

En remplaçant les & par des + cela devrais fonctionner en purebasic, pourtant non c'est comme si ma chaine était vide ...

Code : Tout sélectionner

Chr(0) + Chr(0) + Chr(0) + Chr(0) + "coucou"

Voici le code que j'aimerais faire fonctionner:

Code : Tout sélectionner

SERVERQUERY_INFO$=Chr(0)+Chr(0)+Chr(0)+Chr(0)+"Ceci est un test"
PokeS(*Buffer,SERVERQUERY_INFO$,Len(SERVERQUERY_INFO$))
SendNetworkData(ConnectionID,*Buffer,Len(SERVERQUERY_INFO$))





Merci de me dire ce que je fais de pas correct :(

Publié : ven. 19/oct./2007 19:38
par venom
petite question bete :D pourquoi commencer par 4 chr(0) ? je en te suis pas .


@++

Publié : ven. 19/oct./2007 19:39
par yoman64
venom a écrit :petite question bete :D pourquoi commencer par 4 chr(0) ? je en te suis pas .


@++
Aucune idée , c'est pas moi qui choisis la syntaxe du protocole hein ;) fauderais demandé a Steam

Publié : ven. 19/oct./2007 19:44
par venom
Steam :? ?


@++

Publié : ven. 19/oct./2007 19:54
par yoman64
venom a écrit :Steam :? ?


@++
Je veux créé un moniteur pour mon serveur Counter strike :)

J'ai trouvé la solution par contre mon serveur répond pas pfff

Alors le probleme c'était qu'une chaine string fini par chr(0) donc ça bloquais, je copie byte par byte les chr(0) en mémoire et ça passe :)

Code : Tout sélectionner

PokeB(*Buffer, 0)
    PokeB(*Buffer+1, 0)
    PokeB(*Buffer+2, 0)
    PokeB(*Buffer+3, 0)

Publié : ven. 19/oct./2007 19:57
par venom
a ok je penser que c'etait pour parler en reseau entre ordinateur j'ai jamais fait pour steam desol je ne connais pas là :? .


@++

Publié : ven. 19/oct./2007 20:04
par yoman64
J'ai tout de meme trouvé la solution :P C'était entierement mon erreur désolé de t'avoir dérangé ça fonctionne parfaitmeent maintenant je m'étais trompé de charactere (je suis naze)


Alors encore merci

@+

Publié : ven. 19/oct./2007 20:05
par venom
mais de rien meme si je ne t'est pas trop avancer :lol: .


@++

Publié : ven. 19/oct./2007 21:32
par yoman64
AU fait tu saurais pas comment faire un timer ? :-/

Je veux un timer pour un refresh a tout les 5 secondes mais je veux pas que cela empeche l'interception des evenements fenetres donc Sleep ou Delay on oubli

Pour le moment j'utilise

Code : Tout sélectionner

Repeat

    If WEvent = #PB_Event_CloseWindow
      MessageRequester("coucou","Au revoir" )
      Quit = 1
    EndIf


If Expected<ElapsedMilliseconds() 

; Alors on execute
Expected=ElapsedMilliseconds()+5000
EndIf





  Until Quit = 1 


Mais selon le gestionnaire de tache l'appli monopolise alors le CPU (ce qui est normal vu chaque test a chaque tour de boucle)

Publié : ven. 19/oct./2007 21:52
par comtois
Un code de NetMaestro

Code : Tout sélectionner

Procedure Pulse(uID, uMsg, dwUser, dw1, dw2)
  Debug "Hello! I was sent the user value of: "+Str(dwUser)
EndProcedure

timeSetEvent_(1000, 0, @Pulse(), 5, #TIME_PERIODIC)

Repeat
  Delay(1)
Until GetAsyncKeyState_(#VK_ESCAPE) & 32768
Par contre si tu as la version démo ce code ne pourra pas fonctionner car il fait appel à des fonctions de l'API windows.

Mais comme j'ai lu que tu voulais acheter PureBasic, ça ne sera bientôt plus un problème pour toi :)

Sinon fais une recherche sur le mot timer ici ou sur le forum anglais ,tu devrais trouver d'autres exemples.

Publié : ven. 19/oct./2007 22:45
par Dr. Dri
yoman64 a écrit :

Code : Tout sélectionner

PokeB(*Buffer, 0)
PokeB(*Buffer+1, 0)
PokeB(*Buffer+2, 0)
PokeB(*Buffer+3, 0)
pour info ca se résume à

Code : Tout sélectionner

PokeL(*Buffer, 0)
Dri

Publié : ven. 19/oct./2007 23:16
par yoman64
En fait cétait pas 0 mais 255 que je devais envoyé donc je crois que je dois faire byte par byte, a moin que je les déplace en tant que string chr(255)+chr(255)+chr(255)+chr(255)

Publié : sam. 20/oct./2007 0:08
par Dr. Dri

Code : Tout sélectionner

PokeL(*Buffer, -1)
Dri ;)

Publié : sam. 20/oct./2007 0:38
par yoman64
Dr. Dri a écrit :

Code : Tout sélectionner

PokeL(*Buffer, -1)
Dri ;)
ça fonctionne :) merci pour l'astuce ;)

Publié : sam. 20/oct./2007 14:58
par lionel_om
Dr. Dri a écrit :

Code : Tout sélectionner

PokeL(*Buffer, -1)
Dri ;)
Toujours là pour les bons conseils :wink: