Вызов 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 в обоих случаях.