나는 내 응용 프로그램에서 다음과 같은 기능을 가지고 :PChar를 콘솔에 인쇄 할 때 왜 물음표가 나타 납니까?
function GetDeviceChannelInfo_HSI(PortNumber, Address, ChNumber: Integer;
var State: Integer): PChar; stdcall; external DLL_FILENEAME;
내가하고 싶은 모든 콘솔에이 결과를 인쇄 할 수 있습니다. 그래도 무슨 일이 일어나면 WriteLn
이라고 부르면 응답은 모두 ???????????
입니다.
콘솔에서이를 인쇄하는 방법을 모르고 있다고 가정합니다. 아마도 그것은 유니 코드 또는 무언가이며 인쇄 할 수 없습니까?
저는 델파이를 처음 접했고, 왜 이것이 될 수 있는지 전혀 모르겠습니다. 포인터 주소를 실제로 인쇄하고 있습니까? 나는 정말로 모른다. 어떤 도움을 주시면 감사하겠습니다.
함수 선언이 맞습니까? 대부분의 DLL 호출은 채우기 버퍼를 제공하도록 요청합니다. 당신은 버퍼를 할당하고, 그것을 전달하며, 리턴 할 때 버퍼는 DLL 정보로 채워진다. PChar를 반환하는 것은 아주 드문 일입니다. 왜냐하면 DLL이 메모리를 할당하고 호출 응용 프로그램에 포인터를 반환 할 것이기 때문입니다. DLL을 빌려줄 방법이 없습니다 (델파이/C++ 빌더에서 컴파일되고'ShareMem'을 사용하지 않는 한).). 당신이 사용하고있는 신고서는 어디서 났습니까? –
PChar를 PAnsiChar로 변경하면 문제가 해결됩니다. 이것은 Ansi to Unicode 델파이 형식을 사용하지 않은 사람들 (PChar는'PAnsiChar '를 의미하는 것으로, 지금은 PWideChar를 의미 함)을 사용하지 않은 사람들로부터 나온 약 30 개의 질문과 중복됩니다. –