Главная страница
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.01 c
1-17990
CHIMUMBARO
2002-05-23 20:37
2002.06.06
Люди! Срочно нужна помощь...


1-18027
VID
2002-05-24 11:34
2002.06.06
Что-то непонятное с INI-файлами...


14-18152
cok
2002-05-03 10:01
2002.06.06
Работа


1-17931
vladish
2002-05-27 18:54
2002.06.06
мышка всегда на моей форме


3-17821
Uncle_m16
2002-05-15 22:19
2002.06.06
диалект