Open yipyeukyi opened 2 years ago
请问是超出数组场长度导致的的吗 或者是其他的原因改如何修改
没有设置上限,崩溃有源码可以尝试调试查找原因。
没有设置上限,崩溃有源码可以尝试调试查找原因。
不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。
没有设置上限,崩溃有源码可以尝试调试查找原因。
不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。
可以在转发代码逻辑位置下断点观察代码走向。
没有设置上限,崩溃有源码可以尝试调试查找原因。
不是崩溃只是选择器千人后通讯录选择器按下确定,界面关闭未转发。
可以在转发代码逻辑位置下断点观察代码走向。
XD请教下转发逻辑代码在那个文件。
实测转发上千人时候程序无响应闪退失败,原因位置,思路是多添加按钮,换成500或者300一组的,原因或许绘画list存在上限?
//注意以下代码是存在错误的,似乎无法获取数值arraylistitem的长度,原因未知,对循环的理解是根据首字母不同分组循环联系人列表,选取其中的全部项目,试图将全部项目转移到新数值统计长度失败。或许整个思路有误。
bool ContactSelectForm::OnBtnCancelClick(ui::EventArgs* param) { int iiname;
UTF8String* arrayid = new UTF8String[3000];
UTF8String* arrayidlove = new UTF8String[3000];
auto arraylistitem = new ContactListItemUI*[3000];
auto arraylistitemlove = new ContactListItemUI*[3000];
int ii = 0;
for (auto& it : tree_node_ver_) {
for (int i = 0; i < it->GetCount(); i++) {
auto listitem = (ContactListItemUI*)(it->GetItemAt(i));
UTF8String id = listitem->GetUTF8DataID();
// auto* arraylistitem = new ContactListItemUI*[3000];
// UTF8String* arrayid = new UTF8String[3000];
arraylistitem[i] = listitem;
arrayid[i] = id;
/*
for (int m = 0; m <= 300; m++) {
ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitem[m]->FindSubControl(L"checkbox");
if (!checkbox->IsSelected()) {
checkbox->Selected(true, true);
arraylistitem[m]->Selected(true, true);
OnCheckBox(arrayid[m], arraylistitem[m]->IsTeam(), checkbox->IsSelected());
}
} */ }
// int iiname = sizeof(arraylistitem) / sizeof(arraylistitem[0]);
iiname = sizeof(arraylistitem);
int length = sizeof(arraylistitem) / sizeof(int);
int llove = length;
merge(arraylistitemlove, arraylistitem, 0, 4);
merg(arrayidlove, arrayid, 0, 4);
int ii = ii + iiname;
}
int lovename = sizeof(arraylistitemlove);
cout << lovename << endl;
int ff = iiname - 1;
if (lovename <= 300) {
for (int m = 0; m <= 1; m++) {
ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitemlove[m]->FindSubControl(L"checkbox");
if (!checkbox->IsSelected()) {
checkbox->Selected(true, true);
arraylistitemlove[m]->Selected(true, true);
OnCheckBox(arrayidlove[m], arraylistitemlove[m]->IsTeam(), checkbox->IsSelected());
}
}
}
/*
if (lovename <= 300) {
for (int m = 0; m <= lovename; m++) {
ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitemlove[m]->FindSubControl(L"checkbox");
if (!checkbox->IsSelected()) {
checkbox->Selected(true, true);
arraylistitemlove[m]->Selected(true, true);
OnCheckBox(arrayidlove[m], arraylistitemlove[m]->IsTeam(), checkbox->IsSelected());
}
}
} */
/*
else {
for (int m = 0; m <= 300; m++) {
ui::CheckBox* checkbox = (ui::CheckBox*)arraylistitem[m]->FindSubControl(L"checkbox");
if (!checkbox->IsSelected()) {
checkbox->Selected(true, true);
arraylistitem[m]->Selected(true, true);
OnCheckBox(arrayidlove[m], arraylistitem[m]->IsTeam(), checkbox->IsSelected());
}
}
}
*/
return true;
}
void ContactSelectForm::merge(ContactListItemUI a[], ContactListItemUI b[], int beg, int size) { for (int i = 0; i < size; ++i) a[beg + i] = b[i]; }
void ContactSelectForm::merg(UTF8String a[], UTF8String b[], int beg, int size) { for (int i = 0; i < size; ++i) a[beg + i] = b[i]; }
转发消息给千人时失败,转发消息给千人时失败,拉群时同样。表现为消息未转发通信录选择器崩溃