Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.06.06;
Скачать: CL | DM;

Вниз

Список и типизированный файл   Найти похожие ветки 

 
Random   (2002-05-25 14:10) [0]

Такой вопрос. Имеется запиись
Info = record
Sirname:string[40];
Diagnos:string;
end;
И файл f:file of Info
Нужно организовать индекс ключей файла в виде линейного списка. Ключем является поле sirname. Как?
И еще вопрос, как удалить определенную запись из такого файла?


 
ION T ©   (2002-05-25 16:42) [1]

А нафиг тебе типизированный файл? Он все равно не работает со строками неопределенной длинны, к тому-же удалять из них тоже нельзя (можно тока в индексе ссылку убить). Тебе нормальная БД нужна..а БДЕ, в крайнем случае, поддерживает работу с текстовыми файлами (только тоже без удаления и с другими ограничениями)


 
Random   (2002-05-25 16:44) [2]

Таково задание курсовой :( Иначе стал бы я с этой фигней гемороится. И все же кто может - помогите!


 
ION T ©   (2002-05-25 16:54) [3]

Ну можешь просто писать в байтовый файл, а в индексе писать пару смещение+размер...или запись переделать во что-то наподобии:

Info = record
Length: integer;
Surname: string[40];
Diagnose: string;
end;

А затем читать значение Length и читать столько байтов....


 
Random   (2002-05-25 17:43) [4]

Ладно с индексами, подскажите,как удалить элемент. Например, если нельзя напрямую, скопировать в буфер обмена все, кроме нужного эл-та, а потом обратно. Как технически это сделать?


 
MBo ©   (2002-05-25 17:46) [5]

если непременно надо с типизированным файлом, придется писать во временный до удаляемой записи, потом после нее, удалять старый и переименовывать. Умеешь работать со Stream? Это бы сильно ускорило и упростило процесс.


 
Jin ©   (2002-05-25 17:48) [6]

Удаление из типизированого файла делать следующим образом:
1) переписать все записи кроме удаляемой во temp файл
2) удалить исходный
3) переименовать temp в исходный



 
Jin ©   (2002-05-25 17:51) [7]

Уфф пока писал уже ответили :)))


 
Random   (2002-05-25 18:29) [8]

Большое спасибо за дельные советы!
Тогда уж подскажите, как добавлять новую запись(Append не работает) и изменять имеющиеся.
Ну и гемор с этими типизированными файлами :)


 
MBo ©   (2002-05-25 18:45) [9]

все перезаписью. про гемор правда ;)


 
Jin ©   (2002-05-25 22:13) [10]

Нет. Типизированый файл можно открыть reset"ом и изменять данные обычным write"ом. То есть сначало ищем нужную запись, потом seek на позицию назад, и write новые данные.


 
Jin ©   (2002-05-25 22:14) [11]

Соответственно, если писать за границей файла открытого reset"ом, записи будут добавляться.


 
Anatoly Podgoretsky ©   (2002-05-25 23:00) [12]

Но ты вообще не можешь использовать типизированный файл для такого типа записи, если не изменишь Diagnos:string;.

К вопросу об уделении, удаление можно делать без создания нового файла, достаточно использовать seek
Но еде проще добавить один член в записи - deleted: boolean
и использовать удаленные записи повторно


 
Jin ©   (2002-05-25 23:15) [13]

Anatoly Podgoretsky
А как удалять из типизированного файла, использую толко сеек?
Пустые места чем потом заполнять?


 
KilkennyCat ©   (2002-05-26 09:24) [14]

В пустом месте написать: "Здесь было то-то и то-то. Удалено пользователем" :))
А использование TIniFile не будет противоречить заданию курсовой?
чем не "типизированый файл" :) ? очень похож!


 
Anatoly Podgoretsky ©   (2002-05-26 10:58) [15]

Удалять не нужно, надо перемещать остаток записей вперед на пустое место, а вот удать нужно последню запись после перемещения, при таком методе не нужен ни второй файл ни переименования.



Страницы: 1 вся ветка

Текущий архив: 2002.06.06;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.015 c
14-18149
Mikeee
2002-05-03 13:38
2002.06.06
По какому событию...


1-17851
Maxr
2002-05-24 14:58
2002.06.06
Не запускаются программы вне IDE в Kylix


7-18168
Garik
2002-03-09 07:18
2002.06.06
Народ!!! нужен исходник номеронабирателя для модема... заранее благодарен!


14-18130
kingdom
2002-05-01 15:46
2002.06.06
Помогите защитить логи!!!


14-18123
Феликс
2002-04-29 23:21
2002.06.06
Ищу словарь чисто настоящих пацанов :)