Страница 1 из 1
Задачка :)
Добавлено: Вс янв 04, 2004 17:59
Vital
Ломаю голову уже второй день:
Как удалить из файла строку\строки, при этом не переписывая его, т.е. внутри этого же файла?
Ну как?

У меня один вариант есть, кое что доработать нужно, если получится выложу сюда, но вы ребята помогите, базарю так долго ещё ни с чем не игрался
Просьба: прежде чем выставлять умные мысли, проверьте их сами!
Инет перерыл, ниче не нашел, будут ссылки скидывайте будем оценивать. Язык значения не играет
[off]Анекдот к последней фразе вспомнил

Купил программист газету, уселся в парке на скамеечке, закурил сигаретку, начал листать. На одной из страниц читает: "Программа ТВ". Долго втыкая в надписи:
- Тьфу блин, и на каком языке она написана?

[/off]
Добавлено: Пн янв 05, 2004 01:05
Белый С.
Vital, допустим, у тебя есть файл размером
n байт, и тебе нужно удалить
t байт, начиная с позиции
x.
Копируешь (вперёд, это важно если по частям) кусок в n-x-t байтов с t+x до n в область от x до n-t, затем (находясь в позиции n-t), закрываешь файл (с обрезанием). Если хватает оперативки, можно обойтись: позиционированием на
x+t, чтением
n-x-t байт, позиционированием на
x, записью
n-x-t байт, обрезанием.
[off]программа TV: приколол!

[/off]
Добавлено: Пн янв 05, 2004 08:44
Vital
Белый С., угу, об этом я тоже думал, вот только как закрыть с обрезанием, не припомню ни одной функции. Может API есть, подскажи.
Добавлено: Пн янв 05, 2004 09:14
Белый С.
Vital, без обрезания тебе никак (

). Ты ж писал что пофиг язык? В простом Паскале/С это должно называться
truncate. Help'а с собой нет, посмотри
http://www.google.com/search?q=FileTruncate. На закуску пишу тебе как это делалось в Асме (трассировал паскалевскую прогу

): пишешь в файл ровно 0 (ноль) байт - файл при этом закрыт и обрезан.
Добавлено: Пн янв 05, 2004 10:33
Vital
Спасибо
Белый С., я уже сделал,

, что тут поделаешь

Новый Год все таки

Добавлено: Пн янв 05, 2004 10:39
Белый С.
Vital, ничего, я зато кой-чего повспоминал, а то так давно не программировал

Так хоть сделал как я писал или иначе? (Самый дубовый вариант: считать всё в память, удалить и записать обратно, считаю слишком некрасивым)
Добавлено: Пн янв 05, 2004 12:41
Vital
Белый С.,
Кусками считывалал остаток(всё что после строки) в память и клеил их в "новое место"(до строки), ну чтоб оперативку не нагружать(Считаю довольно оптимальным

).
[off]А я тоже вот Дельфы достал, нужно было програмку написать для себя полезную, так эта программка разростается в "небольшое" приложение, кторое мне уже надоедает писать, а мысли так и прут. Блин, если закончу - размещу в
"Зацени", но это только если закончу

[/off]