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


         

Использование Move


Следует проанализировать использование функции Move при работе со строками или символьными массивами. Рассмотрим следующий код:  var    Count: Integer;    Buf1, Buf2: array[0..255] of Char;  begin    // Существующий код - неправильный, потому что string = UnicodeString    Count := Length(Buf1);    Move(Buf1, Buf2, Count);       // Правильный код для Юникода    Count := SizeOf(Buf1);                // <<-- Задание размера буфера в байтах    Count := Length(Buf1) * SizeOf(Char); // <<-- Задание размера буфера в байтах    Move(Buf1, Buf2, Count);  end;

Length возвращает размер в символах, но Move ожидает, что Count будет в байтах. В этом случае вместо Length нужно использовать SizeOf (или нужно умножить Length на размер Char).



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