Wortliste in Listbox anzeigen



  • Hi.

    Wie kann ich eine Textdatei, die so angeordnet ist, dass immer ein Wort unter dem anderen steht, in einer Listbox anzeigen?

    Mit den Wörtern meine ich dass so:

    Worteins
    Wortzwei
    Wortdrei
    ...



  • Zeile für Zeile auslesen und in die Listbox adden?

    Guck Dir mal CStdioFile an.

    Besonders die ClassMembers Open, Close und ReadString.



  • Alles klar. Ich habs jetzt mal so probiert:

    CStdioFile sf;
    CString str;
    sf.Open(strPath, CFile::modeRead | CFile::typeText);
    sf.ReadString(str);
    m_ctrlList.AddString(str);
    sf.Close();
    

    Jetzt habe ich aber das Problem, dass ich nicht die Anzahl der Wörter abfragen kann, weil in der MSDN irgendwie nichts dazu steht... 😕



  • m.ctrlList.GetCount();
    

    ??



  • Ich meine die Anzahl der Wörter in der Datei, aus der ich lese. In der Listbox ist ja noch nichts drin.



  • The MK schrieb:

    Ich meine die Anzahl der Wörter in der Datei, aus der ich lese. In der Listbox ist ja noch nichts drin.

    Ich weiß zwar nicht genau, was Dein Problem ist bzw was Du meinst, aber vielleicht hilft Dir das!

    CStdioFile file;  
    file.Open("Test.txt", CFile::modeRead);
    CString str;
    while(file.ReadString(str))
    {        
        m_ctlListBox.AddString(str);
    }
    file.Close();
    


  • Was ich geschrieben habe, hat sich auf den Post von Wudu bezogen. Aber danke für deine Antwort. Es klappt jetzt.



  • Habe jetzt noch ein Problem: Wie kann ich einzelne Wörter aus der Datei jetzt anhand der Auswahl in der Listbox löschen??? Mein Ansatz ist folgender:

    int selection = m_ctrlList.GetCurSel();
    m_ctrlList.GetText(selection,str);
    sf.Open(strPath, CFile::modeWrite);
    ???
    sf.Close();
    


  • Ich würde die Auswahl des Listenfeldes löschen und dann die Datei neu schreiben, allerdings weiß ich nicht ob das die originellste Lösung ist.



  • Das hier hab ich zusammengeschraubt, aber der schreibt dann immer so komische Zeichen in die Datei rein. könnt ihr mir sagen, was ich ändern muss, damit er die richig speichert?

    int selection = m_ctrlList.GetCurSel();
    	m_ctrlList.DeleteString(selection);
    	CFile file( strPath, CFile::modeCreate | CFile::modeWrite ); 
    	file.Write( "", 0 ); 
    	file.Close();
    	int count = m_ctrlList.GetCount();
    	str="";
    
    	for (int i=0;i<count;i++)
    	{
    		m_ctrlList.SetCurSel(i);
    		m_ctrlList.GetText(i,nextword);
    		str = str + nextword + "\n";
    
    	}
    
    	strcpy((char*)content, str);
    	file.Open( strPath, CFile::modeCreate | CFile::modeWrite ); 
    	file.Write( content, sizeof(content) ); 
    	file.Close();
    
    	m_ctrlList.SetCurSel(selection-1);
    


  • int selection = m_ctlListBox.GetCurSel();
    m_ctlListBox.DeleteString(selection);
    CStdioFile file;
    file.Open("Test.txt", CFile::modeWrite | CFile::modeCreate);
    CString str;
    for(int i = 0; i < m_ctlListBox.GetCount(); i++)
    {
        m_ctlListBox.GetText(i, str);
        str += "\n";
        file.WriteString(str);
    }
    file.Close();
    

    Ich hoffe es hilft Dir.


Anmelden zum Antworten