Советы по Delphi

         

TMemoryStream


Думайте о потоке памяти как о расположенном в памяти файле. Команды для работы с потоком очень похожи на команды для работы с файлами. (В действительности, это ближе к команде blockwrite.)

Вот "медленный" путь записи строки в поток:

    for i := 1 to Length(s) do memstream.Write(s[i], 1);

Данный код пишет за один проход один символ строки. Просто и легко для понимания, но немного медленно в работе. Для ускорения процесса можно сделать так:

    memstream.Write(s[1], Length(s));

Две строчки делают то же самое, они добавляют символы в поток. Если вы не делали никаких перемещений внутреннего курсора потока (seek), символы просто добавляются в конец.

Теперь, для соблюдения перевода каретки, вы должны добавлять эти спецсимволы сами:

    memstream.Write(#13, 1); memstream.Write(#10, 1);

Или вы можете использовать более изощренный метод:

    procedure StreamWriteStr(var ms: TMemoryStream; s: string); begin ms.Write(s[1], Length(s)); end;
procedure StreamWriteLnStr(var ms: TMemoryStream; s: string); begin StreamWriteStr(ms, s + #13#10); end;

Также, вы можете создать собственный класс-потомок TMemoryStream, с методом записи строк. [001717]



Содержание раздела