Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Вниз

file of XXX   Найти похожие ветки 

 
PVOzerski   (2002-03-29 13:23) [3]

Вообще-то вопрос можно разделить на 3.
1) Можно ли добраться до нужной записи, не перебирая все предшествоующие, а прямо
по смещению? - см. процедуру Seek и функцию FilePos.
2) Можно ли "укоротить" файл? - смотри процедуру Truncate - она "откусывает хвосты".
3) Можно ли "сдвинуть" записи, закрыв "дырку"-удаляемую запись? - вот тут дело сложнее.
Средств на уровне API я не припомню, да и быть бы их не должно, IMHO - это понизило бы
быстродействие доступа к файлам на уровне файловой системы. Здесь самое "лобовое"
решение - считывать очередную запись через read, откатываться на 2 позиции назад через
seek, писать через write, перескакивать через 1 позицию вперёд... - так до eof. А потом - truncate
на последнюю запись.

IMHO, в этой задаче лучше пользоваться всё-таки нетипизированными файлами с длиной записи 1.
Тогда "сдвинуть" записи, идущие за удаляемой можно будет практически за 1 приём - выделяем
динамический блок памяти, считываем туда одним blockred весь "хвост" и за один blockwrite вгоняем
его на нужное место.



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

Форум: "Основная";
Текущий архив: 2002.04.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.44 MB
Время: 0.007 c
6-32918
Лёша
2002-01-27 03:05
2002.04.11
Как изменить настройки у TWebBrowser?


3-32695
Марина
2002-03-21 15:12
2002.04.11
Изменяемый Query


3-32666
Alexsys
2002-03-16 06:55
2002.04.11
Описание отчета в текстовом файле??? Выручайте... ПЛИЗ!


3-32705
Fareader
2002-03-21 12:03
2002.04.11
Падает скорость Insert на больших объемах


4-33012
kasper
2002-02-11 22:20
2002.04.11
подскажите как удалять каталоги самые ранние по времени создания





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский