2010-01-23 2 views
1

Мне нужно вызвать функцию hllapi из pcshll32.dll, используя delphi. Он работает с персональными сообщениями ibm. Как я могу изменить приведенный ниже код на delphi? Благодаря !!!Вызов dll - pcshll32.dll с помощью delphi

Точка входа EHLLAPI (hllapi) всегда вызывается со следующими четырьмя параметрами:

  1. EHLLAPI Функция Количество (вход)
  2. Буфер данных (вход/выход)
  3. Буфер Длина (вход/выход)
  4. Представление Космическое положение (вход); Код возврата (выход)

Прототип IBM Standard EHLLAPI является: [длинная hllapi (LPWORD, LPSTR, LPWORD, LPWORD); Прототип для IBM Enhanced EHLLAPI: [long hllapi (LPINT, LPSTR, LPINT, LPINT);

Каждый параметр передается по ссылке не по значению. Таким образом, каждый параметр вызова функции должен быть указателем на значение, а не самим значением. Например, следующий является правильным примером вызова функции состояния EHLLAPI Query Session:

#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 параметр, а не как значение функции.

ответ

0

Вы должны преобразовать hapi_c.h в Delphi первый (если вы никогда не делали этого прежде, чем Вы могли бы хотеть, чтобы начать читать здесь: Rudy's Delphi Corner: Pitfalls of Converting