[正确就结贴]求教一个关于动态数组的问题

dreamnyj 2007-03-20 09:17:23
NOW.
首先我的问题来源,
由于我在程序A中使用了TCheckListBox控件,但是我需要保存我这些选择的情况到
注册表和ini文件。。。于是我Public了一下TStringList类,
用过TCLB控件的都知道有Items和Checked两个属性。那Items本身就是TStringList所以,我派生的类很容易就可以接收TCLB控件的数据,但是关于Checked属性,我看了VCL源码也依法找不到头绪,
所以我在我的派生类里,无奈的生成了一个 bool CheckedValues[32767],
OK
我的问题是,如果我想让这个数组动态的话,就是new一下的话,但是我在没有载入数组的情况下是没有办法确定new的大小的,

所以那位高手可以给我一个解决方法,而不用使用定长的数组。或是简单的说一下
TCLB控件的Checked的原理,将不胜感激
...全文
488 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
caitian6 2007-03-21
  • 打赏
  • 举报
回复
mark
plax0850 2007-03-21
  • 打赏
  • 举报
回复
如果你要动态分配空间可以用C语言中malloc和realloc两个函数可以做到。
huzhangyou 2007-03-20
  • 打赏
  • 举报
回复
记得包含
#include <vector>
using namespace std;

楼主四个三角角
不会这个不懂吧!
huzhangyou 2007-03-20
  • 打赏
  • 举报
回复
vector<bool> bVector;

if(TCheckListBox->Items[i]->Checked){
bVector.push_back(true);
}else{
bVector.push_back(false);
}

然后就是使用TIniFile写入了:
for(int i = 0 ; i < bVector.size(); i++){
ifi->WriteString(/**/ bVector[i]);
}
theLibra12 2007-03-20
  • 打赏
  • 举报
回复
不用定长数组可以用
vector<bool> CheckedValues;
kimryo 2007-03-20
  • 打赏
  • 举报
回复
我觉得搂主说的有点混乱。。。
dreamnyj 2007-03-20
  • 打赏
  • 举报
回复
P.S.本来我是想直接public一下TCustomListBox的,但是我的程序本身没有窗体,所以...比较无奈

TCLB=TCheckListBox ^_^
dreamnyj 2007-03-20
  • 打赏
  • 举报
回复
感谢楼上各位的指教....还请多多关注,受教了。结贴
huzhangyou 2007-03-20
  • 打赏
  • 举报
回复
faint~~~

同意PPower

写的比较随便 没有多检查 问题还是不少
勉励前行 2007-03-20
  • 打赏
  • 举报
回复
整理一下huzhangyou的代碼:
#include <vector>
std::vector<bool> bVector;
bVector.resize(TCheckListBox->Items->Count); //resize 比逐個 push_back 效率好多了。
for(size_t i = 0 ; i < bVector.size() ; ++i)
bVector[i] = TCheckListBox->Items[i]->Checked ;

13,826

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder相关内容讨论区
社区管理员
  • 基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧