首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

再问TList取值有关问题

2012-04-02 
再问TList取值问题昨天将结构中的变量定义为为AnsiString型后发现提取报错的问题,在妖哥的指导下改为char

再问TList取值问题
昨天将结构中的变量定义为为AnsiString型后发现提取报错的问题,在妖哥的指导下改为char数组,问题解决;
今天循环取数时发现在list->Items[0]中的各个结构值可以正常取出,但到list->Items[1]就成了乱码!!
结构为

C/C++ code
struct TCList         {          char y[5];          char e[6];         };        typedef TCList* Mlist;

赋值为
C/C++ code
Mlist xx ;TList *cc = new TList();for(int i = 0; i < 4; i++) {   xx = new TCList;   StrCopy(xx->y,filename.c_str());   StrCopy(xx->e,filename1.c_str());   cc->add(xx);   delete xx;}

取值为
C/C++ code
     Mlist all_xx;     for(int i = 0 ; i < cc->Count; i++)        {          all_xx = ( Mlist)cc->Items[2];          AnsiString a = all_xx->y;          AnsiString b = all_xx->e;          ShowMessage(a+";"+b);        }

测试除了cc->Items[0]以外,其他的都是乱码,或是为空,那里错了吗?请指教

[解决办法]
给y和e赋值以后,需要手工再末尾补个0,如:
StrCopy(xx->y, filename.c_str());
xx->y[4] = 0x0;
StrCopy(xx->e, filename1.c_str());
xx->e[5] = 0x0;

定义char数组的时候,最好比预想的多一个字节,用来存放表示结束符的0x0

热点排行