collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 45
  • Punkt Versteckte: 1
  • Punkt Mitglieder: 1

Es sind keine Mitglieder online.

* Forenstatistik

  • stats Mitglieder insgesamt: 13973
  • stats Beiträge insgesamt: 66539
  • stats Themen insgesamt: 8971
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 17
  • stats Am meisten online: 415

Autor Thema: Type Mismatch bei VAL()  (Gelesen 401 mal)

Offline astropfr

  • Newbie
  • Beiträge: 7
  • Rentner, der das Programmieren nicht lassen kann
Type Mismatch bei VAL()
« 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?
 

Offline Lachtaube

  • Access Guru
  • ****
  • Beiträge: 1246
Re: Type Mismatch bei VAL()
« Antwort #1 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.
Grüße von der (⌒▽⌒)
 

Offline steffen0815

  • Access-Profi
  • **
  • Beiträge: 126
Re: Type Mismatch bei VAL()
« Antwort #2 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.
Gruß Steffen