Access-o-Mania

Access-Forum => Access Programmierung => Thema gestartet von: astropfr am Dezember 13, 2017, 13:31:46

Titel: Type Mismatch bei VAL()
Beitrag von: astropfr am Dezember 13, 2017, 13:31:46
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?
Titel: Re: Type Mismatch bei VAL()
Beitrag von: Lachtaube am Dezember 13, 2017, 14:42:41
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.
Titel: Re: Type Mismatch bei VAL()
Beitrag von: steffen0815 am Dezember 13, 2017, 14:55:19
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.