文字列の内容をchar配列にコピーしたい。
このコードを使用できますかStrLCopy(C, pChar(@S[1]), high(C));
現在Delphi2006を使用しています。新しいバージョンでUnicodeがサポートされているため、Delphiバージョンをアップグレードしても問題はありますか?
そうでない場合、この変換のコードは何でしょうか?
文字列を配列にコピーする場合は、 StrPLCopy
を優先します。
StrPLCopy(C, S, High(C));
これは、Unicodeが有効な場合でも、Delphiのすべてのバージョンで機能します。 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;