![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Заблокирован
Регистрация: 02.10.2012
Сообщений: 28
|
![]()
здравствуйте, помогите пожалуйста.
Делаю модель кодирование переменных в Excel на VBA. Демонстрируется как храняться переменные типа Byte, Integer, long, Single, Currency и др. в битах, с ними все получилось.Идет преобразование из 10-чной ситемы в двоичную, и обратно. С переменной Date ничего не получается ![]() Посмотрел как кодируется в микросхеме, ничего не получается. Может биты правильно не передаются через файл? Но ведь с Single, Currency все передалось правильно, вот мои функции. Код:
Последний раз редактировалось tvitaly1; 02.10.2012 в 01:07. |
![]() |
![]() |
![]() |
#2 | |
Программист VBA
СуперМодератор
Регистрация: 13.07.2008
Сообщений: 6,858
|
![]() Цитата:
Такое же точно число Преобразовывайте в число путем x=csng(now), и в переменной x получите значение типа 41184,16 Обратно преобразовать можно так: d=cdate(x) |
|
![]() |
![]() |
![]() |
#3 | |
Заблокирован
Регистрация: 02.10.2012
Сообщений: 28
|
![]() Цитата:
Мне не нужно преобразовывать из типа в тип. Я получаю коды битов, а затем преобразую из двоичной системы десятичную. С Singl получил моим способом и мантису и характеристику в двоичной системе, а затем преобразовал все в десятичное число из мантисы и характеристики. Currency во преки утверждениям в литературе, не кодируется десятичными цифрами в двоичной системе. Из исходного десятичного числа каким-то образом получают число больше на 10000, за затем целая часть переводится в двоичную систему счисления. Как кодируется date, т.е., как в ней кодируются секунды, минуты, числа и т.п., понять не могу. |
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]() Цитата:
поэтому дата содержится не в single, а в double переменной, где целая часть числа = дате, а дробная часть = времени (в долях суток: час равен 1/24, минута равна 1/(24*60) и т.д.). За начало отсчёта принято 00.01.1900 = 0, но, фактически, все значения от 0 до 1 указывают, что содержится только время без даты, а начало отсчёта именно даты (совместно со временем) начинается от 1 = 01.01.1900 з.ы. можете проверить, внося значения в ячейки excel которая отформатирована как дата.
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 02.10.2012 в 10:44. |
|
![]() |
![]() |
![]() |
#5 | |
Заблокирован
Регистрация: 02.10.2012
Сообщений: 28
|
![]() Цитата:
Наверно, это исходный формат Double. надо будет проверить. Последний раз редактировалось tvitaly1; 02.10.2012 в 11:56. |
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
![]()
> в каких битах мантисса, в каких характеристика?
Структура чисел Double и Single: http://en.wikipedia.org/wiki/Double-...g-point_format http://en.wikipedia.org/wiki/Single-...g-point_format Для того, чтобы скопировать содержимое одной переменной в другую, совсем необязательно записывать в файл и считывать из файла ![]() Можно использовать WinAPI функцию RtlMoveMemory или оператор LSet (применительно к переменным пользовательского типа).
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
![]() |
![]() |
![]() |
#7 | |
Заблокирован
Регистрация: 02.10.2012
Сообщений: 28
|
![]() Цитата:
http://en.wikipedia.org/wiki/Double-...g-point_format C LSet, простите, не могу разобраться. Подскажите пожалуйста, как переслать биты из переменной single в переменную integer при помощи LSet? |
|
![]() |
![]() |
![]() |
#8 | ||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]() Цитата:
Цитата:
И вообще, учитесь читать справку - там есть 80% ответов на все вопросы. Вот так, например: Код:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 02.10.2012 в 13:20. |
||
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
![]()
За одного Single два Integer дают
![]() Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
![]() |
![]() |
![]() |
#10 |
Старожил
Регистрация: 31.12.2010
Сообщений: 2,133
|
![]()
То же самое с API функцией
Код:
exceleved@yandex.ru Яндекс.Деньги: 410011500007619
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
VBA Word,VBA Excel решить 2 задачи | fafolo4ka | Фриланс | 6 | 05.03.2012 01:15 |
Обнуление глобальных переменных в VBA | Arkasha69 | Microsoft Office Excel | 1 | 06.09.2010 15:06 |
vba+excel | Анна Рожкова | Microsoft Office Excel | 18 | 28.05.2010 21:41 |
сезонная адаптивная модель в VBA | Kudoh | Microsoft Office Excel | 0 | 18.06.2009 19:31 |
Как запретить запуск программы на VBA Excel 2003 в Excel 2007 | kovalevskivf | Microsoft Office Excel | 2 | 15.05.2009 16:47 |