C++Builder Programming Forum
C++Builder  |  Delphi  |  FireMonkey  |  C/C++  |  Free Pascal  |  Firebird
볼랜드포럼 BorlandForum
 경고! 게시물 작성자의 사전 허락없는 메일주소 추출행위 절대 금지
C++빌더 포럼
Q & A
FAQ
팁&트릭
강좌/문서
자료실
컴포넌트/라이브러리
메신저 프로젝트
볼랜드포럼 홈
헤드라인 뉴스
IT 뉴스
공지사항
자유게시판
해피 브레이크
공동 프로젝트
구인/구직
회원 장터
건의사항
운영진 게시판
회원 메뉴
북마크
볼랜드포럼 광고 모집

C++빌더 Q&A
C++Builder Programming Q&A
[70855] Delphi7 DLL , PChar Result 값을 C++builder2009 String 으로 받을때 문자열이 깨집니다.
초보자 [] 2562 읽음    2014-02-07 07:40
Delphi7  DLL

[CUSTOMDLL.DLL]
---------------------------------------------------------------------------------------------
function GetCFindValue(AResultIndex, AGroup, AElement: Integer): PChar; stdcall;
var
StrTemp : PChar;
begin

   StrTemp := Form1.GetFindValue(AResultIndex, AGroup, AElement);
   Result := StrTemp;

end;


내용 생략
function TForm1.GetCFindValue(AResultIndex, AGroup, AElement: Integer): PChar; stdcall;
var
  ...
begin
   ...
    ShowMessage(PChar(str1)); // 1990-01-03 , 메시지 확인
  if str1 <> '' then
    Result := PChar(str1)
  else
    Result := nil;
end;
리턴값  --> 1990-01-03
----------------------------------------------------------------------------------------------

C++builder2009

[MyManager.h]
typedef char* (__stdcall * _GetCFindValue)(int AResultIndex, int AGroup,int  AElement);


[test.cpp]
#include "MyManager.h"


void __fastcall TForm1::Button1Click(TObject *Sender)
{
  String strData;
  HINSTANCE hLibrary;
  _GetCFindValue GetCFindValue;

  hLibrary=LoadLibrary("CUSTOM.dll");
  if (hLibrary!=NULL)
  {
    GetCFindValue=(_GetCFindValue)GetProcAddress(hLibrary,"GetCFindValue");
    if (GetCFindValue != NULL)
    {
              Memo1->Lines->Clear();
              for(int i=0; i< n ; i++)
              {
                    strData  =GetCFindValue(i, 0x0010, 0x0030);  //strData 변수에 깨져서 들어 옵니다.
                                                                                        //디버그확인  "1990-01-\x18"  
                    Memo1->Lines->Add(IntToStr(i) + ">>Birth:"       +strData );
              }
    }
  }
  FreeLibrary(hLibrary);

}


1.차시도 내용
Memo 마지막 글자가 깨집니다. (쓰레기 글자?)
1990-01-?   , 1965-02-$

2. 차 시도
   const char * pstrData =GetCFindValue(i, 0x0010, 0x0030);
   Memo1->Lines->Add(IntToStr(i) + ">>Birth:"       +strData );
   동일 증상
  1990-01-?   , 1965-02-$  , Mark


해결을 어떻게 해야 하나요..






+ -

관련 글 리스트
70855 Delphi7 DLL , PChar Result 값을 C++builder2009 String 으로 받을때 문자열이 깨집니다. 초보자 2562 2014/02/07
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.