The core problem here is that VBScript (the underlying engine) does not
support byte arrays.
I don't have a solution for you, but here is a related trick to get a
long from a byte array, using the newObjects SFMain object. It also
deals with the big endian/little endian problem, which you probably
won't have.
AddObject "NewObjects.utilctls.StringUtilities","su"
AddObject "newObjects.utilctls.SFMain","FS"
Set file=FS.OpenFile(DataFile)
...
Function getLong(offset)
Dim y
file.pos=offset
y=file.readbin(4)
y=su.BinToHex(y) 'convert the byte array into a format we can use
y=Right("00000000" & y,8) 'left pad it to 8 characters long
getlong=CLng("&h" & Mid(y,7,2) & Mid(y,5,2) & Mid(y,3,2) & Mid(y,1,2))
'reverse the byte order
End Function
>>From the TechNote 26 description it appears that API calls can be made
>passing parameters as in "ByRef X As Byte()" with no problem. However
>due to VBScript limitations what you pass in (and get back) are arrays
>of Integer (or "short" i.e. VT_I2, signed 16-bit integers).
>
>The issue I have is that I need to be able to write these out (for
>example to disk) as a stream of Byte values.
>
>I could easily use the newObjects SFMain object to create an SFStream
>object and call its WriteBin method. However SFStream expects a Variant
>buffer parameter containing an array of subtype Byte (VT_UI1).
>
>I can see that the array of Integer subtype has advantages in allowing
>VBScript manipulation, but I now seem to have a mismatch between DECLARE
>and SFStream.
>
>So my question is: Does anybody have a suggestion for resolving this
>mismatch, or do I have something confused on my part?
>
>- Bob
>
>
>
>------------------------------------
>
>Yahoo! Groups Links
>
>
>
--
You received this message because you are subscribed to the Google Groups
"nsb-ce" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/nsb-ce?hl=en.