Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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
15-1377900392
картман
2013-08-31 02:06
2014.02.16
широкий монитор...


15-1378133550
Степан Потапов
2013-09-02 18:52
2014.02.16
Кто переименовывает, а кто нет? (опрос)


1-1321391616
Человек
2011-11-16 01:13
2014.02.16
Многопоточное логирование


2-1366625537
novai
2013-04-22 14:12
2014.02.16
проблемма с BorderStyle:= bsNone;


2-1366897985
HDC
2013-04-25 17:53
2014.02.16
отрисовка текста через TCanvas





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский