Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
ВнизКак удалить из файла N символов начиная с I? Найти похожие ветки
← →
diww (2003-09-30 12:54) [0]Как удалить из тесктового файла N символов начиная с символа I?
← →
Brahman (2003-09-30 13:02) [1]Загружать построчно, считать символы и контролировать на N
Если I в этой же строке - удалить от и до
Иначе удалить до конца строки
и искать I не записывая строки
← →
PVOzerski (2003-09-30 13:03) [2]Закачать всё в строку (напр., через BlockRead), потом - Delete(s,I,N), потом - rewrite и blockwrite.
← →
Izyum (2003-09-30 13:07) [3]1. Открывам файл для редактирования TFileStream.Create
2. Копируем во временный (второй) поток все от 0 до I-1
3. Дописываем во временный поток все, начиная с N+I-1 до конца
4. Удаляем все из первого потока
5. коприуем в основной из временного
6. сохраняем все на диск
Может не очень красиво, но первое что пришло в голову:)
← →
Song (2003-09-30 13:17) [4]Если файл небольшой, загрузи в TStrings, потом удали циклом
← →
Zergling (2003-09-30 13:39) [5]TStringList.Text и Delete вполне хватит.
← →
VAleksey (2003-09-30 14:55) [6]Перекачать в другой файл до символа I.
Удалить исходный.
Переименовать временный.
:-))
← →
Verg (2003-09-30 15:53) [7]
var
Buffer : pchar; // фартук
Rp, // откель
Wp, // куды
readed : integer; // скока
Fs : file; // файло
.......................
Reset(Fs,1);
..........................
GetMem(Buffer, <да, там, сколь не жалко>);
try
Rp:= I+N;
Wp:= I;
repeat
Seek(Fs, Rp);
BlockRead(Fs,Buffer^,BufSize, Readed);
Rp:=FilePos(Fs);
if Readed>0 then
begin
Seek(Fs, Wp);
BlockWrite(Fs, Buffer^, Readed);
Wp:=FilePos(Fs);
end;
until Readed<=0;
Seek(Fs, Wp);
Truncate(Fs);
finally
FreeMem(Buffer);
end;
end;
finally
Close(Fs);
end;
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2003.10.09;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c