我用2个CStringList对象编码。每个都有自己的数据,例如一个有名字和其他的phoneno,两个都是同步的,即如果有一个phoneno有一个名字,反之亦然。
现在,我有2个组合框,其中我显示了名称和相应的phonenos。名称组合框被排序,因此两者之间的同步进行折腾。因此,为了排序,我做了以下事情:
int aComboElementNo = myNameComboBox.GetCount();
if( aComboElementNo >= 1 )
{
for( int aIndex = 0; aIndex < aComboElementNo; aIndex++ )
{
CString aTempStr;
// Getting the string in the combobox
myNameComboBox.GetLBText( aIndex, aTempStr );
// Getting the position where the name is present in the list
POSITION aPos = aNameList.Find( aTempStr );
// setting the appropriate phoneno in the 2nd combobox
myPhoneComboBox.AddString( aPhoneList.GetAt( aPos ) );
}
}
当我执行此操作时,我在myPhoneComboBox中找到了名字而不是phonenos。
现在我有2个qns:
当我访问录音带时,为什么我会在名单中出现名字?这不是一个漏洞,因为我可以使用其他变量访问其他一些变量数据。
如何排序第二个列表。
答案 0 :(得分:1)
我希望你正在使用CStringArray而不是CStringList。 您需要使用FindIndex而不是Find,因为Find将返回OBJECT Pos而不是Index count .... 并使用[]运算符来获取带数组的元素。 如果你仍然想要使用CStringList,那么通过Iterator查找一个List中第一个匹配字符串的索引计数,并使用该IndexCount的FindIndex获取第二个列表的postition对象,以便将GetAt用于第二个列表。
答案 1 :(得分:0)
为什么你有2个单独的名单?为什么没有一个CTypedPtrArray结构同时包含名称和手机nb?
答案 2 :(得分:0)
这是一个谦虚的,原谅我,找到名字的愚蠢方式。它假定名称是唯一的。上帝帮助我,我不得不处理这些事情,名字字段永远不应被视为独特,它的血腥危险。请问我爸爸Baash05 Sr.
我认为应用程序添加到组合框时会有ID或某些数据集。请在地图中使用它。我的猜测是程序员将数据设置为名称的ID,或指向包含该名称的对象的指针。 (人物对象/业务对象/学生对象......)。
如果添加名称的代码没有添加方法来区分George Forman和他的任何一个孩子,那么就向老板提出一个论点,它的实现应该改变,因为上帝应该是!
int aComboElementNo = myNameComboBox.GetCount();
for( int aIndex = 0; aIndex < aComboElementNo; aIndex++ )
{
int nameLocal = myNameComboBox.GetItemData( aIndex);
myPhoneComboBox.InsertString(aIndex, aPhoneList[namelocal] );
}