Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.02.05;
Скачать: CL | DM;

Вниз

удалить часть файла   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.048 c
2-1137783836
Dima1
2006-01-20 22:03
2006.02.05
Вопрос по TRichEdit


2-1137615749
medvedenator
2006-01-18 23:22
2006.02.05
Системный реестр, НУЖНА СРОЧНО ПОМОЩЬ!!!


4-1133008773
vvvaaa
2005-11-26 15:39
2006.02.05
Как активизировать окно


1-1135694937
hgd
2005-12-27 17:48
2006.02.05
Скачать картинку и вывести в Image


15-1136657120
Суслик
2006-01-07 21:05
2006.02.05
Breakpoints в runtime пакетах