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

Вниз

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

 
sydenis   (2007-10-20 13:08) [0]

Есть файло afile:=TFileStream.Create("file.txt",fmOpenReadWrite)
Надо уменьшить его размер путём удаления текста с 20й по 30ю позиции.  Как удалить эти символы?


 
DevilDevil   (2007-10-20 13:27) [1]

1) afilepostsize := afile.Size - 30;
2) считать в память данные из файла с позиции 30, размером afilepostsize
3) записать в файл с позиции 20 из памяти, размером afilepostsize
4) afile.size := 20 + afilepostsize


 
sydenis   (2007-10-20 13:43) [2]

сэнкс
так и будем делать.  сурово аднако...
странно, что нет чего-то более человеческого типа afile.Delete(FromPos,Counter)
:((


 
Leonid Troyanovsky ©   (2007-10-20 13:53) [3]


> sydenis   (20.10.07 13:43) [2]

> странно, что нет чего-то более человеческого

Чтоб неповадно было.

--
Regards, LVT.


 
DevilDevil   (2007-10-20 14:14) [4]

> странно, что нет чего-то более человеческого типа afile.
> Delete(FromPos,Counter)


Согласен!
а так же read/write String, Int, byte, ...

можно что сделать...

type
  TStreamEx = class(TStream)
  public
      procedure Delete(FromPos, Counter : int64);
      procedure WriteString(const S : string);
      function   ReadString : string;

      ....
  end;

procedure SomeProc(some_parameters);
var
 Stream : TStreamEx;
begin
 Stream := TMemoryStream.Create;
 // или
 // Stream := TMemoryStream.Create;

 Stream.WriteString("Bla-bla-bla");
 ...
end;


 
DevilDevil   (2007-10-20 14:14) [5]

> странно, что нет чего-то более человеческого типа afile.
> Delete(FromPos,Counter)


Согласен!
а так же read/write String, Int, byte, ...

можно что сделать...

type
  TStreamEx = class(TStream)
  public
      procedure Delete(FromPos, Counter : int64);
      procedure WriteString(const S : string);
      function   ReadString : string;

      ....
  end;

procedure SomeProc(some_parameters);
var
 Stream : TStreamEx;
begin
 Stream := TMemoryStream.Create;
 // или
 // Stream := TMemoryStream.Create;

 Stream.WriteString("Bla-bla-bla");
 ...
end;


 
DevilDevil   (2007-10-20 14:16) [6]

1) сорри за дубль
2) правка:
Stream := TMemoryStream.Create;
// или
// Stream := TFileStream.Create(...);


 
sydenis   (2007-10-20 15:09) [7]


> Согласен!
> а так же read/write String, Int, byte, ...
можно что сделать...

наследника-то сделать можно, тока лень ради одного раза всё это городить...
а насчёт Delete(FromPos,Counter) можно ведь было бы вполне универсально сделать если Counter в байтах.   Имхо на асме такая процедура выглядела бы вполне изящно...  Сделать её виртуальной и пусть кто хочет переписывает в наследниках - чтоб вместо байтов размер хранящихся структур и т.п.  ;))


 
DevilDevil   (2007-10-20 20:45) [8]

мда...


 
Германн ©   (2007-10-21 01:39) [9]


> странно, что нет чего-то более человеческого типа afile.
> Delete(FromPos,Counter)

Ничего странного. Если речь идёт о тексте, то только идиот будет придумывать что-то, что работает (в частности удаляет) не по смыслу текста, а по порядковому номеру символа.


 
Плохиш ©   (2007-10-21 02:10) [10]


> sydenis   (20.10.07 13:43) [2]
> сэнкс
> так и будем делать.  сурово аднако...
> странно, что нет чего-то более человеческого типа afile.
> Delete(FromPos,Counter)

Советую всё-таки прочитать про устройства последовательного доступа...


 
sydenis   (2007-10-21 02:29) [11]


> Советую всё-таки прочитать про устройства последовательного
> доступа...

спасибо посмотрю,  хотя свою задачу я уже решил :)

> только идиот будет придумывать что-то, что работает не по смыслу текста

и только идиот будет делать громкие заявы на своём маленьком бытовом опыте


 
Германн ©   (2007-10-21 02:55) [12]


> sydenis   (21.10.07 02:29) [11]
>
>

Я не хотел употреблять этот термин в отношении тебя. Но ты не оставляешь мне других вариантов. Примите и прочь! :(



Страницы: 1 вся ветка

Текущий архив: 2007.11.11;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.022 c
2-1192782953
apic
2007-10-19 12:35
2007.11.11
Копирование изображения


15-1190524333
vrem
2007-09-23 09:12
2007.11.11
Подскажите программу сделать vob!


2-1192902797
Jimmy
2007-10-20 21:53
2007.11.11
Изменить цвет отдельных символов Label


2-1192950817
2pac
2007-10-21 11:13
2007.11.11
CreateWindowEx - первый и четвертый параметры


2-1192771946
dumka
2007-10-19 09:32
2007.11.11
Подстановочное поле.