Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Внизудалить часть файла Найти похожие ветки
← →
file (2006-01-17 14:07) [0]имею файл, как мне удалить часть его с байта X по байт Y? очень нужно
← →
Ega23 © (2006-01-17 14:11) [1]Первое, что пришло в голову - 2 потомка TStream, например TMemoryStream. В один LoadFromfile, пишешь с начала первого до байта X во второй, и с байта Y до конца.
Потом второй - SaveToFile.
← →
Игорь Шевченко © (2006-01-17 14:13) [2]Переписать в новый файл, пропустив часть с Х по Y
← →
file (2006-01-17 20:42) [3]попробую, но трудоемко, хотелось бы узнать как осуществить это именно на файле
← →
PAVIA © (2006-01-17 21:19) [4]Открываешь файл копируешь все данные начиная с Y до конца файла в позицию X; затем удаляешь точто ненужно.
procedure Seek(var F; N: Longint); -переходит на позицйию N
procedure Truncate(var F); -удаляет все начитая с текущей позиции
← →
Джо © (2006-01-17 21:21) [5]> [3] file (17.01.06 20:42)
> попробую, но трудоемко,
Что там трудоемкого? Там кода на 5, максимум 10 строк. Как именно — смотри выше посты коллег по цеху.
← →
BiN © (2006-01-17 22:05) [6]Вроде вот оно. трудоёмкое, блин
procedure DeleteStream(Stream, Temp: TStream; Len: Int64);
var
k: Int64;
begin
k:=Stream.Size-Stream.Position;
if Len<k then
begin
Stream.Seek(Len, soCurrent);
Temp.CopyFrom(Stream, k);
Stream.Seek(k+Len, soEnd);
Stream.CopyFrom(Temp, 0);
end;
Stream.Size:=Stream.Position;
end;
← →
BiN © (2006-01-17 22:11) [7]Выше в [6] ошибка
Коленка кривая.
нужно такprocedure DeleteStream(Stream, Temp: TStream; Len: Int64);
var
k: Int64;
begin
k:=Stream.Size-Stream.Position;
if Len<k then
begin
Stream.Seek(Len, soCurrent);
Temp.CopyFrom(Stream, k-Len);
Stream.Seek(k, soEnd);
Stream.CopyFrom(Temp, 0);
end;
Stream.Size:=Stream.Position;
end;
← →
Германн © (2006-01-18 02:50) [8]
> file (17.01.06 20:42) [3]
>
> попробую, но трудоемко, хотелось бы узнать как осуществить
> это именно на файле
Вот "именно на файле" - "просто" невозможно.
← →
file (2006-01-18 14:21) [9]тады вопрос, есть ли аналог truncate для tfilestream? если нет, то как быть
← →
BiN © (2006-01-18 14:37) [10]
> file (18.01.06 14:21) [9]
[7] работает для всех потомков TStream, и для TFileStream, в частности.
← →
begin...end © (2006-01-18 15:24) [11]> file (18.01.06 14:21) [9]
> есть ли аналог truncate для tfilestream?
Есть. TFileStream.Size.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.02.05;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.015 c