1

Тема: WSH: Byte() to Long

Какой же неудобный тип данных (8209) , просто жуть.

Используется в SAPI.SpFileStream.1
Никак не хочет преобразовываться. Ни как к массиву обратиться нельзя, ни как к числу.

В VB прекрасно работает конструкция CLng(Asc(byteArr(0))), [т.е. через обращение как к массиву].
Но в VBS она выдает ошибку о несоответствии типов.

fname = "C:\Anyfile.bin"
Set fs = CreateObject("SAPI.SpFileStream.1")
    fs.open (fname)

For i = 1 To 2
    fs.read byteArr, 1
    For Each byte_ In byteArr
        MsgBox byte_
    Next
   ' MsgBox (CLng(Asc(arr(0))))
Next

Может кто-то работал с этим.
Каким образом его обуздать?

2

Re: WSH: Byte() to Long

Может быть такой вариант устроит ?


Option Explicit
Dim SpFileStream, ByteArray, i, tmpStr, ByteData
Set SpFileStream = CreateObject("SAPI.SpFileStream.1")
SpFileStream.Open "C:\file.bin"
SpFileStream.Read ByteArray, 10

For i=1 to Ubound(ByteArray)
    ByteData = midB(ByteArray,i,1)
    tmpStr = tmpStr & AscB(ByteData) & vbCrlf
Next

MsgBox tmpStr

Возможно ещё пригодятся функции MidB, AscB, ChrB, InStrB

Передумал переделывать мир. Пашет и так, ну и ладно. Сделаю лучше свой !

3

Re: WSH: Byte() to Long

Просто замечательно! Спасибо, Xameleon.
Я и не знал про байтовые аналоги функций

4

Re: WSH: Byte() to Long

OFF: Аскет, начнёте плотно с AD работать — ещё не раз вспомните.