Combobox und EditFeld



  • Ich habe eine Combobox die über ein Array gefüllt wird weiterhin stehen in diesem Array die weitere Daten die ich in ein EditFeld schreiben will. Das Array wird über eine Schleife gefüllt. Ich möchte das Edit Feld abhängig machen was in der Combobox ausgewählt wird, soll der passende Eintrag aus dem Array in das Edit Feld geschrieben werden.

    while(conn != "ende")
        {
            i++;
            CString connstr=_T("CONN");
            CString nummerstr; 
            nummerstr.Format(_T("%d"),i);
            connstr += nummerstr;
    
            conn.ReleaseBuffer(0);
            GetPrivateProfileString(_T("CONNECTIONS"), connstr, "ende", conn.GetBuffer(500),500, home); //ini auslesen
            conn.ReleaseBuffer(-1);
    
            // Einzelwerte aus conn in ein Array schreiben
    
            CStringArray array;
            int old = 0;
            int pos = 0;
    
            while(-1 != (pos = conn.Find(',',old)))
            {
                CString tmp = conn.Mid(old,pos - old);
                array.Add(tmp);
                old = ++pos;
            }
            if(old < conn.GetLength()){
                CString tmp = conn.Mid(old,conn.GetLength() - old);
                array.Add(tmp);
            }
    
            if (conn != "ende")
            {
            m_ctlConnName.AddString(array[0]);// in Combobox schreiben
            m_strConnUser = array[3]; //in EditFeld schreiben
            UpdateData(FALSE);
            }
        }
    


  • 1.Schätz mal, wieviele Kommata du vergessen hast!!
    2.Was soll der 1. Aufruf von ReleaseBuffer?
    3.Warum schreibst Du erst alle Werte in ein Array, wenn Du eh nur den 1. und 4. Wert ausliest?
    4.Warum fragst Du ab, ob GetPrivateProfileString erfolgreich war, NACHDEM Du die Stringverarbeitung gemacht hast, wäre es nicht besser vorher?



  • 1.Der erste Aufruf ReleaseBuffer lösscht den Speicher. Das musste ich machen, da es sonst Probleme beim Auslesen gab.

    2. Die Werte lese ich alle aus, falls sie später mal benötigt werden.

    3. Hier weis ich leider nicht was du meinst

    mfG

    PS: Habe sogar Kommas gesetzt.



  • Zu 1.
    Vielleicht habe ich mich falsch ausgedrückt. Ich meinte: Was soll der 1. Aufruf von ReleaseBuffer INNERHALB einer Schleife, wo nix von GetBuffer zu lesen ist??
    Zu 2.
    Die Werte sind hinter der Schleife sowieso verloren, wozu also erst speichern?
    Zu 3.
    Ein einfaches Beispiel:

    i=0;
    j = 5 / i;
    if( i != 0)  // Ist das hier nicht zu spät?
      print( "Fehler in Division");
    

Anmelden zum Antworten