tEdit Felder in Zeiger speichern



  • Hallo zusammen,
    ich möchte die Werte aus mehreren TEdit Feldern in einem Zeiger speichern.
    Ich habe 5 TEdit Felder (Edit1 bis Edit6) in welche ganze Zahlen eingegeben werden. Nun will ich von diesen Zahlen die Wurzel ziehen und anschließend in einem Zeiger m_werte[i] speichern.
    Mein Versuch:

    m_zeiger[1] = sqrt(Edit1);
    m_zeiger[2] = sqrt(Edit2);
    m_zeiger[3] = sqrt(Edit3);
    m_zeiger[4] = sqrt(Edit4);
    m_zeiger[5] = sqrt(Edit5);
    m_zeiger[6] = sqrt(Edit6);

    ist natürlich gescheitert. Ich komm mit der Umwandlung von double Werten nicht klar. Muss ich den Wert aus dem Edit Feld erst in ein double Zahl umwandeln, dann die Wurzel berechnen und dann? In was, soll ich das Ergebnis umwandeln, damit ich es in dem Zeiger speichern kann? Die Nachkommastellen sind mir eigentlich egal.
    Danke schonmal für eure Hilfe



  • Hallo,

    Thomas1234 schrieb:

    Muss ich den Wert aus dem Edit Feld erst in ein double Zahl umwandeln, dann die Wurzel berechnen und dann?

    Ja, das musst du. Wenn du mal in die Hilfe zu TEdit schaust wirst du eine Eigenschaft namens Text finden, die dir den Inhalt deines Editfeldes als String zurückgibt. Der Typ AnsiString wiederum hat eine Memberfunktion namens ToDouble welche die Umwandlung erledigt. Dann kannst du die Wurzel ziehen.

    Was für ein Typ ist denn m_zeiger? Ein Zeiger auf was?



  • so der so ähnlich:

    double Array[6];
    
    for(int i=0;i<6;i++)
    {
        TEdit * Zeiger = (TEdit*) FindComponent("Edit" +IntToStr(i+1));
    
        if(Edit)
        {
            Array[i] = sqrt(StrToFloatDef(Zeiger->Text,1));
        }
    }
    


  • Hallo,

    Ich würde das etwas anders machen.
    1. kein C-Cast und kein FindComponent
    - statt dessen lieber von Anfang an einen vector von TEdits erzeugen und verwenden (std::vector<TEdit*>).
    - wenn schon FindComponent dann besser einen dynamic_cast<TEdit*> statt dem C-Cast, evtl. auch einen static_cast wenn man sich sicher ist, dass nur TEdits gefunden werden können
    2. StrToFloatDef ist meiner Meinung nach hier nicht korrekt, man sollte schon testen können, wenn im Edit was falsches steht
    - also statt dessen lieber StrToFloat (oder ToDouble()) und ein try/catch darum.
    3. Vernünftige Bezeichner - 'Zeiger' ist doch sehr nichtssagend genau wie 'Array'


Log in to reply