|
우선 함수만 봤을땐 -_- 개인적으로는 약간의 오바~ ^^::: 를
동반한 코드로 보입니다만...
스트링을 저장하는데 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
:
: 이렇게 되어야 할것 같은데
: 이렇게만 보입니다. 뭐가 잘못된건가요?
: 제가 뭘 잘못생각하고있는건지요...
|