In vielen Programmen werden Konvertierungen zwischen verschiedenen Daten-Typen notwendig, wenn zum Beispiel Werte aus einer TextBox als Zahlen oder als Datum typ-gerecht weiter verarbeitet werden sollen. Beachten Sie bei allen Konvertierungsfunktionen den Daten-Typ der Argumente und den Daten-Typ des Funktionswertes sowie die Hinweise zur Lokalisierung.
Funktion | Beschreibung |
---|---|
CBool ( Expr ) AS Boolean | Konvertiert einen Ausdruck in einen Wahrheitswert (True oder False). Ein Ausdruck ist garantiert falsch, wenn ein Wahrheitswert Falsch ist oder eine Zahl 0 ist oder die String-Länge 0 ist oder ein NULL-Datum vorliegt oder ein Null-Objekt. |
CByte ( Expr AS Variant ) AS Byte | Konvertiert einen Ausdruck in ein Byte. Der Ausdruck wird zuerst in einen Integer-Wert konvertiert. Überschreitet der Integer-Wert den Byte-Bereich [0..255] , dann wird er (modulo 256) in diesen Bereich transformiert. |
CDate ( Expr AS Variant ) AS Date | Konvertiert eine String-Repräsentation eines Datums, von dem angenommen wird, dass es in UTC ist, in einen Datumswert. Dabei gilt: Ganzzahlanteil := Datum und Nachkommastellen := Zeit. Mit CFloat(Date(Now)) ermitteln Sie die reelle Zahl. Ein Datums- und Zeitwert wird implizit in eine Fließkommazahl umgewandelt, deren ganzzahliger Teil der interne Datumsteil ist (die Anzahl der Tage seit dem 1. Januar 4801 v. Chr.), und deren gebrochener Teil der interne Zeitteil ist: Ganzzahlige Werte repräsentieren einen Tag und die Nachkommastellen die Uhrzeit des Tages. Was den Bruchteil betrifft, so müssen Sie darauf achten, dass Sie sich in U.T.C.-Zeit befinden und dass ein Bruchteil von Null Mitternacht in U.T.C.-Zeit bedeutet. Wenn Ihre Zeitzone nicht Null ist, wird CFloat(Date(Now)) also keine ganze Zahl zurückgeben! CDate nutzt die aktuelle Lokalisierung nicht! |
CFloat ( Expr AS Variant ) AS Float | Konvertiert einen Ausdruck in eine Fließkommazahl. Vorsicht! Diese Funktion nutzt die eingestellte Lokalisierung nicht. Es muss als Dezimal-Separator ein Punkt gesetzt werden! |
CInt ( Expr AS Variant ) AS Integer | |
CInteger ( Expr AS Variant ) AS Integer | Konvertiert einen Ausdruck in eine Zahl vom Daten-Typ Integer. |
CLong ( Expr AS Variant ) AS Long | Konvertiert einen Ausdruck in eine Zahl vom Daten-Typ Long. Eine Bereichsüberschreitung wird nicht erkannt. |
CShort ( Expr AS Variant ) AS Short | Konvertiert einen Ausdruck in eine Zahl vom Daten-Typ Short. Der Ausdruck wird zuerst in einen Integer-Wert konvertiert. Überschreitet der Integer-Wert den Short-Bereich [-32.768 .. +32.767], dann wird er in diesen Bereich transformiert. Dabei werden die geringst-signifikanten 16 Bits aus Expr extrahiert und im Sinne des Zweierkomplements als Ganzzahl interpretiert. |
CSingle ( Expr AS Variant ) AS Single | Konvertiert einen Ausdruck in eine Zahl vom Daten-Typ Single. Diese Funktion nutzt die eingestellte Lokalisierung nicht! |
CStr ( Expr AS Variant ) AS String | |
CString ( Expr AS Variant ) AS String | Konvertiert einen Ausdruck in einen String. Diese Funktion nutzt die eingestellte Lokalisierung nicht! |
CVar ( Expr ) AS Variant | |
CVariant ( Expr ) AS Variant | Konvertiert einen Ausdruck in einen Variant. Dies ist nützlich, wenn das Ergebnis einer Funktion vom Datentyp der Argumente abhängig ist. |
Str$ ( Expr ) AS String | |
Str ( Expr ) AS String | Konvertiert eine Zahl oder ein Datum in einen String. Diese Funktion beachtet die eingestellte Lokalisierung! |
DConv$ ( String AS String ) AS String | |
DConv ( String AS String ) AS String | Konvertiert einen String vom System-Zeichensatz nach UTF-8, den Desktop-Zeichensatz. |
SConv$ ( String AS String ) | |
SConv ( String AS String ) | Konvertiert einen String vom Desktop-Zeichensatz (der UTF-8 sein sollte) in den System-Zeichensatz. |
Val ( String ) | Konvertiert einen String in eine Zahl oder in ein Datum. Diese Funktion berücksichtigt die eingestellte Lokalisierung! |
Tabelle 9.10.1.1: Übersicht zu den Konvertierungsfunktionen
Der Umwandlungsalgorithmus für die Val()-Funktion ist der folgende:
UmgewandelterString = Conv$ ( String AS String , QuellZeichensatz AS String , ZielZeichensatz AS String ) UmgewandelterString = Conv ( String AS String , QuellZeichensatz AS String , ZielZeichensatz AS String )
Wandelt einen String von einem Zeichensatz in einen anderen um. Ein Zeichensatz wird durch einen String wie „ASCII“, „ISO-8859-1“, oder „UTF-8“ repräsentiert.
Dim sNumber As Single Print CBool(0), CBool(1), CBool("Gambas"), CBool(""), CBool(Null), CBool(Date(2000, 2, 29)) Print CByte("23"), CByte("257"), CByte(True) Print "CDate(2488913) = "; CDate(2488913) Print "UnixTimeStamp = "; DateDiff(CDate("1/1/1970"), Now, gb.Second) Try CDate("12.2. 2014 12:45:00") If Error.Code = 6 Then Print "Der Ausdruck '"; "12.2. 2014 12:45:00"; "' kann nicht konvertiert werden!" Print "Datum: ", Format(CDate(Val("1.9.2012")), "d. mmmm yyyy") Print "Tage seit 1.1. 1970 = "; DateDiff(CDate("1/1/1970"), Now, gb.Day) ' 16224 Print CFloat("+3.1416"), CFloat(Now()) Print CInt("17"), CInt(True), CInt(Pi(1 / 7)), CInt(3.8), CInt(-7.998), CInt(-7.1), CInt(Now) Print "CLong(5 ^ (2 ^ 2)) = "; CLong(5 ^ (2 ^ 2)) Print "CLong(2^62) = "; CLong(2 ^ 62) Print CShort(20 < 6), CShort(False), CShort(True), CShort(DateDiff(CDate("1/1/1970"), Now, gb.Day)) Try sNumber = CSingle(DateDiff(CDate("1/1/1970"), Now(), gb.Millisecond)) If Error Then Print "ÜBERLAUF" Print CSingle(Pi), CFloat(Pi), CSingle(Exp(11)), CSingle("+355.11") Print CStr(-99), CStr(Pi(Pi())), CStr(355 / 113), CStr(Now) Print "Object.Type(CVariant([2, 3, 5])) = "; Object.Type(CVariant([2, 3, 5])) Print "Object.Type(CVariant([\"2\",\"3\",\"5\"])) = "; Object.Type(CVariant(["2", "3", "5"])) Print "Object.Type([CVariant(\"a\"),\"b\",\"c\"]) = "; Object.Type([CVariant("a"), "b", "c"]) Print "Val(\"True\") = "; Val("True"), "Val(\"False\") = "; Val("False") Print Format(Val("12.11.2013"), "d. mmmm yyyy") Print "Val(\"123,456\") = "; Val("123,456"); " (Zahl mit Komma als Dezimal-Trennzeichen für DE.de)" Print "Val(\"123.456\") = "; Val("123.456"); " (Punkt wird als Tausender-Trennzeichen interpretiert!)" If Val("123.66") = Null Then Print "Val(\"123.66\") = NULL"; " (String nicht als Zahl interpretierbar.)" Print Conv("Ärger in der Ödipus-Straße", System.Charset, "ISO 8859-15") Print "Desktop-Zeichensatz = "; Desktop.Charset Print "System-Zeichensatz = "; System.Charset
False True True False False True 23 1 255 CDate(2488913) = 30.05.2014 23:00:00 UnixTimeStamp = 1401992840 Der Ausdruck '12.2. 2014 12:45:00' kann nicht konvertiert werden! Datum: 1. September 2012 Tage seit 1.1. 1970 = 16226 3,1416 2488918,81065353 17 -1 0 3 -7 -7 2488918 CLong(5 ^ (2 ^ 2)) = 625 CLong(2^62) = 4611686018427387904 0 0 -1 16226 ÜBERLAUF 3,1415927 3,14159265358979 59874,140625 355,1099854 -99 9.86960440108936 3.14159292035398 06/05/2014 18:27:20.466 Object.Type(CVariant([2, 3, 5])) = Integer[] Object.Type(CVariant(["2","3","5"])) = String[] Object.Type([CVariant("a"),"b","c"]) = Variant[] Val("True") = True Val("False") = False 12. November 2013 Val("123,456") = 123,456 (Zahl mit Komma als Dezimal-Trennzeichen für DE.de) Val("123.456") = 123456 (Punkt wird als Tausender-Trennzeichen interpretiert!) Val("123.66") = NULL (String nicht als Zahl interpretierbar.) �rger in der �dipus-Stra�e Desktop-Zeichensatz = UTF-8 System-Zeichensatz = UTF-8