Получение значения uint64 в приложении vba, работающем под управлением 32-битного офиса

У меня есть некоторые VBA кодирования для открытия файлов в двоичном режиме и сохранения значения в Vriable для последующего использования. У меня есть информация о файловой структуре (я думаю, что файлы были созданы из программы, разработанной на C или C ++), поэтому я знаю смещение для позиции в файле и то, что его тип данных — Uint64 (поэтому 8 байт).

Фрагмент кода для этого выглядит следующим образом:

Dim strFile as String

Dim p as Long

strFile = "Testfile"
Open strFile For Binary As #1    ' Open file.

p = 1024 ' position of variable in file

Get 1, p, Value

Переменная ‘Value’ должна быть объявлена ​​как VBA, эквивалентная Unit64, но, поскольку я использую 32-разрядную версию Office, я немного застрял. Я попытался объявить Double, но это не вернуло правильное значение. Не уверен почему.

Любые советы будут высоко ценится

Спасибо

0

Решение

Массив целых чисел, вероятно, будет лучшим вариантом.

Sub TestGetBin()

Dim DataByte(0 To 7) As Byte
Dim DataLong(0 To 1) As Long
Dim i As Long

' File contains "abcdefghijklmnopq"Open "D:\abc.txt" For Binary As #1

Get 1, 1, DataByte
Get 1, 1, DataLong

Debug.Print Hex(DataLong(0)), Hex(DataLong(1))

For i = 0 To 7
Debug.Print Hex(DataByte(i))
Next i

Close #1

End Sub

Это дает

64636261      68676665

61
62
63
64
65
66
67
68

так что вы, вероятно, будете счастливее с байтовым массивом (и создадите из него свой номер).
(Ну, зависит от того, как хранится число. Попробуйте.)

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]