[C++ Fehler] Unit1.cpp(53): E2141 Fehler in der Deklarationssyntax



  • Hi,

    kann mir jemand sagen warum ich die o.g. Fehlermeldung beim Borland bekomme, obwohl logisch und theoretisch gesehen alles richtig aufgebaut ist. Der Fehler soll sich laut Borland in Zeile 12 befinden. (ES IST EIN CODESEGMENT!)

    1:int TForm1::Ausrechnen()
    2:{
    3:
    4: Edit1 -> Text = StrToInt (izahl1);
    5: Edit2 -> Text = StrToInt (izahl2);
    6:
    7: izahl3 = izahl1 + izahl2;
    8:
    9: return izahl3;
    10:}
    11:
    12:Edit3 -> Text = IntToStr (izahl3);



  • a) Die AnsiString-Klasse kann int's direkt entgegennehmen

    Edit3 -> Text = izahl3;
    

    b)Wo wird in Ausrechnen izahl3 deklariert? Ist es eine globale Variable? Warum gibt die Funktion dann einen Wert zurück?

    Vielleicht nochmal mit dem Thema Deklaration, Definition und Gültigkeitsbereiche befassen?



  • Hi,
    ist das richtig, das Zeile 12 ausserhalb der Funktion steht?

    Steht sie damit ganz alleine da?
    Dann ist die Fehlermeldung richtig, der Builder nimmt an, das da in Zeile 12 eine neue Funktion (oder Variable,...) kommt, und die hat dann natürlich einen Fehler in der Deklarationssyntax



  • Hallo

    ich vermute das ganze soll eigentlich so aussehen

    void TForm1::Ausrechnen()
    {
      Edit3 -> Text = StrToIntDef(Edit1->Text, 0) + StrToIntDef(Edit2->Text, 0);
    }
    

    Btw : Gib deinen Controls und Variablen sinnvolle Namen.

    bis bald
    akari



  • @akari:
    vermute auch, das das so ungefähr aussehen sollte.
    die Frage ist, ob der Syntaxfehler nur in dem Codesegment hier im Forum (also falsch wiedergegeben) wurde, oder ob es tatsächlich so im Sourcecode steht.



  • Hi,

    danke erstmal für die Antworten.

    @Akari: Ich gebe Dir bei Deiner Variante völlig Recht, aber was ich gerne wissen würde ist -> Was bedeutet die 0 bei Dir im Code und was ist der Unterschied zwischen StrToInt und StrToIntDef?

    Danke im Voraus
    CH

    akari schrieb:

    Hallo

    ich vermute das ganze soll eigentlich so aussehen

    void TForm1::Ausrechnen()
    {
      Edit3 -> Text = StrToIntDef(Edit1->Text, 0) + StrToIntDef(Edit2->Text, 0);
    }
    

    Btw : Gib deinen Controls und Variablen sinnvolle Namen.

    bis bald
    akari



  • markier einfach StrToIntDef im Quellcode und drück F1, dann lies...

    und allgemein: Hilfe benutzen



  • [Edit] zu langsam...



  • Danke für diese atemberaubende Antwort, die hätte meine Microsoft Büroklammer auch gewusst.
    Trotzdem den Befehl kenne ich nicht, bzw. gibt es laut meinen recherchen nicht.

    Linnea schrieb:

    markier einfach StrToIntDef im Quellcode und drück F1, dann lies...

    und allgemein: Hilfe benutzen



  • Ich nimms zurück IntToStrDef gibt es nicht. Sorry.



  • StrToIntDef konvertiert den in S angegebenen String in einen Integer-Wert. S muss die Entsprechung eines ganzzahligen Wertes (dezimal oder hexadezimal) sein. Enthält S keine gültige Zahl, gibt StrToIntDef Default zurück.


Anmelden zum Antworten