Mam problem z biblioteka DLL napisana w C. Jak wywolac funkcje ktora ma argument typu strukturalnego zeby nie wysypywalo sie bledem pamieci?
Moze napiszesz cos wiecej. Jak wyglada funkcja, struktura...
def funkcji wyglada tak
int GetStatus_CashRegister(
tCASH_REGISTER_STATUS * aStatusOutPtr
);
struktura tak
typedef struct
{
BOOL FSK;
BOOL CMD;
BOOL PAR;
BOOL TRF;
} tCASH_REGISTER_STATUS;
tworze moja strukture
pCASH_REGISTER_STATUS=^tCASH_REGISTER_STATUS;
tCASH_REGISTER_STATUS=record
FSK : Boolean;
CMD : Boolean;
PAR : Boolean;
TRF : Boolean;
end;i
funkcje laduje tak
function GetStatus_CashRegister(aStatusOutPtr : pCASH_REGISTER_STATUS):Integer; external 'ThermalServiceLibrary.dll';
funkcje wywoluje tak
var
s: pCASH_REGISTER_STATUS;
begin
new(s);
GetStatus_CashRegister(s)
end
Tworzy sie blad pamieci w bibliotece
Moze pomoze:
Zamiast Boolean daj BOOL i ...
teger; stdcall; external 'Ther
...</delphi>
niestety BOOL nie przyjmuje [glowa]
Tak jak foflik mówi: na pewno musi być dyrektywa stdcall, a jeśli wtedy nie będzie działać, to zamiast boolean możesz spróbować longbool.
Tak jak foflik mówi: na pewno musi być dyrektywa stdcall, a jeśli wtedy nie będzie działać, to zamiast boolean możesz spróbować longbool.
Albo zamiast wskaźnika przekazywać parametr poprzez referencję (var)