> > 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® DevCon Americas, Oct. 18-20, San Francisco, CA Learn about the latest advances in developing for the BlackBerry® mobile platform with sessions, labs & more. See new tools and technologies. Register for BlackBerry® 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