![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
Всем привет!
Есть программа читающая/пишущая типизированный файл. Структурно файл состоит из N страниц (100 в данном случае). Смещение 1-й страницы всегда постоянно, это 8, смещение других может изменятся. Существует формула по которой можно начиная от 1-й стр. рассчитать каждое последующее смещение по принципу: // установить смещение на начало первой страницы setfilepointer(f, 8, nil, 0); // прочесть размер первой страницы ReadFile(f, c, 4, br, nil); // рассчитать смещение следующей страницы // установить смещение на начало следующей страницы и т.д. смещение второй страницы = смещение первой страницы + 4 + размер первой страницы Требуется функция, которая будет рассчитывать смещение и возвращать его, для каждой из 100 страниц. код чтения первой страницы (для ясности)
|
|||
|
||||
| CodeMonkey |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1839 Регистрация: 24.6.2008 Где: Россия, Тверь Репутация: 38 Всего: 89 |
А проблема-то в чём?
-------------------- Опытный программист на C++ легко решает любые не существующие в Паскале проблемы. |
|||
|
||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
проблема в жаре, не дает думать зараза
если серъезно, то вот не знаю как сформулировать такую ф-цию чтобы с циклом, не громоздкая и быстрая была. мне в голову только перебор условий приходит Это сообщение отредактировал(а) ozzii - 1.7.2009, 12:33 |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
ozzii, а зачем вообще такие сложности?
и что ты понимаеш под словом страница, чет не пойму и почему нельзя юзать типизированный файл
Это сообщение отредактировал(а) Frees - 1.7.2009, 12:50 -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
ozzii, а зачем вообще такие сложности?
и что ты понимаеш под словом страница, чет не пойму и почему нельзя юзать типизированный файл
какие сложности? ну под словом страница я понимаю следующее: в файле записаны данные, эти данные находятся на условных страницах (так они в проге представлены, в виде страниц). так я и так типизированный файл использую |
|||
|
||||
| Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
тогда размеры "Страниц" должны быть одинаковые сам файл может типизирован, хотя не понятно почему тогда размер записей разный(поправте если не прав) но работаеш ты с ним как с набором байт... пример что я понимаю под работать с типизированными файла
-------------------- Кольцов Виктор Владимирович |
||||
|
|||||
| ozzii |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
поправляю, потому что после добавления итема на любую страницу все смещения страниц смещаются (извините за каламбур). просто меняется размер страница, а с ним и размер файла.
да, все верно, как с набором байт. дело в том, что по другому выводимые данные становятся нечитаемыми Это сообщение отредактировал(а) ozzii - 1.7.2009, 13:22 |
||||
|
|||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
в типизированных файлах "страницы" одного размера!!!
помоему ты где то в корне не прав работая по байтно с файлом...смотри пример выше! ты файл сам создаеш? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
нет, файл не мой, он уже был создан как набор таких страниц, менять его структуру я не могу.
данный файл имеет след. строение: у каждой страницы своя структура, потому и приходится изощрятся скажем так, этот файл типизированный, но немного иначе Это сообщение отредактировал(а) ozzii - 1.7.2009, 14:19 |
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
описана то у тебя только одна - TList1 Добавлено через 1 минуту и 3 секунды может выложиш такой файл? -------------------- Кольцов Виктор Владимирович |
|||
|
||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
получил?
|
|||
|
||||
| Frees |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
так для каждой записи своя структура? или есть переодичность?
-------------------- Кольцов Виктор Владимирович |
|||
|
||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
ну там пару раз у некотор. страниц структуры повторяются, но в общем да, у каждой стр. своя так насчет функции мысли есть? Это сообщение отредактировал(а) ozzii - 3.7.2009, 10:42 |
|||
|
||||
| Frees |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2233 Регистрация: 2.12.2005 Где: Екатеринбург Репутация: 9 Всего: 54 |
дак завиди массив с размерами записи
и считай сумму размеров страниц до нужной, можно даже файл не трогать
поиск смещения страницы n это сума размеров предыдущих страниц
Это сообщение отредактировал(а) Frees - 3.7.2009, 12:35 -------------------- Кольцов Виктор Владимирович |
||||
|
|||||
| ozzii |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 1.7.2009 Репутация: нет Всего: нет |
такой еще вопрос, а как записать изменения? например данные прочитаны и помещены в 10 едитов, а если вот изменил содержимое одного или неск. едитов, как их назад в файл впихнуть? надо в одну строку собрать или как правильно? в смысле набор байт |
|||
|
||||
![]()
|
| Правила форума "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. |