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

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

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

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

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

2 ответа

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

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

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

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

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


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

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;

licensed under cc by-sa 3.0 with attribution.