-
Есть неудобный способ хранить записи в типизированном файле:
var
F:file of Tmytype
a: Tmytype
Но при этом ужасно неудобно удалять и записывать записи в этом файле.
Какая альтернатива есть? Чтоб все было в одном файле, и процедуры обработки чтения, удаления, записи, изменения были удобными?
Если есть ссылку в инете дайте, пожалста!
-
xml
-
> xml
Как?
-
Как?
Очень легко и даже приятно.
-
> Очень легко и даже приятно.
(( я понятия не имею как им пользоваться
-
ну тогда оставайся на типизированных файлах.
-
> ну тогда оставайся на типизированных файлах.
ну уж нет... у него избыточный код, есть что-нибудь еще?
-
Зависит от того, что Вы называете удобным и неудобным. Например, вместо записей можно использовать объекты, а файл читать в их список (потомок TObjectList) и писать из этого же списка. Тогда весь вопрос сводится к написанию 2-х простых методов списка - чтение и запись файла (формат файла: перваые 4 байта - количество элементов, далее сами элементы).
После чего запись и чтение файла, а также работа с самим списком и его объектами (добавление, удаление, изменение, поиск и т.п.) становятся очень простыми и удобными. Так что вопрос лишь в том, удобна ли для Вас сама эта схема.
-
Поиск нужного объекта в таком файле будет особенно удобен.
-
> Reindeer Moss Eater © (24.03.08 19:14) [8]
На всякий случай: в файлах объекты не ищут. В файлах вообще ничего не ищут. Файлы читают и пишут, а ищут - в памяти.
И при этом без разницы, что содержит файл - объекты, записи, просто числа или что угодно еще.
-
да да конечно. и не ищут в файлах ничего и никогда.
-
Прочитай про сериализацию, используй объекты и сериализуй их стандартными методами
-
Будет та же хрень что и с типизированными файлами.
С точностью до миллиметра.
-
Кстати, а как на счет БД?
-
Причем чел поимеет реальный гемор при перезаписывании экземпляра находящегося посреди файла.
Если раньше ему достаточно было переписать кусок размером SizeOf(рекорд), то с переходом на объекты, это уже не прокатит.
-
Да простой ClientDataSet.
-
> Reindeer Moss Eater © (24.03.08 19:20) [10]
Можете привести пример поиска в файле?
Если можете - приведите. А я Вам тут же докажу, что это поиск НЕ в файле, а в памяти.
Даже если весь поиск сводится к одному сравнению, то это сравнение все равно производится в памяти. А файлы только читают и пишут.
-
Семеныч, вы предлагаете заменить шило на мыло. Причем с гребанием новых граблей.
-
> Reindeer Moss Eater © (24.03.08 19:26) [14]
> Причем чел поимеет реальный гемор при перезаписывании экземпляра
> находящегося посреди файла. Если раньше ему достаточно было
> переписать кусок размером SizeOf(рекорд), то с переходом на объекты,
> это уже не прокатит.
Если раньше было достаточно переписать кусок размером SizeOf(рекорд), то это означает, что указателей пресловутый рекорд не содержит - и тогда с переходом на объекты будет достаточно переписать кусок размером InstanceSize.
LOL?
-
> Reindeer Moss Eater © (24.03.08 19:29) [17]
> Семеныч, вы предлагаете заменить шило на мыло. Причем с гребанием
> новых граблей.
Если Вы подкрепите Ваше утверждение указанием конкретных грабель, то, возможно, я с Вами соглашусь. Пока же я этих грабель не вижу.