Форум: "Прочее";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];
ВнизRadStudio XE4. Дожили... Найти похожие ветки
← →
DVM © (2013-05-05 11:16) [3]
> Даже банальный record записать в стрим скоро станет проблемой,
> ибо (из TStream):
Вот такое извращение предлагается в данный момент для записи скажем record-а (обратите внимание на дополнительный Move):
procedure TStream.WriteBuffer(const Buffer; Count: Longint);
var
Buf: TBytes;
LTotalCount,
LWrittenCount: Longint;
begin
SetLength(Buf, Count);
Move(Buffer, Buf[0], Count);
{ Perform a write directly. Most of the time this will succeed
without the need to go into the WHILE loop. }
LTotalCount := Write(Buf, 0, Count);
while (LTotalCount < Count) do
begin
{ Try to write a contiguous block of <Count> size }
LWrittenCount := Write(Buf, LTotalCount, (Count - LTotalCount));
{ Check if we written something and decrease the number of bytes left to write }
if LWrittenCount <= 0 then
raise EWriteError.CreateRes(@SWriteError)
else
Inc(LTotalCount, LWrittenCount);
end
end;
Весь код таким образом будет только и заниматься как копирование данных из/в этот TBytes где попало. Кроме увеличения потребляемой памяти и замедления программы это ни чего не дает.
Страницы: 1 2 3 4 5 вся ветка
Форум: "Прочее";
Текущий архив: 2014.02.16;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.003 c