![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Можно ли добавить строку в поток [D6, D7, WinXP]
Cut'gun © (2006-03-02 11:13:00)Здраствуйте!
У меня следующий вопрос можно ли после того как мы присвоили потоку TMemoryStream что-либо дописать несколько символов в начале потока. Попробовал метод Write, но он кажется заменяет то что уже записано. Есть подозрение что можно попробовать по ссылке или использовать SendMessage с соответсвенными флагами, но я в этом пока не силён =(. Если возможно ответ снабдите каим нибудь примером кода. Заранее спасибо.
MBo (2006-03-02 13:11:00) [1]>Гаврила © (02.03.06 12:56) [3]
Да, тоже вариант.
>Т.е. я так понял есть способ склеить два потока?
>Можно пример кода?
см. метод TStream.CopyFrom
Cut'gun (2006-03-02 13:02:00) [2]2MBo
> с использованием доп. потока или временного буфера.
Т.е. я так понял есть способ склеить два потока?
Можно пример кода?
Гаврила (2006-03-02 12:56:00) [3]
> MBo ©
Функция move нормально отработает и при частичном совпадении буферов
MBo (2006-03-02 12:38:00) [4]> дописать несколько символов в начале потока.
нельзя. Только с использованием доп. потока или временного буфера.
TUser (2006-03-02 11:55:00) [5]Не тестировал
procedure Insert (Str: TStream; Position: integer;
const Buffer; Count: integer);
var b: array of byte;
n: integer;
begin
n := Str.Size - Position;
Str.Size := Str.Size + Count;
SetLength (b, n);
Str.Position := Position;
Str.ReadBuffer (b[0], n);
Str.Position := Position;
Str.WriteBuffer (Buffer, Count);
Str.WriteBuffer (b, n);
SetLength (b, 0);
end;