2017-07-04 12 views
0

テキストファイルから文字列を読み込んで、ダイアログボックスにオプションを入力しています。問題は、リスト内の重複した値を削除する必要があることです。私はVisual C++で作業しています。私はVisual Studio 2008を使用しています。コンボボックスから重複を削除する方法

+1

これまでに試したことと見つかった問題の種類を示すコードを投稿する必要があります。 – Micho

+0

私はそれをフィルタリングするためにコンボボックスのインデックス値を使用しました。 FINDSTRING方法は インデックス= ComboBox.FindString(「」)であったので、私がした見つかったオブジェクトの最初のインデックスを返します。 と次の繰り返しの場合 if(index <0) ComboBox.AddString( "New Value"); これは機能しました。 –

+0

既に存在する場合、コンボにあらかじめ挿入しないほうが簡単な方法ではありませんか? 'FindStringExact'はあなたの友人です。 – sergiol

答えて

0

テキストファイルから項目を読み取るときは、mapを使用してください。すべての重複したエントリを削除し、リストにマップエントリを追加します

0
BOOL CRemoveDuplicatedTextInComboBoxDlg::OnInitDialog() 
{ 
    ... 
    m_wholeText.AddString(_T("2")); 
    m_wholeText.AddString(_T("3")); 
    ... 
    m_wholeText.AddString(_T("6")); 
} 

void CRemoveDuplicatedTextInComboBoxDlg::OnBnClickedRemove() 
{ 
    // TODO: Add your control notification handler code here 
    INT nCount = m_wholeText.GetCount(); 
    if (nCount <= 0) return; 
    CString csz_compare1; 
    CString csz_compare2; 

    for (int i = 0; i < nCount; i++) 
    { 
     m_wholeText.GetLBText(i, csz_compare1); 
     for (int j = 0; j < nCount; j++) 
     { 
      m_wholeText.GetLBText(j, csz_compare2); 
      if (csz_compare1 == csz_compare2) 
      { 
       m_wholeText.DeleteString(j); 
       nCount--; 
      } 
     } 
    } 
} 
+0

ありがとうございます。 私がしたことはFindStringを使ってそれぞれの新しいエントリをチェックすることでした。 FindStringは、最初に見つかったオブジェクトのインデックスを返します。 このインデックスが0より小さい場合は、コンボボックスに文字列を追加します –

関連する問題