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
[40979] Re:질문]AddObject 에 대해서 궁금합니다.
황경록 [mpbox] 1637 읽음    2005-07-11 14:35
우선 함수만 봤을땐 -_- 개인적으로는 약간의 오바~ ^^::: 를
동반한 코드로 보입니다만...
스트링을 저장하는데 new 를 써서 메모리를 할당했다는것이...

우선 AddList 함수를 보면

Add 와 AddObject 의 차이를 설명하면

Add 는 단순히 스트링을 저장하는 반면
AddObject 는 스트링과 동시에 스트링이 저장된 리스트 인덱스를 가지는
Object 어레이 포인터에 오브젝트의 포인터를
저장합니다.

아래와 같은 함수는 단순히 스트링을 기준으로 한다면 AddObject를 사용할 필요없이...

AddList( AnsiString PA, AnsiString PB )
{
    pList->Add( PA + "=" + PB );
}

이렇게 되는 군요....

그리고 찾아쓸땐

pList->Strings[index];    =  "PA=PB"

pList->Names[index];   = "PA"

pList->Values[pList->Names[index]];    = "PB"

pList->Values[pList->IndexOfName(PA)]; = "PB"

단지 스트링을 기준으로 한다면요 ^^...

이건 제 생각이였구요.
AddObject 를 사용하는 경우에는

pList->AddObject( "aaaa", (TObject*)PP);

pList->Objects[pList->Indexof("aaaa")] ; = PP

이런식의 개념입니다.

공윤경 님이 쓰신 글 :
: main.cpp
: ListLst->AddList(csv->String[0],csv->String[1]);
:
: List.cpp
: bool __fastcall TLibList::AddList(AnsiString RootID, AnsiString LinkID)
: {
:     int len = RootID.Length() + 1;
:     char* s = new char[len];
:     CopyMemory(s, RootID.c_str(), len);
:     AddObject(LinkID, (TObject *)s);
:     return (true);
: }
:
: 이소스에서요. 저런식으로
: ListLst->AddList()를 호출하면... 지금 두개의 스트링을 붙여주는것 아닌가요?
: 그럼 ListLst->SaveToFile("kong.lib");
: 이런식으로 하면..
: 아..일단.. csv->String[0]은 Root_A, csv->String[1]은 Link_A 입니다.
: 이걸 저장하고 불러왔을때..
: 제머릿속에서는
:
: Root_ALink_A
:
: 이렇게 되어야 할것 같은데
: 이렇게만 보입니다. 뭐가 잘못된건가요?
: 제가 뭘 잘못생각하고있는건지요...

+ -

관련 글 리스트
40977 질문]AddObject 에 대해서 궁금합니다. 공윤경 784 2005/07/11
40979     Re:질문]AddObject 에 대해서 궁금합니다. 황경록 1637 2005/07/11
40981         Re:Re:질문]AddObject 에 대해서 궁금합니다. 공윤경 796 2005/07/11
Google
Copyright © 1999-2015, borlandforum.com. All right reserved.