Я хочу вызвать функцию DLL в Delphi 2010. Эта функция берет строку и записывает ее на принтер с интерфейсом USB. Я не знаю, на каком языке разработана DLL. Согласно документации, синтаксис функции:
int WriteUSB(PBYTE pBuffer, DWORD nNumberOfBytesToWrite);
Как мне объявить и использовать мою функцию в Delphi?
Я объявляю функцию следующим образом:
var
function WriteUSB(myP:pByte;n:DWORD): integer ; external 'my.dll';
Должен ли я использовать stdcall
или cdecl
в декларации?
Я вызываю функцию DLL следующим образом:
procedure myProc;
var
str : string:
begin
str := 'AAAAAAAAAAAAAAAAAAAAA';
WriteUSB(str,DWORD(length(tmp)));
end;
Но этот код постоянно дает мне исключение. Я знаю, что проблема в том, что String
это Unicode и каждый символ> 1 байт. Я пытался преобразовать в различные типы строк (AnsiChar
и ShortString
), но мне не удалось.
Как правильно это сделать?