![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с TFileStream
Antonn © (2005-06-28 06:29:00)Здравствуйте! Можно ли, используя TfileStream, добавлять в файл байты так, чтобы они не затирали другие? Т.е. вставить в файл со смещением последующих. И вырезать также, без перезаписи остальной части файла.
На данный момент использую несколько потоков,копирую из одного в другой, по идее файл заново переписываю. А он 100Мб, довольно медленно работает алгоритм.
Poirot (2005-06-28 11:55:00) [1]TUser © (28.06.05 11:52) [5]
Помоему маленько не то. ты добавляешь, а ему нать вставить куда либо! -"т.е. вставить в файл со смещением последующих."
TUser (2005-06-28 11:52:00) [2]
program FileStr;
uses Classes, SysUtils;
var F: TFileStream;
S: string;
B: string[10];
begin
S:=ExtractFilePath(ParamStr(0))+'FileStr.txt';
if FileExists(S) then
F:=TFileStream.Create(S,fmOpenReadWrite)
else F:=TFileStream.Create(S,fmCreate);
try
F.Position:=F.Size;
B:='1234567890';
F.WriteBuffer(B,10);
finally
F.Free;
end;
end.
Digitman (2005-06-28 09:09:00) [3]
> вырезать также, без перезаписи остальной части файла
файл, отображенный в память (см. MMF) вместо файл-стрима, думаю, ощутимо эффективней будет
> вставить в файл со смещением последующих
без перезаписи тут никак не обойдешься
Anatoly Podgoretsky (2005-06-28 09:04:00) [4]Невозможно записать куда то байты не переписав другие. Вопрос из серии как мне удалить чисто байт из байтовой переменной.
default (2005-06-28 08:57:00) [5]можешь посмотреть в сторону индексных файлов
3DxFantastika (2005-06-28 08:46:00) [6]я думаю нет