Nach drei Zahel ein Punkt einfügen



  • Hallo,

    ich habe ein kleines aber für mich doch ein großes Problem, ich möchte im Eingabefeld 1 z.b. eine IP die so oder ähnlich lautet 192168100100 eingeben ohne Punkte, aber im Eingabefeld 2 soll die IP richtig angezeit werde 192.168.100.100.
    Wie kann ich nach drei zahlen ein punkt einfügen???

    Danke euch!
    😋



  • IPs sind nicht immer dreistellig.

    Außerdem gibt es für IPs ein extra Control: "IP Adress Control".



  • Danke,

    ich möchte wenn die dritte Zahl eingegeben wird dann eine Aktion ausgeführt wird.

    🙄



  • Außerdem gibt es für IPs ein extra Control: "IP Adress Control".

    Diesen Satz solltest du nicht unbeachtet lassen er sollte dein Problem lösen wenn du das mit IPs machen willst... an sonsten könntest du immer abfragen wenn der Inhalt deines Textfeldes sich ändert und dann entsprechend ergänzen wenn ergänzt werden muss...
    spontan würde ich sagen das du dafür z.b. OnKillFocus abfangen könntest...



  • Da es während der EIngabe passieren muss eher ON_EN_CHANGE.
    Hier handelt es sich aber um WIndowsnachrichten die nicht unbedinngt in Echtzeit abgearbeitet werden.

    Besser ist es ein abgeleitete Klasse zu verwenden.



  • EDD schrieb:

    Hallo,
    Wie kann ich nach drei zahlen ein punkt einfügen???

    Danke euch!
    😋

    1. Daten in String abfüllen.
    2. Zeichen X an Position Y einfügen

    CString str;
    str = "Helloworld";
    str.Insert(5, ".");
    
    //ergebnis: "Hello.world"
    //die Werte aus einem Editcontrol kannst du mit 'GetWindowText()' auslesen
    

    Aber eben, eigentlich solltest du "IP Adress Control" verwenden ...



  • IP Adress Control habe ich mit versucht bekommen aber leider keine zahlen ausgelsen.

    Ich habe für IP Adress Control eine m_IP gegeben und versucht wie im Eingabefeld
    das so wie man das machen sollte leider kam ich nicht mit weit.

    z.b.

    CString Test;
    Test = "192.168.0.1"
    UpdateData(FALSE);
    mIp = Test ;
    

    ... wie gesagt ich kam nicht mit weit kann mir ein beispiel schreiben
    DANKE!



  • Control Variable "m_IpAdressCtl" auf's IP Adress Cobtrol setzen und dann

    m_IpAdressCtl.SetAddress(192, 168, 1, 100);
    

    Für weitere Informationen einfach mal die CIPAddressCtrl Klasse anschauen. 😉



  • Hier eine Funktion die alle drei Zeichen einen Punkt macht:

    CString Format_Preis(CString in)
    {
       in.Replace(".","");
       int s =0;
       if(in.GetLength()/3 > 0)
       {
        s = in.GetLength()/3;
        if(in.GetLength()%3 ==0)
        {
          s--;
        }
       }
       int prex =0;
       for(int x =1;x<=s;x++)
       {
        in = in.Left(in.GetLength() -(x*3)- prex) + "." + in.Right((x*3) +prex);
        prex = x;
       }
       return in;
    }
    


  • Danke Ellek das hat mir weiter geholfen.

    Ich kann jetzt von IP Controll die werte in ein Feldeingabe anzeigen lassen, versuche aber jetzt das ich z.b. von der register die ip im IP Controll angezeigt wird.
    mit dem Rigister war nur ein beispiel!!

    wie kann ich das am besten machen???
    😉 😉

    Danke auch an Andorxor ich werde gleich dein Code ausprobieren.

    🙂 🙂



  • Im Eingabefeld steht 192.168.0.1:1111
    wie kann ich ab dem ":" die 1111 ändern??
    Meine Idee war das man die 192.168.0.1 ingoriert das programm soll dann ":" erkennen und von da aus die 1111 ändern können, und im Eingabefeld 2 soll die 1111 zusehen sein.

    🤡 🤡
    Danke an sky21 dein code hat mir weiter geholfen.



  • CString strAdresse, strIp, strPort;
    	int nPosition;
    
    	// Adresse setzen
    	strAdresse = "192.168.0.1:1111";
    
    	// Position des Doppelpunktes
    	nPosition = strAdresse.Find(":");
    
    	// IP in Variable strIp
    	strIp = strAdresse.Left(nPosition);
    	// Port in Variable strPort
    	strPort = strAdresse.Right(strAdresse.GetLength() - nPosition - 1);
    


  • DANKE DANKE Ellek,
    genau so hab ich mir das auch vorgestellt.
    😉


Anmelden zum Antworten