Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
1-1135863283
kyn66
2005-12-29 16:34
2006.02.05
Создание генератора случайных билетов.


15-1136257542
Искатель
2006-01-03 06:05
2006.02.05
Где можно дать объявление о поиске работы по написанию программ?


2-1137497664
Virtukon
2006-01-17 14:34
2006.02.05
Сервисы


6-1125862612
bogdan
2005-09-04 23:36
2006.02.05
Как установить сеть через телефонную линию


2-1137578934
JIurafsdf
2006-01-18 13:08
2006.02.05
Как отследить в поле число или нет?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский