LEADERSOFT.ru Разработка на заказ программ и сайтов
Форумы по информационным технологиям
 
Регистрация  |  Вход
left
Форумы Минимизировать
ПоискСписок форумов
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Перетипиз...
 Тема: Перетипизация Date -> array of byte
 
 15.06.2007 21:09:46
Ру
2 сообщения


Тема: Перетипизация Date -> array of byte
Подскажите пож., что-то никак не найду, как в VBA переинтерпретировать данные, в частности - прочесть содержимое переменной типа Date (или Double) как если бы это был массив байт. Помнится, в паскале это делалось элементарно, декларацией вида var2 absolute var1, либо присвоением значения указателю.

ЗЫ: Алгоритмы наподобие последовательного деления на 256 не предлагать.


P.S. Управление датой
Автор: Ру от 08.10.2005 14:13:48 Источник ...
 15.06.2007 21:09:46
All
4316 сообщения
1-ый


RE: Перетипизация Date -> array of byte
В редакторе VBA жмем F2
В открывшемся окне в верхнем выпадающем списке выбираем VBA
Выбираем класс Conversion и смотрим

Dim bt() As Byte
Dim i As Long
bt = Hex(Date)
For i = 0 To UBound(bt) - 1
Debug.Print bt(i)
Next i



P.S. Управление датой
Автор: Anonymous от 0:00:00 Источник ...
 15.06.2007 21:09:46
Ру
2 сообщения


RE: Перетипизация Date -> array of byte
Спасибо, что откликнулись. Однако ж Hex не годится хотя бы потому что переполняется. То есть, Date (тип данных, а не функция бейсика) хранит дату с точностью до секунды. Если в Вашу формулу подставить не Date(), а Now(), дробная часть (время) просто потеряется, а если домножить Now() на 86400 (для обеспечения целости), Hex выдаст ошибку - Overflow. Понятно, что можно изголяться, делить на части, чтоб втиснуться в формат Hex, однако ж не будем усложнять простое. Напоминаю, что задача стоит элементарная: прочитать содержимое уже существующей переменной типа Double как сли бы это был array of byte, не отводя никакой лишней памяти и не производя никаких лишних вычислений. Нужен просто побайтный дампинг 8-байтовой переменной.


P.S. Управление датой
Автор: Ру от 10.10.2005 1:10:05 Источник ...
 15.06.2007 21:09:46
All
4316 сообщения
1-ый


RE: Перетипизация Date -> array of byte
Есть недокументированная функция (типа adressoff, точно не помню) - работает как указатель на переменную (например, в c++)


P.S. Управление датой
Автор: Admin от 0:00:00 Источник ...
 15.06.2007 21:09:46
All
4316 сообщения
1-ый


RE: Перетипизация Date -> array of byte
Вообще в VB не заложены функции для операций прямого доступа к памяти (а также работа с указателями и пр, - для этого есть дрю языки)
Тем не менее есть недокументированная функция VarPtr - возвращает адрес переменной
Либо можно воспользоваться API

Private Sub Conv2()
Dim i As Long
Dim bbuf() As Byte
Dim dsrc As Double
Dim str As String

dsrc = CDbl(Now())
i = Len(dsrc)
Debug.Print dsrc & Chr(9) & i
ReDim bbuf(i)
CopyMemory bbuf(0), dsrc, i
str = ""
For i = 0 To UBound(bbuf) - 1
str = str & CStr(Hex(bbuf(i)))
Next i
Debug.Print str
dsrc = 0#
CopyMemory dsrc, bbuf(0), i
Debug.Print CDate(dsrc)
End Sub



P.S. Управление датой
Автор: Anonymous от 0:00:00 Источник ...
  Программирование  Microsoft Access. Файлы mdb и accdb  Тема: Перетипиз...
ПоискПоиск  Список форумовСписок форумов  
right