首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用delphi调用dll - pcshll32.dll

使用delphi调用dll - pcshll32.dll
EN

Stack Overflow用户
提问于 2010-01-23 18:14:31
回答 1查看 1.1K关注 0票数 1

我需要用delphi调用pcshll32.dll的hllapi函数。它适用于ibm的个人通信。如何将下面的代码更改为delphi?谢谢!

EHLLAPI入口点(hllapi)总是使用以下四个参数调用:

  1. EHLLAPI函数号(输入)
  2. 数据缓冲区(输入/输出)
  3. 缓冲区长度(输入/输出)
  4. 表示空间位置(输入);返回代码(输出)

IBM标准EHLLAPI的原型是:[ LPWORD,LPSTR,LPWORD,LPWORD,LPWORD],IBM增强型EHLLAPI的原型是[LPINT (LPINT,LPSTR,LPINT,LPINT);

每个参数是通过引用传递的,而不是通过值传递的。因此,函数调用的每个参数都必须是指向值的指针,而不是值本身。例如,下面是调用EHLLAPI查询会话状态函数的正确示例:

代码语言:javascript
复制
#include "hapi_c.h"
struct HLDQuerySessionStatus QueryData;
int Func, Len, Rc;
long Rc;
memset(QueryData, 0, sizeof(QueryData)); // Init buffer

QueryData.qsst_shortname = ©A©; // Session to query
Func = HA_QUERY_SESSION_STATUS; // Function number
Len = sizeof(QueryData); // Len of buffer
Rc = 0; // Unused on input
hllapi(&Func, (char *)&QueryData, &Len, &Rc); // Call EHLLAPI
if (Rc != 0) { // Check return code
// ...Error handling
}

hllapi调用中的所有参数都是指针,EHLLAPI函数的返回代码以第四个参数的值返回,而不是作为函数的值返回。

EN

回答 1

Stack Overflow用户

发布于 2010-01-23 20:08:49

您需要首先将hapi_c.h转换为德尔福(如果您以前从未这样做过,可能需要在这里阅读:鲁迪的德尔菲角:转换的陷阱 )。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2124137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档