User Tools

Site Tools


k7:start

7.0 Data types - Overview

Data types are required if you want to store data - as character-bound information - in a variable. Describe data types:

  • what kind of data can be stored in a variable,
  • the range of values that a certain data type covers,
  • the permitted operations for the selected data type and
  • the representation of the data in the memory, which determines how much memory is made available for a variable of a certain type.

There are native data types in Gambas. These include, for example, data types with the names (keyword), integer, byte, string or float. An overview of the native data types can be found in table 7.0.1 The syntax of a structure has been introduced in Gambas 3. These structures allow you to combine logically relevant IT units (both data types and classes or objects) into a new unit - a structure. However, this structure has no methods or events. Of particular importance in Gambas as an object-oriented language are the classes. Anything that is not a data type, structure, or executable code is a class. They are characterised by the fact that they are a logical encapsulation of properties, methods and events. An instance of a class is called an object.

Summary

  • Gambas has native data types that carry their value information according to their type. The system checks whether the value assigned to a variable or constant collides with the declared data type.
  • The structures are a bundling of different but related value information.
  • In addition to the information (properties), classes also have methods to modify them and events to interactively act.

Thus, structures take a mediatingposition between the native data types and the abstract classes (concrete and abstract in the sense of their definition).

Data Type Description Default Memory Size
Boolean TRUE or FALSE FALSE 1 Byte
Byte 0… 255 0 1 Byte
Short -32.768… +32.767 0 2 Bytes
Integer -2.147.483.648… +2.147.483.647 0 4 Bytes
Long -9,223,372,036,854,775,808…. 9,223,372,036,854,775,807 0 8 bytes
Single Like the float-data type in C 0.0 4 Bytes
Float Like the double data type in C 0.0 8 bytes
Date Date and time, each stored in an integer value NULL 8 bytes
String A variable-length string with variable length NULL 4 bytes
Variant Every data type NULL 12 bytes
Object Anonymous reference to an object NULL 4 bytes
Pointer Pointer to a memory address 0 4 bytes on 32-bit systems and 8 bytes on 64-bit systems

Table 7.0.1: Overview of the native data types in Gambas

7.0.1 Array data type

The native data types have an associated array data type whose name corresponds to the name of the native data type and follows the square brackets: {code_b_0}

The description of arrays can be found in chapter 20.12.

7.0.2 Data type functions

You can use the following functions to determine the data type. The argument passed to the data type functions is a string or a data type in SizeOf () or an expression in TypeOf (). The function value is either True or False or a memory value or a data type.

FunctionDescription
IsBoolean (string) Is true if string=“True” or string=“False” (comparison is not case-sensitive)
IsDate (string) Is true if string can be safely interpreted as date
IsFloat (string) Is true if string can be safely interpreted as float number
IsInteger (string) Is true if string can be safely interpreted as an integer
IsLong (string) Is true if string can be safely interpreted as a long integer number
IsNumber (string) Is true if string can be safely interpreted as a number
IsNull (string) Is true, if string is safe NULL ist

Table 7.0.2.2: Overview of the data type functions 1

FunctionDescription
SizeOf (data type) Specifies the memory used by a specific data type.
TypeOf (expression) Returns the data type of an expression.

Table 7.0.2.3: Overview of Data Type Functions 2

The function value of SizeOf (data type) or TypeOf (expression) is one of the following constants:

Expression type Return value (numeric) Return value (symbolic)
Byte2gb.Byte
Short3gb.Short
Integer 4gb.Integer
Long 5gb.Long
Single 6gb.Single
Float 7gb.Float
Date 8gb.Date
String 9gb.String
Pointer 11gb.Pointer
Variant 12gb.Variant
Function 13gb.Function
Class 14gb.Class
Object 16 gb.Object

Table 7.0.2.3: Overview of the function values of SizeOf (data type) and TypeOf (expression)

Hints:

  • Note that TypeOf (NULL) returns the numeric value 15 or gb. zero/.
  • The function IsNull (string) returns the function value True for the following arguments:
    • string is a NULL constant
    • string is a NULL object reference
    • The length of string is 0
    • string represents a zero date
    • string represents an uninitialized variable of type Variant
    • list point

7.0.3 Conversion of data types

Gambas provides functions for converting data types. For information on these functions, see chapter 9.7 Conversion Functions.

However, Gambas also automatically converts data types. For example,“2” is a string, but can also be interpreted as an integer 2 (integer) and can be used “on the fly” after a conversion, as the following examples show:

Public Sub OnTheFly_Click()
  Print "2" + 2 ' Integer-Zahl
  Print "Can '2' be interpreted as an integer number? ---> ";; IsInteger("2")
  Print "Type_1 = ";; TypeOf("2" + 2) ' 7 => Float
' String + Integer 
' String -> Integer => 2 + 2 = 4  
  Print "2" & 2 ' String
  Print "Type_2 = ";; TypeOf("2" & 2) ' 9 => String
' String & Integer 
' Integer -> String => "2" & "2" = "22" 
  Print 2.1 * ("2" & 2) ' Floating-point number
  Print "Type_3 =  ";; TypeOf(2.1 * ("2" & 2)) ' 7 => Float
' Float * (String & Integer) 
' Integer -> String => "2" & "2" = "22" 
' Float * String => 2.1 * "22" 
' String -> Float => 2.1 * 22.0 = 46.2 
End ' OnTheFly() 

These are the expenses in the console:

4
Can '2' be interpreted as an integer number? --->  True
Type_1 =  7
22
Type_2 =  9
46,2
Type_3 =   7

7.0.4 Download

7.0 Datentypen

Datentypen werden dann benötigt, wenn Sie Daten – als an Zeichen gebundene Informationen – in einer Variablen abspeichern wollen. Datentypen beschreiben:

  • welche Art von Daten in einer Variablen gespeichert werden können,
  • den Wertebereich, den ein bestimmter Datentyp abdeckt,
  • die zulässigen Operationen für den ausgewählten Datentyp sowie
  • die Repräsentation der Daten im Speicher, die darüber entscheidet, wie viel Speicher für eine Variable eines bestimmten Typs zur Verfügung gestellt wird.

In Gambas gibt es native Datentypen. Dazu zählen zum Beispiel Datentypen mit den Namen (Schlüsselwort) Integer, Byte, String oder Float. Eine Übersicht zu den nativen Datentypen finden Sie in der Tabelle 7.0.1. Die Syntax einer Struktur (Struct) wurde in Gambas 3 eingeführt. Diese Strukturen erlauben Ihnen die Zusammenfassung logisch relevanter informatischer Einheiten (sowohl Datentypen als auch Klassen oder Objekte) zu einer neuen Einheit – einer Struktur. Diese Struktur besitzt jedoch keine Methoden oder Events. Von besonderer Wichtigkeit sind in Gambas als objektorientierter Sprache die Klassen. Alles, was kein Datentyp oder Struktur ist oder ausführbaren Code kennzeichnet, ist eine Klasse. Sie zeichnen sich dadurch aus, dass sie eine logische Kapselung von Eigenschaften, Methoden und Events sind. Eine Instanz einer Klasse heißt Objekt.

Zusammenfassung

  • Gambas besitzt native Datentypen, die ihrem Typ entsprechend ihre Wert-Information tragen. Es wird geprüft, ob der einer Variablen oder Konstanten zugewiesene Wert mit dem deklarierten Datentyp kollidiert.
  • Die Strukturen sind eine Bündelung von verschiedenen, aber zusammengehörigen Wert-Informationen.
  • Klassen besitzen zusätzlich zu den Informationen (Eigenschaften) auch Methoden, um diese zu modifizieren sowie Ereignisse (Events), um interaktiv zu agieren.

Somit nehmen Strukturen eine vermittelnde Stellung zwischen den nativen Datentypen und den abstrakten Klassen (konkret und abstrakt im Sinne ihrer Definition) ein.

Datentyp Beschreibung Default Speichergröße
Boolean TRUE oder FALSE FALSE 1 Byte
Byte 0 … 255 0 1 Byte
Short -32.768 … +32.767 0 2 Bytes
Integer -2.147.483.648 … +2.147.483.647 0 4 Bytes
Long -9.223.372.036.854.775.808 … +9.223.372.036.854.775.807 0 8 Bytes
Single Wie der float-Datentyp in C 0.0 4 Bytes
Float Wie der double-Datentyp in C 0.0 8 Bytes
Date Datum und Zeit, jeweils in einem Integerwert abgelegt NULL 8 Bytes
String Eine Zeichenkette mit variabler Länge NULL 4 Bytes
Variant Jeder Datentyp NULL 12 Bytes
Object Anonyme Referenz auf ein Objekt NULL 4 Bytes
Pointer Zeiger auf eine Speicheradresse 0 4 Bytes auf 32-Bit-Systemen und 8 Bytes auf 64-Bit-Systemen

Tabelle 7.0.1: Übersicht zu den nativen Datentypen in Gambas

7.0.1 Array-Datentyp

Die native Datentypen haben einen zugeordneten Array-Datentyp, dessen Name mit dem Namen des nativen Datentyps korrespondiert und dem eckige Klammern folgen:

Boolean[], Byte[], Short[], Integer[], Single[], Float[], String[], Datum[], Variant[], Pointer[], Object[]

Die Beschreibung von Arrays finden Sie im Kapitel 20.12.

7.0.2 Datentypen-Funktionen

Die folgenden Funktionen können Sie nutzen, um den Daten-Typ zu ermitteln. Als Argument wird den Datentypen-Funktionen ein String oder bei SizeOf() ein Datentyp oder bei TypeOf() ein Ausdruck übergeben. Der Funktionswert ist entweder True oder False oder ein Speicherwert oder ein Datentyp.

FunktionBeschreibung
IsBoolean(string) Ist True, wenn string=“True” oder string=“False” ist (Vergleich ist nicht case-sensitiv)
IsDate(string) Ist True, wenn string sicher als Datum interpretiert werden kann
IsFloat(string) Ist True, wenn string sicher als Float-Zahl interpretiert werden kann
IsInteger(string) Ist True, wenn string sicher als ganze Zahl interpretiert werden kann
IsLong(string) Ist True, wenn string sicher als Long-Integer-Zahl interpretiert werden kann
IsNumber(string) Ist True, wenn string sicher als Zahl interpretiert werden kann
IsNull(string) Ist True, wenn string sicher NULL ist

Tabelle 7.0.2.2: Übersicht zu den Datentyp-Funktionen 1

FunktionBeschreibung
SizeOf(datentyp) Gibt den Speicher an, der von einem bestimmten Datentyp verwendet wird.
TypeOf(ausdruck) Gibt den Datentyp eines Ausdrucks zurück.

Tabelle 7.0.2.3: Übersicht zu den Datentyp-Funktionen 2

Der Funktionswert von SizeOf(datentyp) oder TypeOf(ausdruck) ist einer der folgenden Konstanten:

Expression-Type Rückgabe-Wert (numerisch) Rückgabe-Wert (symbolisch)
Boolean 1 gb.Boolean
Byte 2 gb.Byte
Short 3 gb.Short
Integer 4 gb.Integer
Long 5 gb.Long
Single 6 gb.Single
Float 7 gb.Float
Date 8 gb.Date
String 9 gb.String
Pointer 11 gb.Pointer
Variant 12 gb.Variant
Function 13 gb.Function
Class 14 gb.Class
Object 16 gb.Object

Tabelle 7.0.2.3: Übersicht zu den Funktionswerten von SizeOf(datentyp) und TypeOf(ausdruck)

Hinweise:

  • Beachten Sie, dass TypeOf(NULL) den numerischen Wert 15 oder gb.Null zurück gibt.
  • Die Funktion IsNull(string) liefert für folgende Argumente den Funktionswert True:
    • string ist eine NULL-Konstante
    • string ist eine NULL-Objektreferenz
    • Die Länge von string ist 0
    • string repräsentiert ein Null-Datum
    • string repräsentiert eine nicht initialisierte Variable vom Typ Variant * Listenpunkt

7.0.3 Konvertierung von Datentypen

Gambas stellt Funktionen bereit, um Datentypen zu konvertieren. Informationen zu diesen Funktionen erhalten Sie im Kapitel 9.7 Konvertierungsfunktionen.

Gambas nimmt aber auch automatisch Konvertierungen von Datentypen vor. Zum Beispiel ist “2” ein String, kann aber auch als ganze Zahl 2 (Integer) aufgefasst und so nach einer Konvertierung “on the fly” verwendet werden, wie die folgenden Beispiele zeigen:

Public Sub OnTheFly_Click()
  Print "2" + 2 ' Integer-Zahl
  Print "Kann '2' als Integer-Zahl interpretiert werden? ---> ";; IsInteger("2")
  Print "Type_1 = ";; TypeOf("2" + 2) ' 7 => Float
' String + Integer 
' String -> Integer => 2 + 2 = 4  
  Print "2" & 2 ' Zeichenkette
  Print "Type_2 = ";; TypeOf("2" & 2) ' 9 => String
' String & Integer 
' Integer -> String => "2" & "2" = "22" 
  Print 2.1 * ("2" & 2) ' Gleitkomma-Zahl
  Print "Type_3 =  ";; TypeOf(2.1 * ("2" & 2)) ' 7 => Float
' Float * (String & Integer) 
' Integer -> String => "2" & "2" = "22" 
' Float * String => 2.1 * "22" 
' String -> Float => 2.1 * 22.0 = 46.2 
End ' OnTheFly() 

Das sind die Ausgaben in der Konsole:

4
Kann '2' als Integer-Zahl interpretiert werden? --->  True
Type_1 =  7
22
Type_2 =  9
46,2
Type_3 =   7

7.0.4 Download

This website uses cookies. By using the website, you agree with storing the cookies on your computer. More information in the privacy policy.
k7/start.txt · Last modified: 02.07.2018 (external edit)

Page Tools