Форум: "Основная";
Текущий архив: 2002.06.06;
Скачать: [xml.tar.bz2];
ВнизСписок и типизированный файл Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.008 c