AnsiString in Integer formatieren oder konvertieren



  • Ich habe ein Problem mit einem Programm welches später mal zahlen aus einem label oder Edit feld auslesen soll
    nur sind diese Captions die ich da auslesen will alle als AnsiString formatiert und ich kann sie nicht in eine Integer Variabele Speichern. Brauche nun aber diese um zu mit den Zahlen aus den Felden zu rechnen.

    Wäre nett wenn mir hier einer ne lösung für das problem rein schreiben könnte es ginge auch wenn ich einfach nur die AnsiString oder String Variabelen addieren (also nicht hintereinandersetzten) könnte...



  • Hi

    Also das gehört eigentlich ins BCB Forum. Aber die Funtion die du suchst heisst StrToInt(). Sie wandelt deinen AnsiString in einen integer.



  • oh srry
    hab mir nicht alle beschreibungen durch gelesen da ich kaum zeit hatte und es bissl viel zu lesen ist aber trotzdem danke werde mich nächstes mal dran erinnern...



  • wo soll ich den befehl einfügen?
    bei mir sagt er diese Compiler fehlermeldung...

    Zu wenige Parameter im Aufruf von '_fastcall StrToInt(const AnsiString)'

    dass hier ist der quellcode in den dass reinsoll...

    void __fastcall TfrmRechner::btnzahlholen(TObject *Sender)
    {AnsiString Feld1, Feld2, Feld3, Feld4, Feld5, Feldges1, Feldges;
    if ((CheckBox1->State== cbChecked)||(CheckBox2->State== cbChecked)||(CheckBox3->State== cbChecked)||(CheckBox4->State== cbChecked)||(CheckBox5->State== cbChecked)){

    Feld1 = CheckBox1->Caption;
    Feld2 = CheckBox2->Caption;
    Feld3 = CheckBox3->Caption;
    Feld4 = CheckBox4->Caption;
    Feld5 = CheckBox5->Caption;

    Feldges1= Feld1+Feld2+Feld3+Feld4+Feld5;

    und ich will die Felder 1-5 zusammen rechnen wie man sieht....



  • StrToInt() geht zwar auch, aber wenn du schon AnsiString verwendest, dann nimm lieber ToInt()!
    Also etwa so:

    Feldges1 = Feld1.ToInt() + Feld2.ToInt() + Feld3.ToInt() + Feld4.ToInt() + Feld5.ToInt();
    

    Allerdings ist, wenn ich das Durcheinander richtig entwirrt habe, Feldges1 gar keine int. Das macht dann keinen Sinn, oder willst du das Ergebnis dann wieder in einem AnsiString??

    BTW is das hier wirklich das falsche Forum.



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Borland C++ Builder (VCL/CLX) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • Hallo

    @nirsaja
    Wenn er das Ergebnis wieder in AnsiString haben will funktioniert das schon (Zuweisungsoperator bei AnsiString ist u.a. für int überladen).
    @Knut_Butschebu
    Die ganze Checkboxabfrage könnte man noch etwas einfacher gestalten (siehe Checkbox->Checked).



  • nein ich hatte vergessen das ganze noch in int zu ändern aber so wie du es mir gesagt hast funzt es danke...



  • Oder wenn du nicht möchtest, das bei leerem Feld oder bei anderen Falscheingaben eine Exception kommt, dann benutze lieber .ToIntDef(Defaultwert).



  • bzw. fang die EConvertError-Exceptions mittels eines try/catch-Blockes ab. Eine Exception ist hier aber relativ unwahrscheinlich. Er fragt ja die Captions seiner Checkboxen ab und die kann der User normalerweise nicht verändern



  • fang die EConvertError-Exceptions mittels eines try/catch-Blockes ab

    dann kommt aber trotztdem die Fehlermeldung, wenn man nicht die .exe startet, sondern die F9 Taste drückt (kompilieren und starten). Bei den früheren Versionen konnte man das immer ausschalten, aber in Version 6.0 (Trial) geht das irgentwie nicht. Wenn man das Häkchen bei "Show Exceptions" wegmacht, kommt beim kompilieren immer die Fehlermeldung "Fehler: Exceptions nicht aktiviert" oder so.


Anmelden zum Antworten