![]() |
|
Модераторы: Poseidon, Snowy, bems, MetalFan |
![]()
|
|
| Jade |
|
||||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 18.10.2006 Где: Киев Репутация: нет Всего: нет |
В общем есть двухсвязный списочек - имитация базы данных о животных, например.
Использую такие переменные -
Т.е. указатели на первый, последний и текущий элементы. На форме красиво добавляются, удаляются и прокручиваются по одному все элементы. Проблема - записать этот список в какой-то бинарный файл и потом считать его оттуда. Делаю File of TAnimal - тогда как обратиться к связям? Или File of ptr, тогда будут сами указатели. Буду очень благодарен за помощь. |
||||
|
|||||
| Romkin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: 2 Всего: 5 |
Указатели в файл не пишутся. Более того, записать в файл именно двухсвязный список - задача нетривиальная, если сохранять возможность дозаписи.
Пиши просто последовательно записи без полей указателей, при считывании - создавай новый узел, заполняй полями из файла, устанавливай указатели. Не надо делать в файле связи. PS. И вообще, зачем тебе двухсвязный список? Поизвращаться хочется? Он очень редко нужен, и явно у тебя - не тот случай. Есть TList, TObjectList, TCollection - неужели не подходят? |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 109 Всего: 459 |
Можно просто их пронумеровать, а вместо указателей писать номер элемента на который он должен ссылаться т.е. номер предыдущего или предшественика. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| Romkin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: 2 Всего: 5 |
Можно. И делают. Только, во-первых, этот номер - обычно смещение нужной записи от начала файла, иначе что, каждый раз считать? А во-вторых, список-то двухсвязный, считать дважды. Стараясь не запутаться в ссылках |
|||
|
||||
| Jade |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 30 Регистрация: 18.10.2006 Где: Киев Репутация: нет Всего: нет |
хм...
объясните пожалуйста мне тупому как именно считать. добавлять в записи еще и поле для нумерации? а как считывать потом? |
|||
|
||||
| Romkin |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 189 Регистрация: 14.11.2006 Где: Москва Репутация: 2 Всего: 5 |
ЗАчем поле для нумерации? Ты как список создаешь, ведь наверняка создаешь узел, заполняешь его, а потом добавляешь в начало/конеч списка.
Что мешает взять файл записей с данными, пройти его последовательно, и для каждой записи создать узел, заполнить его данными из этой записи, и вставить в список? Получается - последовательно проходим файл, и одновременно последовательно наращиваем список. |
|||
|
||||
![]()
|
| Правила форума "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. |