> > On Sun, Sep 11, 2011 at 07:40, Kevin Fishburne<
> > 
> > kevinfishbu...@eightvirtues.com>  wrote:
> >> My code looks like this:
> >> 
> >> ' For writing outgoing UDP data to memory.
> >> Public data As String
> >> Public mem As Stream
> >> 
> >> ' Create data string for outgoing transaction queue.
> >> data = Space(8)
> >> mem = Memory VarPtr(data) For Write
> >> mem.Begin
> >> 
> >>    Write #mem, (Server.DateCurrent + Server.DateUTC) As Float
> >> 
> >> mem.Send
> >> Print data
> >> 
> >> It throws signal 11 on the Print statement.
> >> 
> >> I have two questions. First is this the correct way to write one or more
> >> variables to a string in memory, and second what's up with the signal
> >> 11? I'm using revision 4094 and will update to the newest revision in a
> >> moment.
> 
> On 09/11/2011 08:13 AM, Jussi Lahtinen wrote:
> > Not sure what happen there, but try this:
> > 
> > Public pData As Pointer
> > Public mem As Stream
> > 
> > pData = Alloc(SizeOf(gb.Float))
> > mem = Memory pData For Write
> > mem.Begin
> > 
> >    Write #mem, (Server.DateCurrent + Server.DateUTC) As Float
> > 
> > mem.Send
> > 
> > Print Float@(pData)
> 
> Thanks everyone for your replies. I'm now using this code ('Data' is a
> string):
> 
> ' Create data string.
> DataPointer = Alloc(8)
> Mem = Memory DataPointer For Read Write
> Mem.Begin
>    Write #Mem, (Server.DateCurrent + Server.DateUTC) As Float
> Mem.Send
> 'Data = Read #Mem As Float
> Data = Read #Mem, 8
> 
> ' Send transaction.
> udp.Begin
>    Write #udp, id As Byte
>    Write #udp, 56 As Byte
>    'Write #udp, (Server.DateCurrent + Server.DateUTC) As Float
>    Write #udp, Data, Len(Data)
> udp.Send
> 
> The recipient gets the wrong value for 'Data' when it is converted back
> from a string to a float. It gets the correct value if I use the
> commented "Write #udp, (Server.DateCurrent + Server.DateUTC) As Float".
> Any ideas why I can't write the data stored at DataPointer to the string
> Data?
> 
> In case anyone forgot, I need the data to be saved as a string so it can
> be stored in an outgoing network transaction queue, which is an array of
> transaction structures. The Data property of the structure stores
> arbitrary groups of variables so grouping them as a string is the most
> convenient method since there will be up to 255 different transaction
> types.

1) Using Begin/Send is useless if you have only one WRITE instruction.

2) Every stream has a byte order. Did you check that the byte order of your 
memory stream is the same as the byte order of your Udp socket stream?

-- 
Benoît Minisini

------------------------------------------------------------------------------
BlackBerry&reg; DevCon Americas, Oct. 18-20, San Francisco, CA
Learn about the latest advances in developing for the 
BlackBerry&reg; mobile platform with sessions, labs & more.
See new tools and technologies. Register for BlackBerry&reg; DevCon today!
http://p.sf.net/sfu/rim-devcon-copy1 
_______________________________________________
Gambas-user mailing list
Gambas-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/gambas-user

Reply via email to