C++Bulder中, TStringList的AddObject()怎麼用?

来源:百度知道 编辑:UC知道 时间:2024/06/03 23:45:41
我想把一个TStringList 加入到另一个 TStringList中
void __fastcall Form::dwcBitBtn1Click(TObject *Sender)
{
TStringList* ItemList = new TStringList;
TStringList* tmplist;
AnsiString s = "";
int n = 0;
tmplist = new TStringList;
for (int i = 0; i < 3; i++)
{
tmplist->Clear();
tmplist->Add("A" + AnsiString(i));
tmplist->Add("B" + AnsiString(i));
ItemList->AddObject(AnsiString(n++), tmplist);
}
for (int i = 0; i < ItemList->Count; i++)
{
tmplist = (TStringList*)(ItemList->Objects[i]);
AnsiString A = tmplist->Strings[0];
AnsiString B = tmplist->Strings[1];
s += (A + " " + B + " ");
}
delete ItemList;
delete tmplist;
}
最后s的值竟然是"A2 B2 A2 B2 A2 B2 ", 不是应该是"A0 B0 A1 B1 A2 B2&qu

错了喽
tmplist指向是同一个对象
所以
for (int i = 0; i < 3; i++)
{
tmplist->Clear(); //每次调用都把对象的数据清空了
tmplist->Add("A" + AnsiString(i));
tmplist->Add("B" + AnsiString(i));
ItemList->AddObject(AnsiString(n++), tmplist);
}
这是一个指针,不是对象