|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с нетипизированными файлами
Есть файл в котором записана, например, информация о пользователе, он имеет такую структуру (тоже например):
Short - флаг указывающий на то что далее идет блок данных, содержащий информацию о юзере L - размер поля "имя", опираясь на его значение считываем определенное количество идущих впереди байт <имя> Как работать с подобными файлами? Можно ли в данном случае применить составной тип данных, те что-то вроде этого: type users = record ui: smallint; ns: longint; name: array of byte; //значит нужен динамический массив, размер которого определяется полем ns??? end; возможно как-то использовать в записи дин. массив, или может указатель на него? Как вобще лучше работать с подобными файлами? PS сори, если где ступил |
#2
|
||||
|
||||
Пока почитай тут...
http://www.realcoding.net/article/view/749 В начале был Бит, потом Байт и только потом появилось Слово... |
#3
|
|||
|
|||
Почитал. Что насчет остальных частей вопроса?)
|
#4
|
||||
|
||||
Файл у вас как вы пишете нетипизированный, т.е. чтение будет осуществлятся последовательно, т.к. неизвестно заранее где начинается нужный блок данных, следовательно что-бы добраться до 1000 записи придется перебрать 999 ранее идущих, но если вы сделаете индекс к такому файлу, то все станет намного проще.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#5
|
|||
|
|||
спс за ответ) Только что за индекс?
|
#6
|
||||
|
||||
Индекс это вспомогательный файл который строится на основе файла данных. Обычно строится при создании файла данных и в дальнейшем они работают в паре. За синхронизацию данных и индекса отвечает библиотека доступа к данным. Структура индекса зависит от потребностей. Скажем если есть необходимость работать по коду вашего пользователя, то делаем индекс структуры: ID,Offset где ID - код пользователя, а Offset смещение в байтах относительно начала файла.
Если-же есть необходимость работать по Имени пользователя, то строится еще один индекс: UserName,Offset Похожий способ досупа к данным используют многие базы данных. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |