Überblick über Datentypen (Object Pascal)

Aus Appmethod Topics
Wechseln zu: Navigation, Suche

Nach oben zu Datentypen, Variablen und Konstanten - Index

Dieses Thema gibt einen Überblick über die Datentypen von Object Pascal.

Ein Typ ist im Wesentlichen ein Name für eine bestimmte Art von Daten. Wenn Sie eine Variable deklarieren, müssen Sie ihren Typ festlegen. Der Typ gibt an, welche Werte die Variable aufnehmen kann und welche Operationen mit ihr ausgeführt werden können. Alle Ausdrücke und Funktionen geben Daten eines bestimmten Typs zurück. Den meisten Funktionen und Prozeduren müssen Parameter eines bestimmten Typs übergeben werden.

Object Pascal ist eine streng typisierte Sprache. Sie unterscheidet eine Vielzahl unterschiedlicher Datentypen, die nicht immer durch andere Typen ersetzbar sind. Diese Einschränkung ist normalerweise von Vorteil, da sie dem Compiler eine "intelligente" Datenbehandlung und eine gründliche Überprüfung des Quelltextes erlaubt, wodurch sich die Gefahr schwer diagnostizierbarer Laufzeitfehler verringert. Wenn Sie in bestimmten Fällen mehr Flexibilität benötigen, lässt sich diese strenge Typisierung mithilfe besonderer Techniken umgehen. Dazu gehören Typumwandlung, Zeiger, Varianten, variante Teile in Records und die absolute Adressierung von Variablen.

Datentypen von Object Pascal können verschiedenen Kategorien zugeordnet werden:

  • Einige Typen sind vordefiniert (oder integriert). Der Compiler erkennt diese Typen automatisch, sodass für sie keine Deklaration erforderlich ist. Die meisten der in dieser Sprachreferenz dokumentierten Typen sind vordefiniert. Andere Typen werden über eine Deklaration erzeugt. Dazu gehören benutzerdefinierte und in den Produktbibliotheken definierte Typen.
  • Typen sind entweder fundamental oder allgemein. Der Wertebereich und das Format fundamentaler Typen ist in allen Implementierungen von Object Pascal identisch, unabhängig von der zugrunde liegenden CPU und dem Betriebssystem. Der Wertebereich und das Format eines allgemeinen Typs hingegen ist plattformspezifisch und von Implementierung zu Implementierung unterschiedlich. Die meisten vordefinierten Typen sind fundamentale Typen, einige der Integer-, Zeichen-, String- und Zeigertypen sind jedoch allgemein. Generell sollten die allgemeinen Typen bevorzugt werden, da sie eine optimale Ausführungsgeschwindigkeit und Portabilität gewährleisten. Wenn sich das Speicherformat eines allgemeinen Typs jedoch in einer neuen Implementierung ändert, können Kompatibilitätsprobleme (beispielsweise beim Streamen von Daten in eine Datei als reine Binärdaten ohne Typ- und Versionsinformationen) auftreten.
  • Typen lassen sich in einfache, String-, strukturierte, Zeiger-, prozedurale oder variante Typen einteilen. Auch Typbezeichner selbst gehören zu einem speziellen Typ, da sie als Parameter an bestimmte Funktionen (z. B. High, Low und SizeOf) übergeben werden können.
  • Typen können auch parametrisiert bzw. generisch sein. Typen können in dem Sinne generisch sein, als sie die Basis einer Struktur oder einer Prozedur bilden, die mit anderen, später festzulegenden Typen zusammenarbeiten. Nähere Informationen über generische oder parametrisierte Typen finden Sie unter Generics - Index.

Die folgende Aufstellung zeigt die Struktur der Datentypen in Object Pascal:

  • simple
    • ordinal
      • integer
      • character
      • Boolean
      • enumerated
      • subrange
    • real
  • string
  • structured
    • set
    • array
    • record
    • file
    • class
    • class reference
    • interface
  • pointer
  • procedural
  • Variant
  • type identifier

Die Standardfunktion SizeOf kann mit allen Variablen und Typbezeichnern arbeiten. Sie liefert einen Integer-Wert zurück, der angibt, wie viele Bytes zum Speichern von Daten eines bestimmten Typs erforderlich sind. Zum Beispiel:

  • Auf 32-Bit-Plattformen und 64-Bit-Windows gibt SizeOf(LongInt) 4 zurück, weil eine LongInt-Variable vier Byte im Speicher belegt.
  • Auf 64-Bit-Plattformen und iOS gibt SizeOf(LongInt) 8 zurück, weil eine LongInt-Variable acht Byte im Speicher belegt.

Typdeklarationen werden in den folgenden Themen erläutert. Allgemeine Informationen zu Typdeklarationen finden Sie unter Typdeklaration.

Siehe auch