Page 2 sur 2

Publié : mer. 27/avr./2005 9:22
par Lea40
Je crois avoir compris,
as tu un exemple stp ?


Merci

Publié : mer. 27/avr./2005 9:44
par Dr. Dri
Un exemple ?
je vais te faire ca aujourd'hui si j'ai le temps ^^

Dri

Publié : mer. 27/avr./2005 10:00
par Lea40
Par avance merci,
mais prend ton temps, je me suis mis sur autre chose

Publié : mer. 27/avr./2005 10:08
par Dr. Dri
Trop tard... 8)
En espérant que ca corresponde à ce que tu cherches à faire...

Code : Tout sélectionner

Enumeration
  #FinMessageNormal
  #FinMessageErreur
  #FinMessageTruc
EndEnumeration

#TailleMaxMessage = $2000

Dim TypeMessage.s(#FinMessageTruc)

TypeMessage(#FinMessageNormal) = "Message"
TypeMessage(#FinMessageErreur) = "Erreur"
TypeMessage(#FinMessageTruc)   = "Machin"

Procedure CreerMessage(Message.s, Type.l)
  TailleMessage.l = Len(Message) + 8
  ptr = AllocateMemory(TailleMessage)
  
  PokeL(ptr, Len(Message))
  PokeS(ptr + 4, Message, Len(Message))
  PokeL(ptr + TailleMessage - 4, Type)
  
  ProcedureReturn ptr
EndProcedure

Procedure TailleMessage(Message.l)
  ProcedureReturn PeekL(Message) + 8
EndProcedure

Procedure LireMessage(Message.l)
  
  Taille.l  = PeekL(Message)
  Type.l    = PeekL(Message + 4 + Taille)
  Titre.s   = TypeMessage(Type)
  Contenu.s = PeekS(Message + 4, Taille)
  
  MessageRequester(Titre, Contenu)
  FreeMemory(Message)
EndProcedure

Procedure EnvoyerMessage(Client.l, Message.l)
  SendNetworkData(Client, Message, TailleMessage(Message))
EndProcedure

Procedure RecevoirMessage(Client.l)
  ptr = AllocateMemory(#TailleMaxMessage)
  ReceiveNetworkData(Client, ptr, #TailleMaxMessage)
  
  ProcedureReturn ptr
EndProcedure

;- Debut du programme

msg = CreerMessage("Bonjour, ceci est un message", #FinMessageNormal)
LireMessage(msg)

msg = CreerMessage("Le fichier n'existe pas sur le serveur", #FinMessageErreur)
LireMessage(msg)

msg = CreerMessage("Euuuuuuh", #FinMessageTruc)
LireMessage(msg)
Dri ;)

Publié : mer. 27/avr./2005 11:34
par cederavic
Un example plus simple qui montre bien le truc :

Code : Tout sélectionner

test.s = "bouh" + Chr(0) + "hahaha"
Debug test

Publié : mer. 27/avr./2005 13:10
par Dr. Dri
cederavic a écrit :Un example plus simple qui montre bien le truc :

Code : Tout sélectionner

test.s = "bouh" + Chr(0) + "hahaha"
Debug test
Effectivement ton exemple montre bien le "problème" des null string...
Le mien montre (j'espère) comment Lea40 peut s'y prendre...

Dri

Publié : mer. 27/avr./2005 14:29
par Lea40
J'ai bien compris, merci a tout les deux