web-dev-qa-db-ja.com

文字列の内容をchar配列にコピーする

文字列の内容をchar配列にコピーしたい。

このコードを使用できますかStrLCopy(C, pChar(@S[1]), high(C));

現在Delphi2006を使用しています。新しいバージョンでUnicodeがサポートされているため、Delphiバージョンをアップグレードしても問題はありますか?

そうでない場合、この変換のコードは何でしょうか?

15
Bharat

文字列を配列にコピーする場合は、 StrPLCopy を優先します。

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

これは、Unicodeが有効な場合でも、Delphiのすべてのバージョンで機能します。 CSの文字タイプは同じである必要があります。その関数を使用してAnsi文字とUnicode文字を変換しようとしないでください。

しかし、StrLCopyも問題ありません。ただし、それほど多くのポインタコードは必要ありません。 Delphiは、文字列をPCharに変換する方法をすでに知っています。

StrLCopy(C, PChar(S), High(C));
16
Rob Kennedy

これは、簡単なテストで機能します。

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;
6
Ken White