Копирование строкового содержимого в массив char - PullRequest
14 голосов
/ 14 декабря 2010

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

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

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

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

Ответы [ 2 ]

16 голосов
/ 14 декабря 2010

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

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

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

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

StrLCopy(C, PChar(S), High(C));
6 голосов
/ 14 декабря 2010

Это работает, в быстром тесте:

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;
...