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

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


EHLLAPI功能编号(输入)
数据缓冲区(输入/输出)
缓冲区长度(输入/输出)
演示空间位置(输入);返回码(输出)


IBM Standard EHLLAPI的原型是:
[long hllapi(LPWORD,LPSTR,LPWORD,LPWORD);
IBM Enhanced 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个参数的值中返回,而不是在函数的值中返回。

最佳答案

您需要先将hapi_c.h转换为Delphi(如果您从未执行过此操作,则可能要在这里开始阅读:Rudy's Delphi Corner: Pitfalls of Converting

09-07 10:40