Подтвердить что ты не робот

Копирование содержимого строки в массив char

Я хочу скопировать содержимое в строку в массив char.

Могу ли я использовать этот код StrLCopy(C, pChar(@S[1]), high(C));

В настоящее время я использую Delphi 2006. Будут ли какие-либо проблемы, если я обновляю версию Delphi из-за поддержки Unicode в новых версиях?

Если нет, каков может быть код для этого преобразования?

4b9b3361

Ответ 1

Когда вы копируете строку в массив, предпочитайте StrPLCopy.

StrPLCopy(C, S, High(C));

Это будет работать во всех версиях Delphi, даже если работает Unicode. Типы символов C и S должны быть одинаковыми; не пытайтесь использовать эту функцию для преобразования символов Ansi и Unicode.

Но StrLCopy тоже хорошо. Однако вам не нужно иметь столько кода указателя. Delphi уже знает, как преобразовать строку в PChar:

StrLCopy(C, PChar(S), High(C));

Ответ 2

Это работает в быстрой проверке:

var
  ch: array[0..10] of Char;
  c: Char;
  x: Integer;
  st: string;
begin
  s := 'Testing';
  StrLCopy(PChar(@ch[0]), PChar(s), High(ch));
  x := 100;
  for c in ch do
  begin
    Canvas.TextOut(x, 100, c);
    Inc(c, Canvas.TextWidth(c) + 3);
  end;
end;