Problem bei Parameterübergabe an Constante



  • const int Groesse = StrToInt(ParamStr(1));
    

    Funktioniert auch im Headerbereich also Deklarationsbereich. Nur ist das Problem, wenn der Parameter nicht gegeben ist, oder keine Zahl ist, wie kann ich hier Fehler abfangen?



  • Hallo,

    In diesem Fall solltest du besser StrToIntDef nehmen. Da wird im Fehlerfall der angegebene Wert übernommen. Ansonsten müsstest du die Zuweisung in einen try/catch-Block einschließen. Du mußt aber dann das Ergebnis von StrToInt erstmal in eine temporäre Variable schreiben und die dann später an deine Konstante übergeben.



  • Danke ^^ Auf das StrToIntDef hätte ich selber kommen müssen. Aber das mit dem try/catch ging nicht, jedenfalls leider nicht so, wie ich es gern hätte. Aber damit lässt sich schon arbeiten 🙂



  • Hallo

    Wenn try-catch nicht geht fdann kann es ja nur daran liegen das Groesse global ist. Das ist natürlich einr schlechte Wahl. Verwende zumindestens statische Membervariablen.
    In deine mFall brauchst du offenbar const weil du daraus ein Array in Abhängigkeit vom Übergabeparameter erstellen willst. Da solltest du lieber ein dynamisches Array wie std::vector verwenden, dann brauchst du keine globale Konstanten und bist auch zur Laufzeit flexibler und sicherer.

    bis bald
    akari



  • Das das const für ein Array sein soll, ist zumindest zweifelhaft. Es wäre ja keine Compiletimekonstante und somit für so ein Array nicht brauchbar. Wobei einige Compiler das trotzdem akzeptieren (g++).



  • Hallo

    Ja, wenn dann für ein dynamisches C-Array... was trotzdem nichts daran ändert das globale Variablen in den meisten Fällen eine schlechte Wahl sind.

    bis bald
    akari


Log in to reply