Delphi 2010에서 DLL 함수를 호출하려고합니다.이 함수는 문자열을 가져와 USB 인터페이스를 사용하여 프린터에 씁니다. 어떤 언어로 DLL이 개발되었는지 모르겠습니다. 문서에 따르면 함수의 구문은 다음과 같습니다.DLL에 대한 매개 변수로 Delphi 문자열 보내기
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
이 유니 코드이고 각 문자가 1 바이트를 초과한다는 것입니다. 다른 문자열 유형 (AnsiChar
및 ShortString
)으로 변환하려고 시도했지만 실패했습니다.
올바른 방법은 무엇입니까?
이것은 작동하지 않습니다. OP는 D2010을 사용하고 있습니다. 즉, String 및 PChar는 유니 코드이며 char 당 1 바이트 이상일 수 있습니다. DLL이 BYTE에 대한 포인터를 찾고 있으며 DLL 함수가 유니 코드를 인식하고 있다는 표시가 없습니다. –