Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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
8-18068
KaPaT
2002-01-22 00:56
2002.06.06
gif


3-17824
bardi
2002-05-16 17:15
2002.06.06
Здраствуйте!!! Что лучше, старичок BDE или универсал ADO для Серв


14-18120
Doom
2002-05-01 00:38
2002.06.06
Книга по Ассемблеру


3-17819
lexx@demon
2002-05-15 19:45
2002.06.06
Мастера... помогите..... как поместить картинку в базу данных


1-18008
DenNNis
2002-05-24 12:29
2002.06.06
SaveDialog ???





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский