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

TList返回值的有关问题

2012-04-19 
TList返回值的问题结构定义,如下C/C++ codestruct TCList{AnsiString yAnsiString e}typedef TCList* M

TList返回值的问题
结构定义,如下

C/C++ code
struct TCList         {          AnsiString y;          AnsiString e;         };        typedef TCList* Mlist;


函数如下
C/C++ code
TList *  TForm16::getDC(AnsiString m1){   Mlist m_dc ;   /*   m_m为TStringList,此处代码省略   */   dcs = new TList();   dcs->Clear();   for(int i = 0; i < m_m->Count ; i++)    {      str = m_m->operator [](i);      m_dc = new TCList;      for(int j = 1 ; j <= str.Length(); j++)       {         if(j <= 5)          {            m_dc->y += str[j];          }         if(j > 5 && j <= 8 )          {            m_dc->e += str[j];          }       }      dcs->Add(m_dc);      delete m_dc;    }   return dcs;}

dcs是我定义的一个private的Tlist;
我这样接收这个函数
C/C++ code
TList *xx = this->getDC(m1);

xx.count也可以看到该list中有多少个元素,可是当我做以下操作时就报错了
C/C++ code
              Mlist stu ;              for(int i = 0 ; i < xx->Count; i++)                {                  try                   {                    stu = (Mlist)xx->Items[i];                    AnsiString s = stu->y;    //报错                   }                  catch(Exception &e)                   {                     Application->MessageBoxA(e.Message.c_str(),"错误提示 :",MB_OK+16);                   }                }

报的错为“access violation”,请大家帮帮忙看看 谢谢了

[解决办法]
结构体中用AnsiString对象作成员,是严重不靠谱的。因为AnsiString是一个类,建议用char数组。

热点排行