WaBis

walter.bislins.ch

VbxObj: Obj-Funktionen

Das VbxObj Modul stellt Funktionen zur Datentyp-Abfrage und -Umwandlung und Formatierung bereit, die von der verwendeten Spracheinstellung unabhängig sind.
ValueIsNumeric, ValueIsDate Gibt true zurück, wenn das Argument vom entsprechenden Typ ist oder in diesen konvertiert werden kann.
ValueToInt, ValueToNum, ValueToDate Wandelt das Argument in den entsprechenden internen Datentyp um.
GetType Gibt den Datentyp des Argumentes zurück (siehe Obj-Konstanten).
IsValidType Gibt true zurück, wenn ein Wert mit ConvertToType in einen gewünschten Datentyp umgewandelt werden kann.
ConvertToType Konvertiert einen Wert (any) in einen bestimmten Datentyp.
StringIsBitmask Testet ob ein String ein gültiges Bitmask-Format darstellt.
StringToBitmask Konvertiert einen String im Bitmask-Format in seinen int-Wert.
BitmaskToString Konvertiert einen int-Wert in einen String im Bitmask-Format.
FormatNumberUnit Formatiert eine number in einen String im ISO-Zahlenformat (z.B. 1000 B → "1 kB").

Der Zugriff auf obige Funktionen erfolgt über das globale Objekt Obj:

x = Obj.Function( Arguments )
Obj.Function Arguments

Zweck

Die VbScript internen Funkionen zum Umwandeln von Datentypen (z.B. Numerische in Strings und umgekehrt) sind teilweise von der Spracheinstellung des Servers abhängig. Je nach Sprachregion wird zum Beispiel als Dezimaltrennzeichen im String-Format einer Zahl ein Punkt oder Komma verwendet und die Datums-Darstellung ist in verschiedenen Ländern auch unterschiedlich.

Diese Funktionen sind nützlich, um Benutzereingaben von Formularen (Strings) korrekt in die VbScript internen Darstellungen zu wandeln, egal in welcher landesregionalen Dartsellung der Benutzer die Daten eingibt.

ValueIsNumeric, ValueIsDate

if Obj.ValueIsNumeric( aValue ) then
if Obj.ValueIsDate( aValue ) then
aValue: any
Beliebiger Wert (int, double, string, date, ...)

Gibt true zurück, wenn aValue den enstprechenden Datentyp repräsentiert oder in diesen Typ umgewandelt werden kann. Wenn aValue ein String ist, gibt die Funktion true zurück, wenn der String als numerischer Wert bzw. als Datum interpretiert werden kann und in das entsprechende interne VbScript-Format konvertiert werden kann (mit Hilfe der Obj-Funktionen).

ValueToInt

x = Obj.ValueToInt( aValue )
aValue: any
Beliebiger Wert (int, double, string, date, ...)
return: int (long)

Require: Obj.ValueIsNumeric( aValue )

ValueToNum

x = Obj.ValueToNum( aValue )
aValue: any
Beliebiger Wert (int, double, string, date, ...)
return: number (double)

Require: Obj.ValueIsNumeric( aValue )

ValueToDate

x = Obj.ValueToDate( aValue )
aValue: any
Beliebiger Wert (int, double, string, date, ...)
return: date

Require: Obj.ValueIsDate( aValue )

GetType

t = Obj.GetType( aValue )
aValue: any
Beliebiger Wert (int, double, string, date, ...)
return: int
Obj.TypeAny...Obj.TypeDate

IsValidType

if Obj.IsValidType( aType, aValue ) then
aType: int
Obj.TypeAny...Obj.TypeDate
aValue: any
Beliebiger Wert (int, double, string, date, ...)

Gibt true zurück, wenn aValue mit der Funktion ConvertToType in den Datentyp aType konvertiert werden kann.

ConvertToType

x = Obj.ConvertToType( aType, aValue )
aType: int
Obj.TypeAny...Obj.TypeDate
aValue: any
Beliebiger Wert (int, double, string, date, ...)

Require: Obj.IsValidType( aType, aValue )

Bitmasken

Bitmasken können verwendet werden, um Mehrfachauswahlen von Optionsfeldern oder Check-Boxen in einer einzigen Zahl (int) zu speichern. Solche Optionsfelder oder Check-Boxen auf Formularseiten liefern ihre Auswahl als Bitmaske im String-Format, wenn sie entsprechend programmiert werden.

Mehrere boolsche Werte (true oder false) können in einem einzigen int-Wert gespeichert werden, indem jedem boolschen Wert ein Bit des int-Wertes zugewiesen wird. Wenn z.B. die Bits 0, 2 und 3 eines int-Wertes gesetzt sind, dann hat der int den Wert (2^0 + 2^2 + 2^3 = 1 + 4 + 8 = 13).

Die String-Darstellung einer solchen Bitmaske ist:

String: "0, 2, 3"
Binär : 0000 0000 0000 0000 0000 0000 0000 1101
int   : 13

Mit den Funktionen StringToBitmask und BitmaskToString können Bitmasken (int) und Strings in einander umgewandelt werden.

StringIsBitmask

if Obj.StringIsBitmask( aString ) then
aString: string

Gibt true zurück, wenn aString eine Bitmaske darstellt, welche mit der Funktion StringToBitmask in einen int konvertiert werden kann.

StringToBitmask

bm = Obj.StringToBitmask( aString )
aString: string
String im Bitmask-Format (z.B: "0, 2, 3" → 13)

Require: StringIsBitmask( aString )

BitmaskToString

s = Obj.BitmaskToString( aBitmask )
aBitmask: int

Wandelt einen int-Wert einen String im Bitmask-Format (z.B: 13 → "0, 2, 3") um.

FormatNumberUnit

s = Obj.FormatNumberUnit( aNumber, aDigits, aFormat )
aNumber: int, number
Zu formatierender Wert
aDigits: int
Gewünschte Anzahl anzuzeigender Ziffern.
aFormat: string

Formatiert eine Zahl so, dass sie vor dem Dezimalzeichen 1, 2 oder 3 Stellen hat und mit einer Grössenangabe wie "p", "u", "m", "k", "M", "G", "T" versehen wird, je nach Grösse der Zahl.

Mit aDigits kann man bestimmen, wie viele Ziffern angezeigt werden sollen. Wenn jedoch aDigits kleiner ist als die Anzahl Ziffern, die es vor dem Dezimalzeichen braucht, so werden entsprechend mehr Stellen angezeigt. Wenn z.B. aDigits=2 ist, aber aNumber=123, dann werden 3 Stellen angezeigt, nicht nur 2.

Mit aFormat kann die Formatierung vielfältig beeinflusst werden:

aFormat aDigits aNumber Resultat
"# @B" 3 12 "12 B"
"# @B" 3 1024 "1.00 KiB"
"# *B" 3 1024 "1.02 kB"
"#.# *m" 3 12345 "12.3 km"
"#.# *m" 4 -0.12345 "-123.5 mm"

Wenn aNumber ein int ist, muss in aFormat das Zeichen # an der Stelle stehen, wo die Zahl gedruckt werden soll. Wenn aNumber ein numeric ist (reelle Zahl), so muss in aFormat die Zeichenfolge #.# verwendet werden.

An der Stelle, wo die Grössenordnung (k, M, G, T usw.) gedruckt werden soll, muss das Zeichen * oder @ stehen. Das @ Zeichen kann verwendet werden, wenn nicht 1000er Schritte, sondern 1024er Schritte wie bei Computern oft üblich verwendet werden sollen. Die Grössenordnung wird dann zur Verdeutlichung wiefolgt gekennzeichnet: Ki, Mi, Gi, Ti.

Beispiel: 1024 Bytes wird wiefolgt angezeigt:

"# @B" → "1.000 KiB"
"# *B" → "1.024 kB"
Weitere Infos zur Seite
Erzeugt Dienstag, 17. August 2010
von wabis
Zum Seitenanfang
Geändert Freitag, 19. Juli 2013
von wabis