Delphi 7移植到Delphi XE5碰到及解决的问题 (1)

博主在将应用程序从Delphi D7更新到XE5的过程中遇到了编译错误。具体表现为在调用函数ExitDocimasy时,由于类型不兼容(E2010 Incompatible types: 'PAnsiChar' and 'TCaption')导致编译警告和错误。解决方法是将TEdit的Text转换为AnsiString后再传递给PAnsiChar。经过修改后的代码成功编译。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在把一些应用中的项目从D7 升级到 XE5,碰到了不少问题,先是把部分第三方控件改为标准控件,这步比较简单,控件修改完成后在XE5中打开项目,编译,结果是一堆Warning,其中还有几个Error,现把问题记录下来,方便查看。

原代码:

ExitDocimasy(BaseParam.CommProtocol,
                       PAnsiChar((arAddr[iIndex] as TEdit).Text),
                       Length(Trim((arAddr[iIndex] as TEdit).Text)),
                      @arBuf[0], iSendLen);

函数定义:

function ExitDocimasy(ProtocolType: Integer; StrAddr: PAnsiChar; iAddrLen: Integer;
    Buf: Pointer; var iDataLen: Integer): Integer; stdcall; external 'PRODLL.dll';

编译提示:

E2010 Incompatible types: 'PAnsiChar' and 'TCaption'

解决方法:

ExitDocimasy(BaseParam.CommProtocol,
                       PAnsiChar(AnsiString((arAddr[iIndex] as TEdit).Text)),
                       Length(Trim((arAddr[iIndex] as TEdit).Text)),
                      @arBuf[0], iSendLen);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值