[Gambas-user] gb3: writing variables to a string using a memory stream and pointer
Kevin Fishburne
kevinfishburne at ...1887...
Tue Sep 13 03:16:53 CEST 2011
> On Sun, Sep 11, 2011 at 07:40, Kevin Fishburne<
> kevinfishburne at ...1887...> 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.
--
Kevin Fishburne
Eight Virtues
www:http://sales.eightvirtues.com
e-mail:sales at ...1887...
phone: (770) 853-6271
More information about the User
mailing list