2010-01-23 73 views
1

我需要使用delphi調用pcshll32.dll的hllapi函數。它適用於ibm的個人通信。我如何將代碼更改爲delphi?謝謝 !!!調用dll - 使用delphi的pcshll32.dll

的EHLLAPI入口點(HLLAPI)總是調用下列四個參數:

  1. EHLLAPI功能編號(輸入)
  2. 數據緩衝器(輸入/輸出)
  3. 緩衝區長度(輸入/輸出)
  4. 演示空間位置(輸入);返回代碼(輸出)

原型爲IBM標準EHLLAPI是: [長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的值返回參數,而不是函數的值。

回答