一段小代码 delphi 7下能用,delphi XE2下就不能用了,大家伙儿给看看

一段小代码 delphi 7下能用,delphi XE2下就不能用了,大家给看看。
function com_init(com:Integer; baud:Dword):Boolean;stdcall;external 'api_com.dll';
function com_rest:Boolean;stdcall;external 'api_com.dll';
function com_send(buf:pchar; len:Integer):Boolean;stdcall;external 'api_com.dll';
下面这段代码,delph7正常没问题,怎么到delphi xe2下就不能用了,客显出现的数字和输入的数字不一致。

procedure send_led(n_string:string);
var PDStr:string;
begin
PDStr:=Chr(27)+Chr(81)+Chr(65)+n_string +Chr(13);
try
com_send(pchar(''),1) ;   
com_send(pchar(PDStr),Length(PDStr)) ;
except
end;

end;
我把pchar换成PAnsiChar也不行。
------解决方案--------------------
这样试试

function com_init(com:Integer; baud:Dword):Boolean;stdcall;external 'api_com.dll';
function com_rest:Boolean;stdcall;external 'api_com.dll';
function com_send(buf:PAnsiChar; len:Integer):Boolean;stdcall;external 'api_com.dll';


procedure send_led(n_string : AnsiString);
var PDStr: AnsiString;
begin
  PDStr:= AnsiChar(Chr(27)) + AnsiChar(Chr(81)) + AnsiChar(Chr(65)) + n_string + AnsiChar(Chr(13));
  try
    com_send(PAnsiChar(''),1) ;
    com_send(PAnsiChar(PDStr),Length(PDStr));
  except
  end;
end;