15

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

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

現在Delphi2006を使用しています。新しいバージョンで提供されているUnicodeサポートのためにDelphiバージョンをアップグレードした場合、問題は発生しますか?

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

4

2 に答える 2

17

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

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

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

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

StrLCopy(C, PChar(S), High(C));
于 2010-12-14T15:49:47.130 に答える
7

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

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;
于 2010-12-14T14:55:48.913 に答える