使用delphi调用dll - pcshll32.dll

时间:2010-01-23 18:14:32

标签: c++ delphi hllapi

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

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

  1. EHLLAPI功能编号(输入)
  2. 数据缓冲区(输入/输出)
  3. 缓冲区长度(输入/输出)
  4. 展示空间位置(输入);返回代码(输出)
  5. 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个参数的值返回,而不是函数的值。

1 个答案:

答案 0 :(得分:0)

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