Delphi в мире Юникода


         

Вызов SizeOf для буферов


Вызов SizeOf при использовании символьных массивов должен быть проверен на корректность. Рассмотрим следующий код: procedure TDemoForm.Button1Click(Sender: TObject); var var   P: array[0..16] of Char; begin   StrPCopy(P, 'This is a string');   Memo1.Lines.Add('Length of P is ' +  IntToStr(Length(P)));   Memo1.Lines.Add('Size of P is ' +  IntToStr(SizeOf(P))); end;

Вот что этот код выведет в Memo1: Length of P is 17 Size of P is 34

В этом коде Length вернет количество символов в данной строке (плюс терминальный символ), а SizeOf вернет количество байтов, использованных этим массивом, в данном случае 34, то есть по два байта на символ. В предыдущих версиях Delphi этот код вернул бы 17 в обоих случаях.



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