![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Limonadni Joe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 1.11.2002 Где: Москва Репутация: нет Всего: 2 |
Признаюсь, самому разбираться лень, да и некогда. Спрашиваю тех, кто уже набил на этом руку.
Итак, файл состоит из одной структуры TType1 в самом начале файла, а дальше идёт неопределенное количество структур TType2. Всё это надо загнать (или выгнать из |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Код? Без структуры код невозможен, но если тебе лень разбираться в хэлпах то придётся не лениться разбираться в чужих примерах!
Ладно, вот один из моих методов, думаю, его можно назвать универсальным.
Тут грузится только одна структура из файла, но по окончании загрузки указатель оказывается в конце первой (то есть начале следующей), так что всё это можно прогонять в цикле вплоть до EOF. |
|||
|
||||
| Limonadni Joe |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 311 Регистрация: 1.11.2002 Где: Москва Репутация: нет Всего: 2 |
Похоже, лучше самому
А может можно как-то через FileStream? В один FS загнать определённое количество байтов из файла (т.е. перевую структуру), а в другой остальную часть файла. Потом читать из них, как из типизированных файлов. Бред я говорю или такое действительно возможно? |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
Мне почему-то кажется, что мой вариант - один из самых простых. Тебе по-любому придётся считывать некоторое количество байт и трансформировать их в переменную нужного типа, а делать это из файла напрямую или блока памяти, или потока - один геморрой. А если структура имеет члены переменной длины - то полный аминь. Так что лучше не вставлять всякие прокладки типа Stream.
|
|||
|
||||
| p0s0l |
|
|||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 58 Всего: 112 |
December - мог бы уж чо-нить поменьше привести в пример человеку...
Типа этого:
Аналогично для записи. Токо приведенный выше пример предпологает что TType1 и TType2 не содержат динамич. массивов или динам. строк, ссылок на объекты... Иначе придется процедурину на целую страницу писать а то и больше... -------------------- С уважением, г-н Посол. |
|||
|
||||
| PostEr |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 282 Регистрация: 30.6.2003 Где: Самара Репутация: нет Всего: 1 |
Народ! А как мне например считать char[4], потом int, потом float, потом ещё какую фигню? Проблема в char[4] (array[0..3] of byte) - я читаю (например должно быть считано IBSP), f у меня получается: (тут какой-то каракуль)BSP. Читаю так:
var f:file; magic:array[0..3] of byte; begin AssignFile(f,filename); Reset(f,4); //Вот тут проблема - пробовал разные варианты BlockRead(f, magic, 1, sizeof(magic)); что не так? может кто-нибудь где-нибудь видел сорц чтения bsp карты из третьего квака под паскаль? -------------------- ------------------------------------------------------------------ [email protected] До востребования |
|||
|
||||
| December |
|
|||
![]() Antitheorist ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 4423 Регистрация: 14.8.2002 Где: Харьков Репутация: 8 Всего: 57 |
PostEr Адрес для переменной magic должен быть magic[0] в данном случае.
BlockRead(f, magic[0], 1, sizeof(magic)); |
|||
|
||||
![]()
|
| Правила форума "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. |