PB 调用 delphi DLL 得到返回值乱码
delphi 中的代码:function Exchange(out ywlx:pchar):integer;stdcall; begin
ywlx:= pchar('返回字符串到PB!');
result := 1;
end;
exports
Exchange name 'Exchange';
PB 中的声明:function int Exchange(ref string ywlx) library "interface.dll"PB 按钮下的代码:
string ls_ywlx
Exchange(ref ls_ywlx)
messagebox('提示','调用函数成功!返回信息如下: ' + ls_ywlx)返回的提示为:调用函数成功!返回信息如下: l}ice
delphi 中的代码:function Exchange(out ywlx:pchar):integer;stdcall; begin
ywlx:= pchar('返回字符串到PB!');
result := 1;
end;
exports
Exchange name 'Exchange';
PB 中的声明:function int Exchange(ref string ywlx) library "interface.dll"PB 按钮下的代码:
string ls_ywlx
Exchange(ref ls_ywlx)
messagebox('提示','调用函数成功!返回信息如下: ' + ls_ywlx)返回的提示为:调用函数成功!返回信息如下: l}ice
解决方案 »
- ClientDataSet 不能提交数据到数据库
- DevCo 正式 更名为 CodeGear...(转自李维)
- DLL封装的窗口问题:关闭dll窗口后,为什么MDI主窗口就最小化了?
- 动态创建报表中遇到的问题。
- 最简单的SQL查询语句,怎么也出错呀????
- 请问用RAR命令行参数能不能压缩成ZIP,谁有好的压缩控件也行,急在线等待!!!!
- 小弟想找工作!熟悉delphi+sql server200,开发过两个项目!在上海!请各位大侠出点意见
- 请大家来解答,有更多的分等你们拿
- 请问vista是否支持mysql,sybase,ado和bde
- 如何能在两台计算机之间复制文件,不能用共享!
- 请教达人一个将商品类别的数据库导入到Treeview的算法(在线等啦~)
- fromcreate里面不能同时打开两个串口?
譬如 Delphi 默认的是从左到右读取参数; Window API 是从右到左读取参数.如果没有调用约定, Delphi 就无法使用由 C 语言编写的 Window API;
如果没有调用约定, 别的语言也无法使用由 Delphi 编写的 DLL 文件中的方法.指示字 参数读取顺序 参数删除 参数传递 备注
register 左→右 方法返回时自动删除参数 前三个参数使用CPU的三个寄存器传递; 其他使用栈传递 速度最快, 是 Delphi 的默认方式
pascal 左→右 方法返回时自动删除参数 使用栈传递参数 为兼容存在
cdecl 右→左 由调用者在调用返回时从栈中删除参数 使用栈传递参数 调用来自用 C 或 C++ 编写的共享库, 一般用于非 Windows 操作系统
stdcall 右→左 方法返回时自动删除参数 使用栈传递参数 用于调用 Windows API
safecall 右→左 方法返回时自动删除参数 使用栈传递参数 用于调用 Windows 中的双重接口中的方法(除了继承自 IInterface 和 IDispatch 的方法)
near Win16 位下的产物, 现在不用了
far
export