Abfragen ob Wert in Menge



  • Hey,

    Ich suche eine Möglichkeit um abzufragen, ob eine Variable den Wert 0-9 oder ein Komma hat. In Delphi ging das so:

    If Key in ['0'..'9', ','] then bla

    Ich könnte natüelich mehrere OR benutzen, aber ob das so toll ist? Wäre cool wenn jmd ne Lösung hätte (:



  • In dem konkreten Fall

    if ((Key >= '0' && Key <= '9') || Key == ',')
    

    Generell für die Abfrage von Werten aus einer Menge gibt es die Klasse Set (bzw. std::set).



  • Frolo schrieb:

    In Delphi ging das so:

    Die exakte Entsprechung wäre

    const TSysCharSet decimalCharSet = TSysCharSet () << '0' << /*...*/ << '9' << ',';
    if (decimalCharSet.Contains (Key))
    

    Der Vorschlag von Th69 ist in C++ aber viel schöner.

    Außerdem solltest du den Dezimalseparator nicht hartkodieren, der kann je nach Systemeinstellung variieren. Besser wäre es, du nähmest std::isdigit() (für 0-9) und verglichest außerdem mit DecimalSeparator . Aber am besten nimmst du TryStrToFloat(), das kümmert sich um die ganzen Details und erlaubt auch andere Zahlenformate (etwa die Exponentialdarstellung).


Anmelden zum Antworten