Registrierung mit berechnung ?



  • Moin.

    Folgenden Code hab ich geschrieben. Klappt. Ich hätte nun aber gerne das bei m_str_SN2 irgendeine Zahl eingetragen werden kann, diese aber durch 7 teilbar sein muss damit sie akzeptiert wird.

    void CRegistrierungDlg::OnChangeSn() 
    {
    
    	UpdateData(true);
    
    	if ((m_str_SN == "11111")&&(m_str_SN2 == "11111")&&(m_str_SN3 == "11111"))
    	{
    		regButtonBerechnen = true;
    		regTextNichtregistriert = false;
    	}
    
    	else
    	{
    		regButtonBerechnen = false;
    		regTextNichtregistriert = true;
    	}
    
    	UpdateData(false);
    
    }
    
    void CRegistrierungDlg::OnChangeSn2() 
    {
    
    	UpdateData(true);
    
    	if ((m_str_SN == "11111")&&(m_str_SN2 == "11111")&&(m_str_SN3 == "11111"))
    	{
    		regButtonBerechnen = true;
    		regTextNichtregistriert = false;
    	}
    
    	else
    	{
    		regButtonBerechnen = false;
    		regTextNichtregistriert = true;
    	}
    
    	UpdateData(false);
    
    }
    
    void CRegistrierungDlg::OnChangeSn3() 
    {
    
    	UpdateData(true);
    
    	if ((m_str_SN == "11111")&&(m_str_SN2 == "11111")&&(m_str_SN3 == "11111"))
    	{
    		regButtonBerechnen = true;
    		regTextNichtregistriert = false;
    	}
    
    	else
    	{
    		regButtonBerechnen = false;
    		regTextNichtregistriert = true;
    	}
    
    	UpdateData(false);
    
    }
    


  • wenn ich dich richtig verstehe willst du erst mal das m_str_SN2 eine zahl ist. das kannst du im dialogeditor folgendermaßen umstellen:
    ➡ strg + doppelklick aufs eingabefeld
    ➡ Name der variablen eingeben (zB: m_n_SN2)
    ➡ Variablentyp auf int (oder UINT) stellen
    ➡ OK

    und dann würde dein code so änlich ausschaun

    if ((m_str_SN == "11111")&&(m_n_SN2 % 7 == 0)&&(m_str_SN3 == "11111"))
        {
            regButtonBerechnen = true;
            regTextNichtregistriert = false;
        }
    

    ps: wenn das ein regestrierungscode sein soll würd ichs allerdings doch etwas komlizierter machen (zB: (m_n_SN2 * 5 + 4) % 7)



  • ja. soll einer sein.
    danke schon mal.

    fein. hat geklappt.

    nun nochwas. ich kann ich nun festlegen das die eingegebene zahl z.b. 6 stellig sein soll ?



  • Firefighter2000 schrieb:

    nun nochwas. ich kann ich nun festlegen das die eingegebene zahl z.b. 6 stellig sein soll ?

    Versuch mal folgendes:
    ➡ mit Strg + W Klassenassistenten öffnen
    ➡ unter Klassenname "CRegistrierungsDlg" einstellen
    ➡ Karteikarte Member-Variablen wählen
    ➡ in Kleinster Wert: "100000" (bei 6-stelliger Zahl)
    ➡ in Größter Wert: "999999" (bei 6-stelliger Zahl)

    Gruß WinCoder



  • ja das ist klar. das problem ist das bei falscher zeahl ein popupfenster erscheint. da mein programm jedoch mehrsprachig ist würde dies immer auf deutsch erscheinen.

    es sei denn mann kann das popupfenster abschalten.



  • noch eine frage.

    derzeit hab ich das so gelöst:

    void CRegistrierungDlg::OnChangeSn() 
    {
    
    	UpdateData(true);
    
    	if ((m_str_SN == "AAAAA")&&(m_SN2 % 7) == 0)&&(m_str_SN3 == "A2A2A"))
    	{
    		regButtonBerechnen = true;
    		regTextNichtregistriert = false;
    	}
    
    	else
    	{
    		regButtonBerechnen = false;
    		regTextNichtregistriert = true;
    	}
    
    	UpdateData(false);
    
    }
    

    wie kann ich nun realisieren das die eingabe bei m_str_SN3 völlig egal ist, jedoch in der eingabe ein C und eine 5 enthalten sein muss?



  • wenn m_str SN3 ein CString ist kein problem:

    if ((m_str_SN == "AAAAA")&&(m_SN2 % 7) == 0)&&(m_str_SN3.Find('C') != -1 && m_str_SN3.Find('5') != -1))
    


  • ist er. vielen dank. ich teste es gleich mal.

    SUPPA. Hat geklappt. Danke euch.


Anmelden zum Antworten