Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Type Mismatch bei VAL()

Begonnen von astropfr, Dezember 13, 2017, 13:31:46

⏪ vorheriges - nächstes ⏩

astropfr

Jeder  kennt die Funktion Val() in Basic, die den numerischen Wert einer Zeichenkette bis zum ersten nicht numerischen Zeichen zurückgibt.
z.B. Val("123.4") ergibt 123,4
oder Val("123.4 Test") ergibt auch 123,4
ABER Val("123.4%") oder Val("123.4&") ergibt einen Error 13, Type Mismatch, aber nur, wenn % oder & direkt auf die letzte Ziffer folgen, ohne ein anderes nicht numerisches Zeichen dazwischen.

Dieses Verhalten des BASIC-Interpreters gibt es schon seit GW-Basic und in allen BASIC-Versionen von Microsoft!
Kennt jemand den Grund, oder ist das nur einfach Nachlässigkeit der Microsoft-Programmierer, die den entsprechenden Code seit Jahrzehnten einfach so verwenden, wie er schon immer war?

Lachtaube

Bei %, & und ^ kommt es zu Fehlern, sofern die Ziffern einen Dezimalpunkt enthalten. % dürfte vermutlich als Integer und & als Long ausgewertet werden - bei ^ habe ich keinen blassen Schimmer.
Grüße von der (⌒▽⌒)

steffen0815

Hallo,
diese Funktion sollte man nach meiner Meinung  gar nicht nutzen. Das ist keine Programmierung sondern "Schätzen Sie mal". Gleiches gilt nach meiner Meinung für "IsNumeric()"
Wenn du schon solche Konstruktionen hast, zerlege den Text "selbst" nach vernünftigen Regeln.
Gruß Steffen