PWideChar으로 바꾸니 정상적으로 들어오네요!
오랑캐꽃 님이 쓰신 글 :
: 리턴값이 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] );
: :
: : 이런식으로 했더니 정상적으로 나오는데 끝까지 보이진않네요..
: : 이게 정상적인 방법도 아닌거같고요..(홀수를 넣으면 값이 깨집니다.)
: :
: : 이건 어찌 받아서 처리해야하나요??
|