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
[41504] Re:Re:Re:Re:TreeView1->Selected->Data의 값 읽기
이건식 [] 1063 읽음    2005-08-18 12:19
유영인씨
염치 불구하고 다시 질문드립니다.

Unicode XML문서를 파싱해서
유니코드 컨트롤인 TntTreeView에 데이터를 적재하였습니다.
유니코드 xml 문서는 다음과 같습니다.

<?xml version="1.0" encoding="UTF-8"?>
<DIRECTORY TITLE="孝經諺解" CODE="JE_A_A8^5_001_000011:JE_A_A8^5_001_000272=N">
    <DIRECTORY TITLE="孝經諺解 v1" CODE="JE_A_A8^5_001_000011:JE_A_A8^5_001_000272=Y">
    </DIRECTORY>
    <DIRECTORY TITLE="孝經諺解 v2" CODE="JE_A_A8^5_002_0000281:JE_A_A8^5_002_000302=N">
    </DIRECTORY>
</DIRECTORY>

적재 로직은 다음과 같습니다.
void __fastcall TForm1::UniFullDomToTree(_di_IXMLNode XmlNode,TTntTreeView *TntTreeView1,TTntTreeNode *TreeNode)
{
        int i;
        TTntTreeNode *NewTreeNode;
        AnsiString NodeText;
        WideString NodeTextW;
        wchar_t wnodetemp[5000],wtemp[5000];
        char knodetemp[10000],ktemp[10000];
        AnsiString Temp;
        WideString TempW;
        Variant OtempW;
        _di_IXMLNode AttrNode;

        for(i=0; i<XmlNode->AttributeNodes->Count; i++) {
                AttrNode = XmlNode->AttributeNodes->Nodes[i];
                if(AttrNode->NodeName==(WideString)"TITLE"){
                        OtempW=AttrNode->Text;
                        wcscpy(wtemp,OtempW);
                       //노드 캡션
                        NewTreeNode=TntTreeView1->Items->AddChild(TreeNode,wtemp);
                }
                if(AttrNode->NodeName==(WideString)"CODE"){
                        // 이 부분이 촛점임
                        NewTreeNode->Data=AttrNode->GetText().Copy();
                }
        }
        if(XmlNode->HasChildNodes) {
                for(i=0;i<XmlNode->ChildNodes->Count; i++) {
                        UniFullDomToTree(XmlNode->ChildNodes->Nodes[i],TntTreeView1,NewTreeNode);
                }
        }
}

NewTreeNode->Data=AttrNode->GetText().Copy(); 로 적재하고

트리뷰 더블클릭시
이 적재된 데이터를
WideString Wstr=(wchar_t *)(TreeView1->Selected->Data)
ShowMessage((AnsiString)Wstr)로 했더니;

'JE_A_A8^5_001_000011:JE_A_A8^5_001_000272=N'로 나타났다가
다른 데를 클릭하고 동일 부분을 클릭하면
'JE_A_A8^5_001_000011:JE_A_A8^5_001_000272'로 잘려서 나타나고
또 정상적으로 나타나기도 합니다
"="문자, 형변환 등의 문제는 아닌 것 같습니다.

WideString Wstr=(wchar_t *)(TreeView1->Selected->Data)에서
Wstr에 TreeView1->Selected->Data의 모든 문자열들이 적재되지 못하는 것 같습니다.
문제가 무엇일까요 어떻게 처리해야 하나요?
답변 부탁드립니다.

유영인  Cuperido 님이 쓰신 글 :
: Data 프로퍼티를 사용하셔야 한다면,
: AddObject 시에 정의된 형태로 다시 재 변환하신 뒤,
: 이 형태를 토대로 다시 문자열로 꺼내와야 할 것 같습니다.
: (정의된 형태를 몰라, 정확한 답변을 드리기가 어려울 것 같습니다)
:
: 정의되어 있는 형태가 char* 형이 아니었는데,
: char*로 강제 형 변환을 하니, \0 등의 기호가 맞지 않고
: 또한 메모리 사이즈도 맞지 않아서 오류를 일으키는 것 같습니다.
:
: P.S : 저.. 선생님.. 아닙니다.... (__)a
:
:
: cuperido
:
: 이건식 님이 쓰신 글 :
: : 유영인 선생님
: : 답변 주셔서 고맙습니다.
: :
: : TreeView1->Selected->Text는
: : Node의 Caption입니다.
: :
: : TreeView1->Selected->Data는
: : void 포인터로 캡션과 다릅니다.
: :
: : TreeView1->Selected->Data 의 값이
: : 잘렷다가 다시 안 잘렸다가 다시 잘리는
: : 현상을 어떻게 처리해야 하는가요
: :
: :
: : 유영인  Cuperido 님이 쓰신 글 :
: : : 단순 텍스트식 표기방법이라면,
: : :
: : :  AnsiString Str = TreeView1->Selected->Text;
: : :  ShowMessage(Str);
: : :
: : : 이렇게 해보시는것은 어떨까요?
: : :
: : :
: : : cuperido
: : :
: : :
: : : 이건식 님이 쓰신 글 :
: : : : 트리뷰에서 더블 클릭했을 때
: : : :
: : : :   TreeView1->Selected->Data 값을(가령 "1234=n")
: : : :   표시하기 위해 다음과 같이 했습니다
: : : : 
: : : :   AnsiString Str=(char *)(TreeView1->Selected->Data)
: : : :   ShowMessage(Str) 했더니
: : : :
: : : :   1234=n , 1233, Null로 나타나는데 이유가 무엇일까요

+ -

관련 글 리스트
41476 TreeView1->Selected->Data의 값 읽기 이건식 944 2005/08/16
41482     Re:TreeView1->Selected->Data의 값 읽기 유영인 Cuperido 890 2005/08/16
41484         Re:Re:TreeView1->Selected->Data의 값 읽기 이건식 809 2005/08/17
41494             Re:Re:Re:TreeView1->Selected->Data의 값 읽기 유영인 Cuperido 913 2005/08/17
41504                 Re:Re:Re:Re:TreeView1->Selected->Data의 값 읽기 이건식 1063 2005/08/18
41508                     Re:Re:Re:Re:Re:TreeView1->Selected->Data의 값 읽기 유영인 Cuperido 1292 2005/08/18
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.