리턴값이 PAnsiChar 가 아니고 PWideChar 로 보입니다...
: function TestDll(in_data: PWideChar):PAnsiChar;stdcall;
-->>
function TestDll(in_data: PWideChar):PWideChar;stdcall;
이렇게 바꿔서 다시 한 번 돌려보세요.
김동석 님이 쓰신 글 :
: Dll 을 호출해서 사용하고있습니다.
:
: function TestDll(in_data: PWideChar):PAnsiChar;stdcall;
:
: 현재 이러한 dll 함수를 사용합니다.
:
: 이를 호출하기 위해서
:
: procedure TForm1.Button1Click(Sender: TObject);
: var
: data: String;
:
: pCharBuffer:PAnsiChar;
: pWideCharBuffer:PWideChar;
: StringBuffer:WideString;
: begin
:
: data:= Edit1.Text;
: StringBuffer := data;
: pWideCharBuffer := PWideChar(StringBuffer);
:
: pCharBuffer := TestDll(pWideCharBuffer);
:
: end;
:
: 이런식으로 하였습니다.
:
: 이렇게 하여 pCharBuffer에 값이 들어오는건 확인되었는데..
:
: 전체값을 받고싶은데 어찌해야하는지 모르겠습니다.
: ShowMessage(pCharBuffer) 했더니 제일 앞에 값만 나오고,
:
: ShowMessage(pCharBuffer[0] +
: pCharBuffer[2] + pCharBuffer[4] +
: pCharBuffer[6] + pCharBuffer[8] +
: pCharBuffer[10] + pCharBuffer[12] +
: pCharBuffer[14] + pCharBuffer[16] + pCharBuffer[18] +
: pCharBuffer[20] + pCharBuffer[22] +
: pCharBuffer[24] + pCharBuffer[26] +
: pCharBuffer[28] + pCharBuffer[30] +
: pCharBuffer[32] + pCharBuffer[34] +
: pCharBuffer[36] + pCharBuffer[38] +
: pCharBuffer[40] + pCharBuffer[42] +
: pCharBuffer[44] + pCharBuffer[46] + pCharBuffer[48] +
: pCharBuffer[50] + pCharBuffer[52] +
: pCharBuffer[54] + pCharBuffer[56] +
: pCharBuffer[58] + pCharBuffer[60] +
: pCharBuffer[62] + pCharBuffer[64] +
: pCharBuffer[66] + pCharBuffer[68] +
: pCharBuffer[70] + pCharBuffer[72] );
:
: 이런식으로 했더니 정상적으로 나오는데 끝까지 보이진않네요..
: 이게 정상적인 방법도 아닌거같고요..(홀수를 넣으면 값이 깨집니다.)
:
: 이건 어찌 받아서 처리해야하나요??
|