Форум: "Начинающим";
Текущий архив: 2007.11.11;
Скачать: [xml.tar.bz2];
Внизкак удалить текст из файла? Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 1.068 c