> AnsiStrings を追加して明示的に AnsiStrings を
Move 関数を使ってしまう手もあります.
Move 関数を使用する場合は uses に AnsiStrings は不要です.
※ Length(Ansi文字変数) はバイト数を返します.
procedure TForm1.Button3Click(Sender: TObject);
var
LAnsiString : AnsiString;
LPAnsiChar : PAnsiChar;
begin
LAnsiString := '日本語 ABC 文字列';
LPAnsiChar := AllocMem(Length(LAnsiString) + 1);
try
Move(LAnsiString[1], LPAnsiChar^, Length(LAnsiString));
Memo1.Lines.Add(string(LPAnsiChar));
finally
FreeMem(LPAnsiChar);
end;
end;
|