Kommastellen im Edit Feld



  • Hallo,

    ich habe folgendes Problem.

    In mehreren Edit Feldern schreibe ich eine Zahl mit Komma oder auch ohne Komma. Diese Werte multipliziere bzw. addiere ich dann durch eine Formel, leider macht das Programm Probleme mit den Kommastellen, es ignoriert die Kommastellen und es kommen dadurch falsche Ergebnisse zustande. Der Code sieht so aus:

    float min=atoi(Edit1->Text.c_str());
    float max=atoi(Edit2->Text.c_str());
    float wert=atoi(Edit3->Text.c_str());
    float strom;

    if(ComboBox1->Text=="4-20mA")
    {
    strom=( (4.00+(16.00/(max-min)) *(wert-min)));
    Edit4->Text=strom;
    }

    else if(ComboBox1->Text=="0-20mA")
    {
    strom=(((20.00/(max-min))*(wert-min)));
    Edit4->Text=strom;
    }

    Wer kann mir da weiterhelfen???
    Evtl. muss das Ganze noch so geändert werden, dass nur Zahlen eingegeben werden können.

    mfg

    ahl



  • atof



  • Ja klar mit atof. Hätte ich auch selbst wissen müssen.

    Vielen Dank



  • float min=Edit1->Text.ToFloat(); 
    float max=Edit2->Text.ToDouble(); 
    float wert=Edit3->Text.ToFloat();
    

    das gibts auch noch - persöhnlich finde ichd as einfacher zu lesen.
    oder spricht irgendwas dagegen?

    T I M



  • Hallo dern00b,

    spricht natürlich nichts dagegen, werde es mal so ausprobieren

    Vielen Dank für die Hilfe.



  • dern00b schrieb:

    float min=Edit1->Text.ToFloat(); 
    float max=Edit2->Text.ToDouble(); 
    float wert=Edit3->Text.ToFloat();
    

    das gibts auch noch - persöhnlich finde ichd as einfacher zu lesen.
    oder spricht irgendwas dagegen?

    T I M

    n00b, std::string bietet so etwas nicht an



  • Hallo

    @ Hinweis : wer sagt denn, das es um std::string geht?
    Aus den Codeausschnitten geht hervor das AnsiString aus der VCL erwendet wird, und dort gibt es diese Methode ToDouble().

    bis bald
    akari



  • akari schrieb:

    Hallo

    @ Hinweis : wer sagt denn, das es um std::string geht?
    Aus den Codeausschnitten geht hervor das AnsiString aus der VCL erwendet wird, und dort gibt es diese Methode ToDouble().

    bis bald
    akari

    Aus den drei Zeilen von dern00b vielleicht, aber aus dem Code vom Threadersteller auf keinen Fall, der einzige Hinweis dort auf die verwendete String-Klasse ist der Aufruf von c_str() und damit verbinde ich im iso-c++ Forum std::string



  • Hallo

    aber aus dem Code vom Threadersteller auf keinen Fall

    Im Codeausschnitt vom OP ist zum Beispiel ComboBox1->Text und Edit1->Text zu finden, zwei typische Bezeichnungen aus der VCL.
    Und natürlich hat AnsiString auch eine Mehtode c_str().

    bis bald
    akari



  • Danke für die Info, hatte vergessen, dass diese Namen für die VCL reserviert sind.


Anmelden zum Antworten