Konvertierungen



  • Hallo RenéG (und auch die vielen anderen!),

    auch Dir vielen Dank. Jedoch fange ich langsam an, meinen Computer ...

    error C2065: '_tstof' : undeclared identifier

    ???

    Auch habe ich _tstof nicht in der MSDN gefunden.

    Bin ich ... oder meine PC ... oder meine Entwickungsumgebung ???

    Ich will doch nur eine Funktion schreiebn, die einen CString entgegennimmt, daraus eine Double oder einen Float macht, und diesen dann als CString zurückgibt.

    Wenn das alles nichts hilft oder nicht funktioniert, dann muss ich wohl jedes Zeichen überprüfen, ...

    Danke.

    Gruß Walter



  • Schwachsinn was ihr da macht.
    Ihr übergebt einen CString, wandelt ihn in float um und gebt den
    CString zurück...
    Was für einen Sinn macht dass ???

    Devil



  • Kein Schwachsinn.

    Ich lese aus mehreren CEdit ein. Die Daten werden dann durch Trenner verknüpft, und in eine Textdatei geschrieben.

    h;5;1,5;h;7; etc.

    Ein anderes Programm list diese Daten dann wieder ein und schreibt sie in eine Datenbank. Ich muss darauf achten, dass der Textstring richtig formatiert ist, also auch an den entsprechenden Positionen ein Datentyp Integer oder Double erscheint. Da die CEdit als Style nur ES_NUMBER hat, aber nichts für Gleitkommazahlen, muss ich die Gleitkommazahlen selbst kontrollieren.

    Ich dachte, dass es das einfachste ist, wenn ich den String in einen Double umwandle, und dann einen String zurückgebe.

    Gruß Walter



  • ich glaube wohl kaum das atof dir die zahlen aus einem String rausschneidet,
    du kannst doch gleich float eingeben lassen in die Editboxen, und dann
    float in CString umwandeln...

    Devil



  • Da die CEdit-Boxen dynamisch erstellt werden, und der Inhalt mit

    GetDlgItemText(IDC_E1B,GetDlgInhalt);
    

    ausgelesen wird (es kann vorkommen, dass die CEdit-Box nicht gebraucht wird, und dann ein Date- und Time-Picker erscheint, oder sogar einen Combobox), weiß ich selbst nicht wie das gehen sollte?

    Das Problem udn der Vortzeil der Erfassungsmaske ist, dass die Form, Felder und Boxen, welche erscheinen (incl. Anzahl) durch eine Textdatei vorgegeben wird. So kann für jeden Verwendungszweck ein eigenes Formular erstellt werden.

    Gruß Walter



  • aber wie willst du es machen das der Anwender nur zahlen + . eingibt?

    Devil



  • Der Anwender kann alles eingeben, und ich muss sicherstellen, dass nur das richtige weitergeleitet wird. Bei Integer tu ich mich leicht, da kann ich bei CEdit bei Create ES_NUMBER angeben, aber Gleitkommazahlen kennt CEdit nicht, also muss ich das abfangen. Es gibt auch Kommentarfelder, oder Datums- bzw. Zeitfelder.

    Das Problem besteht darin, den DAU daran zu hindern, Falsches zu übermitteln, obwohl er weiß, dass es falsch ist (oder gerade deshalb).



  • Reagier auf das Ereignis EN_CHANGE und ruf folgendes dort auf:

    UpdateData(TRUE);
    m_strEdit = m_strEdit.SpanIncluding("01234567890-.");
    UpdateData(FALSE);

    Dann hast du alle Zeichen außer den hier genannten wider raus.. also sobald jemand was anderes als die Paar zeichen eingibt, wird es sofort wieder gelöscht.. er sieht es nicht mal erscheinen, als wärs komplett für die Eingabe gesperrt.



  • Hallo DerGhost,

    aber wie mache ich das, wenn ich das Objekt dynamisch erstelle?

    pmyEdit1b = new CEdit();
        pmyEdit1b->Create( WS_CHILD |  WS_VISIBLE | WS_BORDER |WS_TABSTOP,
            CRect(left2,top,right2,bot), this, IDC_E1B);
        SetDlgItemText(IDC_E1B,ARRInhalt[0]);
    
    //mit GetDlgItemText(IDC_E1B,GetDlgInhalt) lese ich wieder aus, ...
    

    Vielen Dank!

    Gruß Walter



  • Achso ja...
    aber du kannst mal versuchen, den Text per GetDlgItemText in nen CString zu holen, dann per SpanIncluding zu bearbeiten, und per SetDlgItemText zurückzuschreiben.. probiers mal.


Anmelden zum Antworten