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

linlingwei 2013-09-05 04:34:02
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也不行。
...全文
364 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tp26021340 2014-03-13
  • 打赏
  • 举报
回复
引用 7 楼 linlingwei 的回复:
着急呀,各位大师给个方案呀。
我也没有此类问题,大侠解决了没有关!!!
linlingwei 2013-09-08
  • 打赏
  • 举报
回复
着急呀,各位大师给个方案呀。
linlingwei 2013-09-06
  • 打赏
  • 举报
回复
to simonhehe: 还是不行,不能正确显示数字。
simonhehe 2013-09-06
  • 打赏
  • 举报
回复
这样试试

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;

linlingwei 2013-09-06
  • 打赏
  • 举报
回复
to simonhehe: 是的
simonhehe 2013-09-06
  • 打赏
  • 举报
回复
com_Send参数的传人内容正常, 接收内容不正常?
linlingwei 2013-09-06
  • 打赏
  • 举报
回复
to iamduo: 能佛给个例子,本人菜鸟,多谢。
iamduo 2013-09-06
  • 打赏
  • 举报
回复
procedure send_led(n_string:string); var PDStr:string; begin PDStr:=Chr(27)+Chr(81)+Chr(65)+n_string +Chr(13); try com_send(PAnsiChar(''),1) ; com_send(PAnsiChar(PDStr),Length(PDStr)) ; // 这里 except end; end; 如果还不行。 把这里,先 Unicode 转 AnsiString ,然后再传。

5,916

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧