![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#11 |
Регистрация: 20.08.2012
Сообщений: 7
|
![]()
EducatedFool, спасибо огромное за ответ!
А можно по подробнее? Как воспользоваться вашим макросом? Не ругайте сильно - я не сильно разбираюсь в программировании. |
![]() |
![]() |
![]() |
#12 |
Форумчанин
Регистрация: 10.02.2012
Сообщений: 109
|
![]()
Прочитать можно с конвертированием в Double, для примера - чтение числа из Long64
Код:
Код:
|
![]() |
![]() |
![]() |
#13 |
Регистрация: 20.08.2012
Сообщений: 7
|
![]()
Попробовал выполнить вышеуказанный макрос, но результатов не получил(((
Что мог сделать не так?( |
![]() |
![]() |
![]() |
#14 |
Форумчанин
Регистрация: 10.02.2012
Сообщений: 109
|
![]()
Wer66 процедура readLong64 считывает из файла 1.1 в папке c:\temp первых 8 байт и преобразовывает их в число типа Double. Вы можете поменять путь и имя к вашему bin файлу, чтобы проверить корректность вычисления такого преобразования. Я привёл лишь пример. Что конкретно у вас «никаких результатов» дало? Что-то же Debug.Print должен же был выдать в панели Immediate или, хотя бы, должно было появиться сообщение об ошибке.
|
![]() |
![]() |
![]() |
#15 |
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]()
Уважаемый AndVGri,
а Вас не смущает, что при преобразовании целого в дробное теряется некоторая часть точности. Например, для приведенного здесь примера, число: 3806576592579264512 (34 D3 AD 3E 2B 01 00 00h), значение после преобразования станет: 3806576592579260000 Согласитесь, терять изрядную долю числа не самый правильный подход. С учётом того, что стандартными функциями преобразование сделать практически нереально, то есть два пути: либо, как предложено выше, провести преобразование исходного файла в воспринимаемый программой формат отдельной консольной утилиткой, которую вполне реально запустить прямиком из макроса, либо самому написать функционал по работе с длинными числами. з.ы. при правильном подходе можно заменить Long64 строкой, но неясно как планируется его дальше обрабатывать...
Правильно поставленная задача - три четверти решения.
|
![]() |
![]() |
![]() |
#16 |
Форумчанин
Регистрация: 10.02.2012
Сообщений: 109
|
![]()
Все в наших руках. можно сделать и преобразование в текс т- завтра подумаю. Но у автора 13 знаков всего в примере, не подскажете алгоритм записи даты и времени в целое 64 число?
|
![]() |
![]() |
![]() |
#17 | ||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]() Цитата:
Цитата:
Правильно поставленная задача - три четверти решения.
Последний раз редактировалось DiemonStar; 21.08.2012 в 16:22. |
||
![]() |
![]() |
![]() |
#18 |
Форумчанин
Регистрация: 10.02.2012
Сообщений: 109
|
![]()
Хм, уважаемый DiemonStar, порядок байтов для Long64, предполагаю, стандартный – слева младший байт, справа старший. По поводу перспективы, я не зря спросил про алгоритм вычисления даты, представленной *типом Long64. Предположим, он предполагает за 1 принимать одну сотую секунды от начала нашей эры, тогда имеем для 2100 года 2100*366*24*3600*100=6 640 704 000 000 – как раз 13 знаков. Думаю, вы согласитесь, что до 2100 года макрос вряд ли будет использоваться. Потеря точности идёт с 256^6, 256^7, можно их, используя VS получить в текстовом виде и умножать и складывать поразрядно с значениями 6 и 7 байтов, работая с текстом (неспешно будет, но результат…). Далее, разбиваем полученный результат на части, так чтобы сумма младшей части с остальным значением (с 0 по 5 байт) не имела переноса разряда. Младшую часть складываем со значением с 0 по 5 байт и как текст добавляем к старшей текстовой части. Если бы был алгоритм представления даты в целочисленном виде, то можно было бы и конвертер написать. Только будет ли этим заниматься ТС? Алгоритм то набросать можно, но судя по вопросам ТС – возьмётся ли он его реализовывать?
|
![]() |
![]() |
![]() |
#19 |
Старожил
Регистрация: 02.05.2009
Сообщений: 3,907
|
![]()
Даты в файле нет.исходные данные по дате в файле INI.
1 байт =номер устройства,3 байта =показания прибора Но у меня количество данных в 3 раза меньше чем в окне программы. Надо алгоритм программы знать привожу выдержки Получил для 2х устройств 2 -2,9521 3 0,0052 2 -2,9501 3 0,0057 2 -2,9501 3 0,0046 2 -2,8463 3 0,0046 2 -2,8874 3 0,0046 2 -2,9521 3 0,0077 2 -2,9943 3 0,0057 Для 8 устройств. 0 0,0011 3 -0,0253 6 -0,0052 1 -0,0271 4 -0,0155 7 0,0099 2 -0,0059 5 0,248 0 0,0004 3 -0,0275 6 -0,0059 1 -0,0256 4 -0,0155 7 0,0092 2 -0,0059 5 0,2484 0 0,0015 3 -0,0238 6 -0,0059 1 -0,0263 4 -0,0155 7 0,0095 2 -0,0051 5 0,3431
Анализ,обработка данных Недорого
Последний раз редактировалось doober; 21.08.2012 в 17:23. |
![]() |
![]() |
![]() |
#20 | |||
Старожил
Регистрация: 08.02.2012
Сообщений: 2,173
|
![]() Цитата:
в условии написано: Цитата:
Цитата:
Правильно поставленная задача - три четверти решения.
|
|||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Повреждение данных при записи в середину бинарного файла | Aerial | Общие вопросы C/C++ | 2 | 01.12.2011 19:32 |
Чтение данных из бинарного файла | Faramir02 | Общие вопросы C/C++ | 3 | 22.12.2010 22:43 |
Поиск-извлечение блока данных из бинарного файла | Alter | Общие вопросы Delphi | 6 | 28.11.2009 23:12 |
Импорт данных в Excel | mMAg | Microsoft Office Excel | 2 | 20.08.2009 17:50 |
Импорт из текстового файла в Excel (DBF) | Slava | БД в Delphi | 3 | 22.07.2009 20:28 |