Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 12.02.2010, 17:31
offset offset вне форума
Прохожий
 
Регистрация: 12.02.2010
Сообщения: 4
Репутация: 10
По умолчанию Работа с нетипизированными файлами

Есть файл в котором записана, например, информация о пользователе, он имеет такую структуру (тоже например):
Short - флаг указывающий на то что далее идет блок данных, содержащий информацию о юзере
L - размер поля "имя", опираясь на его значение считываем определенное количество идущих впереди байт
<имя>

Как работать с подобными файлами? Можно ли в данном случае применить составной тип данных, те что-то вроде этого:
type users = record
ui: smallint;
ns: longint;
name: array of byte; //значит нужен динамический массив, размер которого определяется полем ns???
end;

возможно как-то использовать в записи дин. массив, или может указатель на него?

Как вобще лучше работать с подобными файлами?

PS сори, если где ступил
Ответить с цитированием
  #2  
Старый 12.02.2010, 17:46
Аватар для NIch
NIch NIch вне форума
Продвинутый
 
Регистрация: 02.06.2008
Адрес: Бендеры ПМР
Сообщения: 754
Репутация: 2446
По умолчанию

Пока почитай тут...
http://www.realcoding.net/article/view/749
__________________
В начале был Бит, потом Байт и только потом появилось Слово...
Ответить с цитированием
  #3  
Старый 14.02.2010, 15:12
offset offset вне форума
Прохожий
 
Регистрация: 12.02.2010
Сообщения: 4
Репутация: 10
По умолчанию

Почитал. Что насчет остальных частей вопроса?)
Ответить с цитированием
  #4  
Старый 14.02.2010, 15:32
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Файл у вас как вы пишете нетипизированный, т.е. чтение будет осуществлятся последовательно, т.к. неизвестно заранее где начинается нужный блок данных, следовательно что-бы добраться до 1000 записи придется перебрать 999 ранее идущих, но если вы сделаете индекс к такому файлу, то все станет намного проще.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
  #5  
Старый 14.02.2010, 15:44
offset offset вне форума
Прохожий
 
Регистрация: 12.02.2010
Сообщения: 4
Репутация: 10
По умолчанию

спс за ответ) Только что за индекс?
Ответить с цитированием
  #6  
Старый 14.02.2010, 17:02
Аватар для Страдалецъ
Страдалецъ Страдалецъ вне форума
Гуру
 
Регистрация: 09.03.2009
Адрес: На курорте, из окна вижу теплое Баренцево море. Бррр.
Сообщения: 4,721
Репутация: 52347
По умолчанию

Индекс это вспомогательный файл который строится на основе файла данных. Обычно строится при создании файла данных и в дальнейшем они работают в паре. За синхронизацию данных и индекса отвечает библиотека доступа к данным. Структура индекса зависит от потребностей. Скажем если есть необходимость работать по коду вашего пользователя, то делаем индекс структуры: ID,Offset где ID - код пользователя, а Offset смещение в байтах относительно начала файла.
Если-же есть необходимость работать по Имени пользователя, то строится еще один индекс: UserName,Offset
Похожий способ досупа к данным используют многие базы данных.
__________________
Жизнь такова какова она есть и больше никакова.
Помогаю за спасибо.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:55.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter