Задачка :)

Модератор: Злобный

Ответить
Аватара пользователя
Vital
Продвинутый
Сообщения: 558
Зарегистрирован: Вт янв 28, 2003 10:21
Контактная информация:

Задачка :)

Сообщение Vital »

Ломаю голову уже второй день:

Как удалить из файла строку\строки, при этом не переписывая его, т.е. внутри этого же файла?

Ну как? :) У меня один вариант есть, кое что доработать нужно, если получится выложу сюда, но вы ребята помогите, базарю так долго ещё ни с чем не игрался :)
Просьба: прежде чем выставлять умные мысли, проверьте их сами!
Инет перерыл, ниче не нашел, будут ссылки скидывайте будем оценивать. Язык значения не играет
[off]Анекдот к последней фразе вспомнил :)
Купил программист газету, уселся в парке на скамеечке, закурил сигаретку, начал листать. На одной из страниц читает: "Программа ТВ". Долго втыкая в надписи:
- Тьфу блин, и на каком языке она написана? :laugh: [/off]
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

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: приколол! :D [/off]
Аватара пользователя
Vital
Продвинутый
Сообщения: 558
Зарегистрирован: Вт янв 28, 2003 10:21
Контактная информация:

Сообщение Vital »

Белый С., угу, об этом я тоже думал, вот только как закрыть с обрезанием, не припомню ни одной функции. Может API есть, подскажи.
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

Vital, без обрезания тебе никак ( ;) ). Ты ж писал что пофиг язык? В простом Паскале/С это должно называться truncate. Help'а с собой нет, посмотри http://www.google.com/search?q=FileTruncate. На закуску пишу тебе как это делалось в Асме (трассировал паскалевскую прогу :D ): пишешь в файл ровно 0 (ноль) байт - файл при этом закрыт и обрезан.
Аватара пользователя
Vital
Продвинутый
Сообщения: 558
Зарегистрирован: Вт янв 28, 2003 10:21
Контактная информация:

Сообщение Vital »

Спасибо Белый С., я уже сделал, :kettle:, что тут поделаешь :) Новый Год все таки :beer:
Аватара пользователя
Белый С.
Завсегдатай
Сообщения: 2526
Зарегистрирован: Пн дек 22, 2003 22:43
Откуда: Выведен из аксиом
Контактная информация:

Сообщение Белый С. »

Vital, ничего, я зато кой-чего повспоминал, а то так давно не программировал :) Так хоть сделал как я писал или иначе? (Самый дубовый вариант: считать всё в память, удалить и записать обратно, считаю слишком некрасивым)
Аватара пользователя
Vital
Продвинутый
Сообщения: 558
Зарегистрирован: Вт янв 28, 2003 10:21
Контактная информация:

Сообщение Vital »

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

Вернуться в «Программирование»