1

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

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

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

IBM Standard EHLLAPI 的原型是:[long hllapi (LPWORD, LPSTR, LPWORD, LPWORD); IBM 增强型 EHLLAPI 的原型是:[long hllapi (LPINT, LPSTR, LPINT, LPINT);

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

#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 函数的返回码在第 4 个参数的值中返回,而不是作为函数的值。

4

1 回答 1

0

您需要先将 hapi_c.h 转换为 Delphi(如果您在开始阅读之前从未这样做过:Rudy's Delphi Corner: Pitfalls of Converting

于 2010-01-23T20:08:49.193 回答