Studium, Ausbildung und Beruf

web uni-protokolle.de
 powered by
NachrichtenLexikonProtokolleBücherForenSamstag, 26. Mai 2012 

Object Pascal


Dieser Artikel von Wikipedia ist u.U. veraltet. Die neue Version gibt es hier.
Object Pascal auch bekannt als Delphi ist eine von der Firma Borland entwickelte objektorientierte Erweiterung der Programmiersprache Pascal .

Zuerst eingeführt wurde sie mit Delphi inzwischen ist sie mit Kylix auch für Linux verfügbar. Auch von Drittanbietern wurde diese eine Zeit lang angeboten so von Speedsoft deutschen Firma unter dem Namen Speed Pascal Sibyl als auch von der britischen Firma UK Ltd. unter dem Namen Virtual Pascal. wurden ursprünglich für OS/2 entwickelt und später nach Windows und portiert. Die Entwicklung von Sibyl wurde anscheinend Virtual Pascal ist inzwischen als Freeware erhältlich. Daneben es noch das ebenfalls kostenlose FreePascal welches unter der GPL steht.

Object Pascal ist nicht die erste Erweiterung von Pascal. Borland hatte bereits bei 5.5 von Turbo Pascal ein Objektmodell eingeführt welches interessanterweise von Delphi Compilern bis Version 7.0 immer noch wird wenn man auch nach einer Dokumentation sucht. (Delphi 8 fuer .NET unterstuetzt sie mehr.)

Object Pascal ist die Grundlage der Klassenbibliothek Visual Class Library (VCL) auf der basiert sowie der neueren Class Library for Platform (CLX) auf der Kylix basiert. Beide Bibliotheken sind stark miteinander und es ist häufig einfach eine für VCL geschriebene Komponente nach CLX zu portieren.

Ein Unterschied zu z.B. C++ ist dass es nicht möglich ist auf dem Stack anzulegen d.h. alle Objekte werden auf Heap angelegt. Viele der Elemente und Ideen ObjectPascal sind in die neue Programmiersprache C# und das Microsoft .NET Framework übernommen

Inhaltsverzeichnis

Beispiel einer Klassen-Deklaration

 type TMyObject = class private FSomePrivateField: protected procedure SomeProtectedMethod(Param1: integer; const Param2: string; OutParam: string); virtual; procedure SetSomeOtherProperty(Value: integer); function integer; public constructor Create; destructor Destroy; override; SomePublicMethod; published property SomePublishedProperty read FSomePrivateField; // property SomeOtherProperty: integer read GetSomeOtherProperty write SetSomeOtherProperty;  

Properties dienen zum Information hiding indem direkter Zugriff auf die Variable verhindert wird die Methode entscheiden kann welchen Wert sie Lesen herausgibt und beim Ändern eines Wertes was einen ADT (abstract data type) auszeichnet. Wird beispielsweise bei property SomePublishedProperty keine write-Methode angegeben so handelt es um eine read-only Variable.

Die dazugehörige Implemementation

 constructor TMyObject.Create; // legt eine Objectinstanz begin inherited; // Konstruktor der Oberklasse rufen 

 fSomePrivateField := 42; // privates Feld 42 initialisieren end;  

 destructor TMyObject.Destroy; begin inherited; // Destruktor Oberklasse aufrufen end;  

 procedure TMyObject.SomeProtectedMethod(Param1: integer; const Param2: string; OutParam: string); var i: integer; // Deklaration Variablen  

 begin OutParam :=  ;  // Ausgabeparameter initialisieren  

 for i:=1 to Param1 do OutParam OutParam + Param2; // Ausgabeparameter mit dem Param1-mal konkatenieren  

 end;  

 procedure TMyObject.SomePublicMethod; begin Inc(fSomePrivateField); // privates hochzählen end;  

 procedure SetSomeOtherProperty(Value: integer); begin fSomePrivateField := * 5; end;  

 function GetSomeOtherProperty: integer; begin Result := div 5; end;  

Syntax

Elementare Datentypen

Name Größe Wertebereich Beschreibung
ByteBool / Boolean 1 Byte true oder false Boolscher Wert
WordBool 2 Byte true oder false Boolscher Wert
LongBool 4 Byte true oder false Boolscher Wert
Byte 1 Byte 0 bis 255 vorzeichenlose 8 bit- Ganzzahl
Word 2 Byte 0 bis 65536 vorzeichenlose 16 bit-Ganzzahl
Cardinal 4 Byte 0 bis 4.294.967.295 vorzeichenlose 32 bit-Ganzzahl
ShortInt 1 Byte -128 bis 127 vorzeichenbehaftete 8 bit-Ganzzahl
SmallInt 2 Byte -32.768 bis 32.767 vorzeichenbehaftete 16 bit-Ganzzahl
LongInt 4 Byte -2.147.483.648 bis 2.147.483.647 vorzeichenbehaftete 32 bit-Ganzzahl
Int64 8 Byte -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 vorzeichenbehaftete 64 bit-Ganzzahl
Real48 6 Byte 2 9x10 -39 bis 1 7x10 38 48 bit- Gleitkommazahl
Single 4 Byte 1 5x10 -45 bis 3 4x10 38 32 bit-Gleitkommazahl ( IEEE 754 - float )
Double 8 Byte 5 0x10 -324 bis 1 7x10 308 64 bit-Gleitkommazahl (IEEE 754- double )
Extended 10 Byte 3 6x10 -4951 bis 1 1x10 4932 80 bit-Gleitkommazahl
Comp 8 Byte -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807 vorzeichenbehaftete 64 bit-Ganzzahl mit der über die FPU gerechnet wird
Currency 8  Byte -922.337.203.685.477 5808 bis 922.337.203.685.477 5807 vorzeichenbehaftete 64 bit-Festkommazahl
Char 1 Byte #0 bis #255 8 bit-Zeichen z.B. ASCII-/ ANSI -Zeichen
WideChar 2 Byte #0 bis #65535 16 bit-Zeichen z.B. Unicode -Zeichen
ShortString bis 256 Byte Aneinanderrehung von bis zu 255 Chars
AnsiString bis 2 GByte Aneinanderreihung von bis zu 2 31 Chars
WideString bis 2 GByte Aneinanderreihung von bis zu 2 30 WideChars

Der Datentyp Real entspricht in Delphi standardmässig dem Double . Zur Rückwärtskompatibilität kann man ihm mit Compilerschalter {$REALCOMPATIBILITY ON} dem Real48 gleichsetzen.

Der Datentyp Integer hängt von der jeweiligen Pascal-Implementation ab. 16bit-Implementationen (z.B. Turbo Pascal ) entsprach er einem SmallInt in 32bit-Implementationen einem LongInt und in 64bit-Implementationen wird er einem Int64 entsprechen.

Der Datentyp String entspricht standardmäßig einem AnsiString . Mit {$LONGSTRINGS OFF} entspricht er zur Rückwärtskompatibilität einem ShortString .

Reservierte Symbole

and array as asm begin case class constructor destructor dispinterface div do downto else except exports file finalization finally for function if implementation in inherited initialization inline interface label library mod nil not object of out packed procedure program property raise record resourcestring set shl shr string then threadvar try type unit until uses var while xor

In bestimmten Kontexten (sogenannte Direktiven ): absolute abstract assembler at automated cdecl default dispip dynamic export far implements index library nodefault on overload override pascal platform private public published read register reintroduce safecall stdcall virtual write

Weblinks




Bücher zum Thema Object Pascal

Dieser Artikel von Wikipedia unterliegt der GNU FDL.

ImpressumLesezeichen setzenSeite versendenSeite drucken

HTML-Code zum Verweis auf diese Seite:
<a href="http://www.uni-protokolle.de/Lexikon/Delphi_(Programmiersprache).html">Object Pascal </a>