Problem beim zahlenausgeben mit eingabefeldern



  • Hi, ich habe ein Problem mit dem einlesen von Zahlen, was auf der Konsole funktioniert
    geht bei visual c++ mit mfc nicht mehr. Ich habe ein Fenster gebaut mit 4 Eingabefeldern und einem button.
    1 Eingabefeld wird benutzt um werte einzulesen und auf den anderen 3 feldern sollen diese Werte wieder ausgegeben werden. Ich habe nur das Problem, das der wert, den ich eingebe auf allen 3 feldern ausgegeben wird. Was ich will ist, 3 unterscheidliche werte von einem
    textfeld nacheinander einlesen und dann in 3 verschiedene Felder ausgeben.

    Kann mir bitte jemnd sagen was ich falsch gemacht habe?

    zum code:
    Mit dem klassenassistent habe ich folgende Variablen angelegt.
    die alle vom typ int sind, da ich ja ganze Zahlen einlesen will.

    m_ein, m_aus1,m_aus2,m_aus3
    Alle variablen haben ntürlich unterscheidliche IDs, da sie ja zu
    unterscheidlichen Eingabefeldern gehören.

    void CEinlesenDlg::OnButton1() 
    {
    UpdateData(TRUE);
    
        // TODO: Code für die Behandlungsroutine der Steuerelement-Benachrichtigung hier einfügen
    
        int feld[3],i=0;
        while (i<3)
        {
        feld[i]=m_ein;
        //hier müsste der fehler sein, denn es wird nur eine Zahl eingelesen
        i++;
        }
    
    m_aus1=feld[0];
    m_aus2=feld[1];
    m_aus3=feld[2]; //zur ausgabe
    UpdateData(FALSE);
    
    }
    




  • Im Array feld[] werden die Werte immer von einer Varaiablen eingelesen. Deshalb sind im Array dann immer die selben Werte.



  • danke euch beiden, aber verstanden habe ich es leider immer noch nicht.
    @ toosten, wie ist das gemeint, soll ich das ganze buch lesen?
    @jfuechsl wie müsste das einlesen denn dann aussehen?
    Ich brauche doch wohl für 3 werte keine verketette liste?



  • Hi,
    nicht unbedingt aber wäre doch mal ne Überlegung wert. :p

    Alles Quatsch, du könntest es z.B. so machen:

    void CEinlesenDlg::OnButton1() 
    {
        UpdateData(TRUE);
        switch(i_globaleVarible)   //i_globaleVarible eine globale integer Variable
        {
        case 1: m_aus1=m_ein;
                i_globaleVarible++;
                //m_aus3=m_aus2=0; //falls du immer alle Variablen auf Null setzen willst wenn du eine neue Dreifolge eingibst
                break;
        case 2: m_aus2=m_ein;
                i_globaleVarible++;
                break;
        case 3: m_aus3=m_ein;
                i_globaleVariable=1;
                break;
        }//end of switch
    
    UpdateData(FALSE);
    }
    

    Ist sicherlich nicht die schönste Form, da du dreimal auf den
    Button drücken musst, um die verschiedenen Werte anzeigen zu
    lassen.

    Tschau Gartenzwerg



  • Danke, das werde ich mal so ausprobieren, ich wollte es aber so, das man 3 mal drücken muss.



  • also das Problem hat sich erledigt,Danke. jetzt habe ich aber ein neues,
    Ich will einem staatisches textfeld vom Typ CString ein integer wert zuweisen.
    In ansi c könnte man das ja casten, aber bei vc++ geht das irgendwie nicht

    CString zahl; 
    zahl=(CString)m_ein1;//ich will int nach cstring casten 
    m_textout=zahl; //und dann ausgeben
    

    m_ein1 ist eine variable vom typ int

    Habt ihr ne idee?



  • int i = 1;
    CString string;
    string.Format("%d", i);  // wie bei printf
    


  • Original erstellt von zabarax:
    **danke euch beiden, aber verstanden habe ich es leider immer noch nicht.
    @ toosten, wie ist das gemeint, soll ich das ganze buch lesen?
    **

    Sorry, Tag 2



  • danke ghost, ich hatte das shcon mal irgendwo gesehen aber vergessen,
    Danke auch toosten, ich werde mir dne tag2 anschauen


Anmelden zum Antworten