Syntax: TYPE UDTName FIELD = { 1 | 2 | 4 }
Typ: Schlüsselwort
Kategorie: Speicher
FIELD wird zusammen mit TYPE und UNION verwendet und legt dort das Padding-Verhalten fest. Dieses bestimmt, dass UDTs auf eine bestimmte Länge "ausgedehnt" werden sollen. Der Zweck liegt darin, dass auf solche ausgedehnten Felder z. T. schneller zugegriffen werden kann. Das Feld wird dabei so ausgedehnt, dass die Anzahl der Bytes, die das Feld im Speicher benötigt, ein ganzzahliges Vielfaches von 1, 2 oder 4 ist.
FIELD hat nur eine Auswirkung, wenn im UDT Records verwendet werden, die mindestens die angegebene Größe besitzen. Ansonsten wird auf ein Vielfaches des größten Record-Datentyps ausgeweitet. Wird FIELD ausgelassen, verwendet FreeBASIC unter Linux und DOS den Wert 4 und unter Windows den Wert 8.
Beispiel:
Type NormalPacked
i As Integer
b As Byte
End Type
Type BytePacked Field = 1
i As Integer
b As Byte
End Type
Type WordPacked Field = 2
i As Integer
b As Byte
End Type
Type DWordPacked Field = 4
i As Integer
b As Byte
End Type
' Im Folgenden hat FIELD keinen Effekt
Type ShortType Field = 4
s1 As Short
s2 As Short
b As Byte
End Type
Print "Groesse der einzelnen Datentypen"
Print "Integer : " & SizeOf( Integer)
Print "Byte : " & SizeOf( Byte)
Print
Print "Groesse der verschiedenen UDTs"
Print "Ohne Field : " & SizeOf(NormalPacked)
Print "Field = 1 : " & SizeOf( BytePacked)
Print "Field = 2 : " & SizeOf( WordPacked)
Print "Field = 4 : " & SizeOf( DWordPacked)
Print "Ohne Integer: " & SizeOf( ShortType)
Sleep
Ausgabe:
Groesse der einzelnen Datentypen
Integer : 4
Byte : 1
Groesse der verschiedenen UDTs
Ohne Field : 8
Field = 1 : 5
Field = 2 : 6
Field = 4 : 8
Ohne Integer: 6
Unterschiede zu QB:
- QB unterstützt kein Padding. Die Feldbreite ist immer 1. Beachten Sie dies, wenn Sie Dateien, die von QB generiert wurden in FreeBASIC einlesen.
- Unter QB wird FIELD verwendet, um die Puffergröße bei RANDOM-Files festzulegen. Diese Verwendung ist unter FreeBASIC nicht mehr möglich.
Plattformbedingte Unterschiede:
- Das Standardpadding unter Linux und DOS ist 4 Byte.
- Das Standardpadding unter Windows ist 8 Byte.
Unterschiede unter den FB-Dialektformen:
Das Standardpadding in -lang fb und -lang fblite hängt von der Plattform ab, während in -lang qb kein Padding durchgeführt wird.
Siehe auch:
TYPE (UDT), Datentypen und Deklarationen