![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| sevlad |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
столкнулся с проблемой, что при чтении из файла в массив типа Char или Byte и последующей его обработкой необходимо преобразовать 4 последовательных байта в single. Бъюсь 4 дня. Знаю, что должно быть просто но ...
|
|||
|
||||
| Snowy |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Добавлено @ 23:42
|
||||
|
|||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
2 Snowy:
Хм-м. А что происходит если к байту применить сдвиг на 16 или 24 бит? Однажды мне понадобилось слеплять Float aka Single из приходящего с девайса потока байтов по протоколу ModBus в котором вещественное представляется с перестановкой байтов. Кажется это формат процессоров Motorola. Я не мудрствуя лукаво сделал так.
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| Snowy |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 11363 Регистрация: 13.10.2004 Где: Питер Репутация: 192 Всего: 484 |
Тоже вариант.
Но наиболее быстрым тут будет вариантный packed record
|
|||
|
||||
| Beltar |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 627 Регистрация: 11.1.2006 Репутация: 3 Всего: 7 |
Это да, у меня немного более сложный случай, кстати, мой тогдашний начальник такую задачу в свое время решал на ассемблере.
Кстати, здесь старинный китайский вопрос может возникнуть "анахуа?" Если байты уже лежат как нужно, то что мешает:
Тут надо сам алгоритм смотреть, вдруг там можно и без массива обойтись. -------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. Пищущий на C++ мужик. Даже если это мужик сидит в написанном на Delphi и жрущем паскалевскую библиотеку билдере. |
|||
|
||||
| sevlad |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Спасибо за подсказки.
Это я понял. как опробую поделюсь. А насчет
да, все лежит как надо, и в случае побатного считывания проблем нет, но файл более 200 метров и время уходит ~10 мин на обработку одного параметра, а их там ~700, а надо ~ 10-20 сек. Так вот. |
||||
|
|||||
| sevlad |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 3 Регистрация: 10.1.2007 Репутация: нет Всего: нет |
Спасибо всем за помощь.
В итоге получилось так:
Хотелось бы читать все в динамический массив, но пока увы. Отдельное спасибо Snowy Совет про paked record оказался правильным. Итог: время обработки 200 метрового файла по одному параметру составляет 7 секунд. Приемлимо. Это сообщение отредактировал(а) sevlad - 12.1.2007, 20:45 |
|||
|
||||
![]()
|
| Правила форума "Delphi: Общие вопросы" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Delphi: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |