Witam
Walczę z taką funkcją:
extern QRcode *QRcode_encodeString(const char *string, int version, QRecLevel level, QRencodeMode hint, int casesensitive);
gdzie QRcode:
typedef struct {
int version; ///< version of the symbol
int width; ///< width of the symbol
unsigned char *data; ///< symbol data
} QRcode;
a QRecLevel i QRencodeMode to enumy mające wartosci 1,2 itp.
Moje mapowanie, które niestety nie działa to:
TArrayOfByte = array of Byte;
PArrayOfByte = ^TArrayOfByte;
TQRcode = record
version : integer;
width : integer;
symbolDataPtr : PArrayOfByte;
end;
oraz mapowanie funkcji właściwej:
QRcode_encodeStringFun : function ( content: PAnsiChar ; version : Integer; level : Integer; mode : Integer ; casesensitive : Integer) : TQRcode ; stdcall;
i przykładowe wywołanie:
var
Data : AnsiString;
QRCodeOutcome : TQRcode;
begin
Try
Data := '1234567890';
QRCodeOutcome := QRcode_encodeStringFun ( PAnsiChar (Data) , 0 , 0 , 0 , 0);
except
on E : Exception do
ShowMessage(E.ClassName+' error raised, with message : '+E.Message);
end;
end;
PS: Enumy w C doczytałem ze są typu int czyli przekazuje je z delphi dobrze.