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
[66640] Re:vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다.
빌더(TWx) [builder] 1308 읽음    2012-03-15 07:33
유지은 님이 쓰신 글 :
: 안녕하세요 혼자 힘으로 하다가 도저히 모르겠네요..
:
: mfc에서
:
: CString s;
:
: s = (LPCTSTR)(_bstr_t)m_CpDibObj->GetHeaderValue(0);
:
: 이런 코드를 빌더로 바꿀려고 했는데 이래저래 자꾸 에러만 나네요 ㅠㅜ
:
: AnsiString s;
:
: s = (LPCTSTR)(_bstr_t)m_CpDibObj->GetHeaderValue(0); 이랬더니 난리가 납니다^^;;
:
:  (LPCTSTR)(_bstr_t) 이게 문제인거 같은데 빌더에선 어떻게 바꿔야 될지 도통 모르겠네요..
:
: 이 문장을 어떻게 바꿔야 되네요?




답변:

각기 타입에 대한 형변환을 처리해주는 operator 들을 갖고있는 클래스로 구현되어 있는Variant 와는 달리...
VARIANT는 struct로 정의되어있는 native 타입 입니다. 따라서 어떤 VARIANT 데이타를 특정 타입으로 형변환 하기
위해선 해당 VARIANT의 실제 타입을 먼저 확인해서, 거기에 맞게 변환해 주는 코드를 구현해 줘야 합니다.

void __fastcall TForm1::Button1Click(TObject *Sender)
{
    // VARIANT 실제 타입이 VT_LPSTR 이라고 가정
    VARIANT v;
    v.vt = VT_LPSTR;
    v.lVal = reinterpret_cast< LONG >("hello");

    AnsiString s;

    // VARIANT 의 실제 타입에 따라서 형변환이 필요
    if (v.vt == VT_LPSTR) {
        s = reinterpret_cast< char* >(v.lVal);
    }
    else if (v.vt == VT_LPWSTR) {
        wchar_t *wp = reinterpret_cast< wchar_t* >(v.lVal);
    }
    ..........

    Caption = s;
}



...

위와 같은 식으로 VARIANT v의 실제 타입을 확인해서, 해당 하는 타입에 따라서 형변환을 해주는 코드를
구현해 줘야 합니다. 위에서는 VARIANT 타입이 VT_LPSTR 이라고 가정한 경우고... VT_LPWSTR, VT_DATE 등의
다른 타입이라면 거기에 맞는 형변환 코드를 구현해 줘야 합니다.

...

+ -

관련 글 리스트
66630 vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다. 유지은 877 2012/03/14
66640     Re:vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다. 빌더(TWx) 1308 2012/03/15
66633     Re:vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다. 싸이보스 975 2012/03/14
66634         Re:Re:vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다. 유지은 968 2012/03/14
66635             Re:Re:Re:vc++ 에서 쓰던걸 빌더로 바꿀려고 하는데 막히네요 고수님들 부탁좀 드립니다. 싸이보스 1107 2012/03/14
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.