FPKPascal Referenzhandbuch

Florian Klämpfl 8. Januar 1995

Die momentane Version des Paketes ist eine Entwicklungsversion, d.h. der Compiler und die RTL sind noch nicht vollständig implementiert.

Alle in diesem Dokument genannten Warenzeichen werden anerkannt.

Turbo Pascal ist ein Warenzeichen von Borland International Inc. OS/2 ist ein Warenzeichen der International Bussiness Machines Corp. Windows NT ist ein Warenzeichen der Microsoft Corp. 386MAX ist ein Warenzeichen der Qualitas Inc.

Für Schäden die durch Programme des Pakets FPKPascal direkt oder indirekt entstanden sind wird keine Haftung übernommen.

Copyright (c) 1994,95 Florian Klämpfl

Inhaltsverzeichnis

1 Referenz der Laufzeitbibliothek 3 1.1 Prozeduren und Funktionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 1.2 Typen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

2 Der Compiler 28

3 Die OS/2 Units 30 3.1 Erweiterte Tastaturcodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

Kapitel 1

Referenz der Laufzeitbibliothek

Die folgenden Abschnitte enthalten eine Beschreibung der Laufzeitbibliothek des Compilers. Da diese im Quelltext vorliegt, wurde in den meisten Fällen auf eine weitergehende Erläuterung verzichtet.

Folgende Bezeichner die unter Turbo Pascal verfügbar sind, werden nicht unterstützt:

CSeg, DSeg, ErrorAddr, GetIntVec, Intr, Keep, MsDos, Ofs, PrefixSeg, Ptr, SaveIntxxx,
Seg, Seg0040, SegA000, SegB000, SegB800, SelectorInc, SetIntVec, SPtr, SSeg,
StackLimit

Außerdem alle Bezeichner, die mit Overlays zusammenhängen.

1.1 Prozeduren und Funktionen

Abs-Funktion Unit System

Deklaration Function Abs(x) : { Typ wie x }

Funktion gibt den Absolutwert des übergebenen Arguments zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT ArcTan-Funktion Unit System

Deklaration Function ArcTan(d : Double) : Double;

Funktion berechnet den Arcus Tangens des Arguments Erläuterung Der Arcus Tangens ist als Umkehrfunktion des Tangens definiert Die Funktion gibt den

Winkel in Radiant zurück (1Rad = \frac{360}{2π}Grad). Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Cos,Pi,Sin Assign-Prozedur Unit System Deklaration

     Procedure Assign(var f : X;const name : String); { X vom Typ text oder file }

Funktion Ordnet der Dateivariablen f die Datei mit dem Namen name zu Erläuterung Die Prozedur setzt nur die Felder der Dateivariablen, das Öffnen der Datei mit einem

Betriebssystemaufruf geschieht erst mit rewrite, reset oder append Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Append,Close,Reset,Rewrite AssignCrt-Prozedur Unit Crt

Deklaration Procedure AssignCrt(var f : Text);

Funktion leitet die Ausgabe der Datei f über die Unit CRT auf den Bildschirm um Erläuterung der Initialisationsteil der Unit CRT leitet STDOUT damit auf den Bildschirm um Kompatibilität Dos, Turbo Pascal Assigned-Funktion Unit System Deklaration

     Function Assigned(p : X) : Boolean; { x Pointer- oder Prozedurvariablentyp }

Funktion liefert true, falls p<>nil Erläuterung Die Funktion erzeugt genauso effizienten Code wie der entsprechende Vergleichsoperator.

Ihr Einsatz ist dann besonders sinnvoll, wenn sie in einer Debugversion des Programms durch eine eigene Funktion überschrieben wird, die auch noch überprüft, ob ein Pointer auch in den Heap zeigt und falls dies nicht der Fall ist, eine Fehlermeldung ausgibt.

Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT CheckBreak-Variable Unit Crt

Deklaration CheckBreak : Boolean;

Funktion keine Funktion, aus Kompatibilitätsgründen deklariert Kompatibilität Dos, Turbo Pascal CheckEof-Variable Unit Crt

Deklaration CheckEof : Boolean;

Funktion keine Funktion, aus Kompatibilitätsgründen deklariert Kompatibilität Dos, Turbo Pascal

CheckSnow-Variable Unit Crt

Deklaration CheckSnow : Boolean;

Funktion keine Funktion, aus Kompatibilitätsgründen deklariert Kompatibilität Dos, Turbo Pascal

ClearDevice-Prozedur Unit Graph

Deklaration Procedure ClearDevice;

Funktion löscht den Bildschirm Erläuterung der Bilschirm wird mit der Farbe gelöscht, die mit SetBkColor gesetzt wurde Kompatibilität Dos, Turbo Pascal Querverweis SetBkColor

CloseGraph-Prozedur Unit Graph

Deklaration Procedure CloseGraph;

Funktion schließt das Graphikpaket Erläuterung das Graphikpaket wird geschlossen (Speicher freigegeben...), außerdem wird der Gra-

phikmodus gesetzt, der vor dem Aufruf von InitGraph aktiv war Kompatibilität Dos, Turbo Pascal Querverweis InitGraph,RestoreCrtMode

ClrScr-Prozedur Unit Crt

Deklaration Procedure ClrScr;

Funktion löscht das momentan gesetzte Fenster Erläuterung die verwendete Farbe wird durch TextBackground festgelegt Kompatibilität Dos, Turbo Pascal Querverweis TextBackground ClrEol-Prozedur Unit Crt

Deklaration Procedure ClrEol;

Funktion löscht die Zeile vom Cursor bis zum Zeilenende Erläuterung das Zeichen unter dem Cursor wird auch gelöscht Kompatibilität Dos, Turbo Pascal Querverweis DelLine,InsLine Copy-Funktion Unit System

Deklaration Function Copy(const s : String;index : Integer;count : Byte) : String;

Funktion kopiert einen Teilstring Erläuterung die Funktion gibt count Zeichen von s ab der Position index zurück. Kompatibilität Linux, OS/2, Turbo Pascal, Windows NT Beispiel Delete

     Insert
     StrLCopy

Cos-Funktion Unit System

Deklaration Function Cos(d : Double) : Double;

Funktion berechnet den Cosinus des Arguments Erläuterung der Winkel muß in Radiant angegeben werden (360 Grad sind in Radiant gleich 2π) Kompatibilität Linux, OS/2, Turbo Pascal, Windows NT Querverweis ArcTan,Pi,Sin CursorBig-Prozedur Unit Crt

Deklaration Procedure CursorBig;

Funktion schaltet den Cursor in eine Blockcursor um Kompatibilität Dos Querverweis CursorOff,CursorOn CursorOff-Prozedur Unit Crt

Deklaration Procedure CursorOff;

Funktion schaltet den Cursor aus Kompatibilität Dos Querverweis CursorBig,CursorOn

CursorOn-Prozedur Unit Crt

Deklaration Procedure CursorOn;

Funktion schaltet den Cursor an Kompatibilität Dos Querverweis CursorBig,CursorOff

Delay-Prozedur Unit Crt

Deklaration Procedure Delay(ms : Word);

Funktion hält die Programmausführung ms Millisekunden an Kompatibilität Dos, Turbo Pascal

Delete-Prozedur Unit System

Deklaration Procedure Delete(Var s : String;index : Integer;count : Integer);

Funktion löscht Zeichen Erläuterung Delete löscht count Zeichen von s ab der Position index Kompatibilität Linux, OS/2, Turbo Pascal, Windows NT Beispiel Copy

     Insert

DelLine-Prozedur Unit Crt

Deklaration Procedure DelLine;

Funktion löscht die Zeile unter dem Cursor Erläuterung die weiter unten liegenden Zeilen werden nach oben gescrollt Kompatibilität Dos, Turbo Pascal Querverweis ClrEol,DelLine mit Parameter,InsLine DelLine-Prozedur Unit Crt

Deklaration Procedure DelLine(line : byte);

Funktion löscht die angegebene Zeile line Erläuterung die weiter unten liegenden Zeilen werden nach oben gescrollt Kompatibilität Dos, Turbo Pascal Querverweis ClrEol,DelLine ohne Parameter,InsLine DirectVideo-Variable Unit Crt

Deklaration DirectVideo : Boolean;

Funktion verbietet der Unit CRT direkte Zugriffe auf die Hardware Erläuterung Beim Programmstart ist die Variable auf false gesetzt. Ist die Variable auf true ge-

setzt, so wird die Cursorposition nicht über direkte Registerzugriffe gesetzt, sondern durch einen Interruptaufruf. Beim Einsatz eines Dos-Extenders ist der Verwaltungsoverhead für Interrupts jedoch sehr groß und so sollte die Variable immer auf false gesetzt bleiben, es sei denn, es gibt unter exotischen Bedingungen Probleme mit den direkten Registerzugriffen

Kompatibilität Dos, Turbo Pascal EnvCount-Funktion Unit Dos

Deklaration Function EnvCount : Integer

Funktion gibt die Anzahl der gesetzten Umgebungsvariablen an Kompatibilität Dos, Turbo Pascal Querverweis EnvStr,GetEnv EnvStr-Funktion Unit Dos

Deklaration Function EnvStr(Index : Integer) : String;

Funktion gibt die Umgebungsvariable mit der Nummer Index zurück Erläuterung der Rückgabestring hat die Form VARNAME=Irgendein String Kompatibilität Dos, Turbo Pascal Querverweis EnvCount,GetEnv Erase-Prozedur Unit System

Deklaration Erase(var F); { wobei F vom Typ Text oder File ist }

Funktion löscht die angegebene Datei Erläuterung die Datei darf nicht geöffnet sein Kompatibilität Dos, Turbo Pascal Querverweis Rename

Beispiel { Codefragment loescht die Datei TEST.TMP }
     var
        f : File;
     begin
        Assign(f,'TEST.TMP');
        Erase(f);
     end.

Exec-Prozedur Unit Dos

Deklaration Procedure Exec(Path : PathStr;ComLine : ComStr);

Funktion startet ein externes Programm Erläuterung das Programm Path wird ausgeführt, wie wenn es von der Kommandozeile gestartet

worden wäre, dabei wird ComLine als Kommandozeilenparameter übergeben. Kompatibilität Dos, Turbo Pascal

Beispiel { zeigt das aktuelle Verzeichnis an }
     begin
        exec('COMMAND.COM','/C DIR');
     end.

Farbkonstanten 1 Unit Crt Funktion Konstanten für die verfügbaren Farben der Unit Crt Erläuterung Die Konstanten können als Argument an TextColor und TextBackground übergeben

werden, wobei für TextBackground nur die Farben 0..7 erlaubt sind. Die Konstante blink ist additiv d.h. der Aufruf TextColor(red+blink) läßt die nächsten Textausgaben in rot und blinkend erscheinen. Folgende Konstanten sind verfügbar:

black = 0;
blue = 1;
green = 2;
cyan = 3;
red = 4;
magenta = 5;
brown = 6;
lightgray = 7;
{ (folgende nur fuer TextColor) }
darkgray = 8;
lightblue = 9;
lightgreen = 10;
lightcyan = 11;
lightred = 12;
lightmagenta = 13;
yellow = 14;
white = 15;
{ Blinkflag (auch nur TextColor) }
blink = $80;

Kompatibilität Dos, Turbo Pascal

Querverweis TextColor,TextBackground

Flush-Prozedur

Unit System

Deklaration Procedure Flush(var t : Text);

Funktion erzwingt das Schreiben der Daten im Puffer der Textvariable

Kompatibilität Dos, Turbo Pascal

GetDriverName-Funktion

Unit Graph

Deklaration Function GetDriverName : string;

Funktion gibt den Namen des verwendeten Graphiktreibers zurück

Kompatibilität Dos, Turbo Pascal

GetMaxX-Funktion

Unit Graph

Deklaration Function GetMaxX : longint;

Funktion gibt die maximal mögliche x-Position des Graphikcursors zurück

Erläuterung GetMaxX+1 ist also die Bildschirmauflösung in x-Richtung

Kompatibilität Dos, Turbo Pascal

Querverweis GetMaxY,GetX,GetY GetMaxY-Funktion Unit Graph

Deklaration Function GetMaxY : longint;

Funktion gibt die maximal mögliche y-Position des Graphikcursors zurück Erläuterung GetMaxY+1 ist also die Bildschirmauflösung in y-Richtung Kompatibilität Dos, Turbo Pascal Querverweis GetMaxX,GetX,GetY GetX-Funktion Unit Graph

Deklaration Function GetX : longint;

Funktion gibt die x-Position des Graphikcursors zurück Kompatibilität Dos, Turbo Pascal Querverweis GetMaxX,GetMaxY,GetY GetY-Funktion Unit Graph

Deklaration Function GetY : longint;

Funktion gibt die x-Position des Graphikcursors zurück Kompatibilität Dos, Turbo Pascal Querverweis GetMaxX,GetMaxY,GetX GotoXY-Prozedur Unit Crt

Deklaration Procedure GotoXY(x,y : word);

Funktion Setzt den Cursor an die angegebene Position Erläuterung Die Koordinatenangabe erfolgt relativ zum momentan gesetzten Fenster, ungültige Ko-

ordinaten werden auf die maximal gültigen Werte umgerechnet Kompatibilität Dos, Turbo Pascal Querverweis WhereX,WhereY,Window GraphErrorMsg-Funktion Unit Graph

Deklaration Function GraphErrorMsg(ErrorCode : integer) : String;

Funktion liefert einen Fehlermeldungstext zu den Fehlerkonstanten des Graphikpakets Erläuterung wenn eine Meldung über einen Graphikfehler an den Benutzer asugegeben werden soll, so

kann der Wert von GraphResult an diese Funktion übergeben werden und es wird ein passender Fehlermeldungstext zurückgegeben

Kompatibilität Dos, Turbo Pascal Querverweis GraphResult GraphResult-Funktion Unit Graph

Deklaration Function GraphResult : integer;

Funktion liefert einen Wert<>0 zurück, wenn eine Graphikoperation fehlgeschlagen ist Erläuterung Folgenden Graphikoperationen können einen Wert<>0 zur Folge haben:

InstallUserFont SetFillStyle  SetGraphMode
SetLineStyle  SetTextJustify SetTextStyle

SetWriteMode

Außerdem setzen alle Graphoperationen, die irgendwelche Ausgaben tätigen, GraphResult, falls kein Graphikmodus gesetzt ist

Kompatibilität Dos, Turbo Pascal Querverweis GraphErrorMsg HighVideo-Prozedur Unit Crt

Deklaration Procedure HighVideo;

Funktion schaltet das Textattribut auf hell Kompatibilität Dos, Turbo Pascal Querverweis LowVideo,TextBackground,TextColor Insert-Prozedur Unit System

Deklaration Procedure Insert(Const source : String;Var s : String;index : Integer);

Funktion fügt Zeichen in einen String ein Erläuterung Insert fügt source in s ab der Position index ein Kompatibilität Linux, OS/2, Turbo Pascal, Windows NT Querverweis Copy,Delete

Beispiel { Insert }
     var
        s : string;
     begin
        s:='Pascal';
        insert('FPK',s,1);
        writeln(s);  { Ausgabe: FPKPascal }
     end.

InsLine-Prozedur Unit Crt

Deklaration Procedure InsLine;

Funktion fügt am Cursor eine Zeile ein Erläuterung die darunterliegenden Zeilen werden nach unten gescrollt Kompatibilität Dos, Turbo Pascal Querverweis ClrEol,DelLine Keypressed-Funktion Unit Crt

Deklaration Function Keypressed : Boolean;

Funktion gibt true zurück, falls ein Tastendruck im Tastaturspeicher gespeichert ist Kompatibilität Dos, Turbo Pascal Querverweis ReadKey LastMode-Variable Unit Crt

Deklaration LastMode : Word;

Funktion enthält den momentan gesetzten Videomodus Erläuterung die Variable sollte nur ausgelesen und nur über TextMode verändert werden Kompatibilität Dos, Turbo Pascal Querverweis TextMode Lowercase-Funktion Unit System

Deklaration Function Lowercase(c) : { selber Typ wie c (Char oder String) };

Funktion wandelt Zeichen in Kleinbuchstaben Erläuterung die Funktion wandelt auch Zeichen des erweiterten ASCII-Zeichensatzes in Kleinbuch-

staben um Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrLower,StrUpper,Upcase LowVideo-Prozedur Unit Crt

Deklaration Procedure LowVideo;

Funktion schaltet das Textattribut auf dunkel Kompatibilität Dos, Turbo Pascal Querverweis HighVideo,TextBackground,TextColor Lst-Variable Unit Printer Deklaration Lst : Text; Funktion Dateivariable für den Standartdrucker Erläuterung Der Initialisationsteil der Unit PRINTER verbindet die Textdateivariable Lst mit dem

Standartdrucker Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Mark-Prozedur Unit System

Deklaration Procedure Mark(Var p : Pointer);

Funktion hält den momentanen Zustand des Heaps in p fest Erläuterung Der gespeicherte Zustand kann durch Aufruf von Release wieder hergestellt werden.

Mark/Release und Dispose sollten nur mit äußerster Vorsicht gemischt werden. Verwenden Sie um alle Probleme zu vermeiden am besten immer Dispose oder arbeiten Sie sich anhand der Quellen der RTL in die Heapverwaltung ein, um Probleme zu vermeiden.

Kompatibilität Dos, Turbo Pascal Querverweis Dispose,New,Release

MouseButtons-Funktion Unit Mouse

Deklaration Function MouseButtons : Longint;

Funktion liefert den Status der Maustasten zurück Erläuterung Bit 0 gesetzt: linke Taste gedrückt

Bit 1 gesetzt: rechte Taste gedrückt

Bit 2 gesetzt: mittlere Taste gedrückt (nur MouseSystems) Kompatibilität Dos Querverweis MouseReset

MouseOff-Prozedur Unit Mouse

Deklaration Procedure MouseOff;

Funktion schaltet den Mauscursor aus Kompatibilität Dos Querverweis MouseReset

MouseOn-Prozedur Unit Mouse

Deklaration Procedure MouseOn;

Funktion schaltet den Mauscursor an Erläuterung die korrekte Anzeige des Mauscursors funktioniert nur in Standartvideomodi, ansonsten

funktioniert die Abfrage der Koordinaten den Mauscursor Kompatibilität Dos Querverweis MouseReset MouseReset-Funktion Unit Mouse

Deklaration Procedure MouseReset;

Funktion setzt den Maustreiber zurück Erläuterung vor dem Aufruf dieses Unterprogramms muß der gewünschte Videomodus gesetzt sein,

ein folgender Aufruf von MouseOn läßt den Mauscursor am Bildschirm erscheinen. Kompatibilität Dos Querverweis MouseButtons,MouseOff,MouseOn,MouseX,MouseY MouseX-Funktion Unit Mouse

Deklaration Function MouseX : longint;

Funktion liefert die X-Position des Mauszeigers zurück Erläuterung Vorsicht: im Textmodus werden Graphikkoordinaten zurückgegeben, die umgerechnet

werden müssen (z.B. TextX=GraphX div 9) Kompatibilität Dos Querverweis MouseReset,MouseY MouseY-Funktion Unit Mouse

Deklaration Function MouseY : longint;

Funktion liefert die Y-Position des Mauszeigers zurück Erläuterung Vorsicht: im Textmodus werden Graphikkoordinaten zurückgegeben, die umgerechnet

werden müssen (z.B. TextY=GraphY div 16) Kompatibilität Dos Querverweis MouseReset,MouseY NormVideo-Prozedur Unit Crt

Deklaration Procedure NormVideo;

Funktion setzt das Textattribut auf den Wert zurück wie er beim Programmstart war Erläuterung Beim Programmstart wird das Attribut des Zeichens unter dem Cursor abgespeichert Kompatibilität Dos, Turbo Pascal NoSound-Prozedur Unit Crt

Deklaration Procedure NoSound;

Funktion schaltet den PC-Laufsprecher aus Kompatibilität Dos, Turbo Pascal Querverweis Sound OutText-Prozedur Unit Graph

Deklaration Procedure OutText(const TextString : string);

Funktion gibt eine String im Graphikmodus aus Erläuterung die String wird mit der aktuell gesetzten Schrift an der aktuellen Position des Gra-

phikcursors ausgegeben, der Graphikcursor wird bewegt, falls die Ausgabe von links nach rechts linksbündig erfolgt

Kompatibilität Dos, Turbo Pascal Querverweis OutTextXY OutTextXY-Prozedur Unit Graph

Deklaration Procedure OutTextXY(x,y : integer;const TextString : string);

Funktion wie OutText, nur Ausgabe an der Position (x,y) Erläuterung der Graphikcursor wird nicht bewegt Kompatibilität Dos, Turbo Pascal Querverweis OutText \underline{Pi-Funktion} Unit System

Deklaration Function Pi : Double;

Funktion gibt den Wert der Kreiszahl π zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Pos-Funktion Unit System

Deklaration Function Pos(Const substr : String;Const s : String) : Byte;

Funktion sucht einen Teilstring Erläuterung Pos sucht substr in s und gibt die Position zurück. Sollte substr nicht s vorkommen,

so gibt Pos 0 zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrPos

ReadKey-Funktion Unit Crt

Deklaration Function ReadKey : char;

Funktion wartet auf einen Tastendruck und gibt den ASCII-Wert der Taste zurück Erläuterung Liefert Readkey ASCII 0 zurück, so wurde eine Taste gedrückt, für die kein ASCII-

Code definiert ist. Ein weiterer Aufruf von Readkey erlaubt über den zurückgelieferten Code eine Zuordnung zur entsprechenden Taste nach der Tabelle in Anhang A

Kompatibilität Dos, Turbo Pascal Querverweis Keypressed

Rectangle-Prozedur Unit Graph

Deklaration Procedure Rectangle(x1,y1,x2,y2 : integer);

Funktion zeichnet ein Rechteck Erläuterung Das Unterprogramm zeichnet im Graphikmodus ein Rechteck mit den Koordinaten

(x1,y1) für die linke obere Ecke und (x2,y2) für die linke untere Ecke mit der momentan gesetzten Linienfarbe und -stil sowie Schreibmodus.

Kompatibilität Dos, Turbo Pascal Querverweis SetColor,SetLineStyle,SetWriteMode

Release-Prozedur Unit System

Deklaration Procedure Release(p : Pointer);

Funktion stellt den in p gespeicherten Zustand des Heap wieder her Erläuterung an freelist wird außerdem nil zugewiesen Kompatibilität Dos, Turbo Pascal Querverweis Dispose,Mark,New Rename-Prozedur Unit System Deklaration

     Procedure Rename(var f;const s : String); { wobei f vom Typ Text oder File ist }

Funktion nennt eine Datei um Erläuterung die Datei f erhält einen neuen Name s, um eine Datei umzubennen, muß diese geschlossen

sein Kompatibilität Dos, Turbo Pascal Querverweis Erase RestoreCrtMode-Prozedur Unit Graph

Deklaration Procedure RestoreCrtMode;

Funktion setzt den Graphikmodus, der vor dem Aufruf von InitGraph aktiv war Kompatibilität Dos, Turbo Pascal Querverweis CloseGraph,InitGraph,SetGraphMode Sin-Funktion Unit System

Deklaration Function Sin(d : Double) : Double;

Funktion berechnet den Sinus des Arguments Erläuterung der Winkel muß in Radiant angegeben werden (360 Grad sind in Radiant gleich 2π) Querverweis ArcTan,Cos,Pi Sound-Prozedur Unit Crt

Deklaration Procedure Sound(Hz : Word);

Funktion schaltet den PC-Lautsprecher mit der Frequenz Hz ein Kompatibilität Dos, Turbo Pascal Querverweis NoSound Space-Funktion Unit System

Deklaration Function Space(b : Byte) : String;

Funktion erzeugt einen String aus Leerzeichen Erläuterung die Funktion gibt einen String zurück, der aus b Leerzeichen besteht Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT

StrCat-Funktion Unit Strings

Deklaration Function StrCat(dest,source : PChar) : PChar;

Funktion hängt source an dest an und gibt dest zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrLCat

StrComp-Funktion Unit Strings

Deklaration Function StrComp(str1,str2 : PChar) : Longint;

Funktion vergleicht str1 und str2 Erläuterung StrComp liefert einen Wert<0 wenn str1<str2; 0 wenn str1=str2 und einen Wert>0

     wenn str1>str2

Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrIComp,StrLComp,StrLIComp

StrCopy-Funktion Unit Strings

Deklaration Function StrCopy(dest,source : PChar) : PChar;

Funktion kopiert source nach dest und liefert dest zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrECopy,StrLCopy,StrMove,StrPCopy

StrDispose-Funktion Unit Strings

Deklaration Procedure StrDispose(p : PChar);

Funktion löscht einen nullterminierten String vom Heap Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrNew StrECopy-Funktion Unit Strings

Deklaration Function StrECopy(dest,source : PChar) : PChar;

Funktion kopiert source nach code dest Erläuterung der zurückgeliefert Zeiger zeigt auf das #0-Zeichen von dest Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrCopy,StrLCopy,StrMove,StrPCopy

StrEnd-Funktion Unit Strings

Deklaration Function StrEnd(p : PChar) : PChar;

Funktion liefert einen Zeiger auf das abschließende #0-Zeichen von p Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrLen

StrIComp-Funktion Unit Strings

Deklaration Function StrIComp(str1,str2 : PChar) : Longint;

Funktion wie StrComp jedoch ohne Beachtung der Groß- und Kleinschreibung Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrComp,StrLComp,StrLIComp

StrLCat-Funktion Unit Strings

Deklaration Function StrLCat(dest,source : PChar;l : Longint) : PChar;

Funktion hängt source an dest an und gibt dest zurück Erläuterung die Länge von dest überschreitet allerdings nicht l Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrCat

StrLComp-Funktion Unit Strings

Deklaration Function StrLcomp(str1,str2 : PChar;l : Longint) : Longint;

Funktion wie strcomp, es werden jedoch maximal l Zeichen verglichen Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrComp,StrIComp,StrLIComp StrLCopy-Funktion Unit Strings

Deklaration Function StrLCopy(dest,source : PChar;maxlen : Longint) : PChar;

Funktion kopiert source nach dest und liefert dest zurück Erläuterung es werden maximal maxlen Zeichen kopiert Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Copy,StrCopy,StrECopy,StrMove,StrPCopy

StrLen-Funktion Unit Strings

Deklaration Function StrLen(p : pchar) : longint;

Funktion stellt die Länge des nullterminierten Strings fest Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrEnd

StrLIComp-Funktion Unit Strings

Deklaration Function StrLIComp(str1,str2 : PChar;l : Longint) : Longint;

Funktion wie StrIComp, jedoch werden maximal l Zeichen verglichen Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrComp,StrIComp,StrLComp

StrLower-Funktion Unit Strings

Deklaration Function StrLower(p : PChar) : PChar;

Funktion wandelt p in Kleinbuchstaben um und gibt p zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrUpper,Upcase

StrMove-Funktion Unit Strings

Deklaration Function StrMove(dest,source : PChar;l : Longint) : PChar;

Funktion kopiert l Zeichen von source nach dest und gibt dest zurück Erläuterung die Strings dürfen sich überschneiden und werden trotzdem richtig kopiert Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrCopy,StrECopy,StrLCopy,StrPCopy StrNew-Funktion Unit Strings

Deklaration Function StrNew(p : PChar) : PChar;

Funktion legt eine Kopie von p auf dem Heap an und gibt einen Zeiger darauf zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrDispose StrPas-Funktion Unit Strings

Deklaration Function StrPas(p : PChar) : String;

Funktion wandelt einen nullterminierten String in einen Pascalstring um Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrPCopy StrPCopy-funtion Unit Strings

Deklaration Function StrPCopy(d : PChar;Const s : String) : PChar;

Funktion konvertiert einen Pascalstring in einen nullterminierten String Erläuterung der nullterminierte String wird ab der Adresse gespeichert auf die d zeigt, außerdem ist

der Rückgabewert der Funktion gleich d Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrPas StrPos-Funktion Unit Strings

Deklaration Function StrPos(str1,str2 : PChar) : PChar;

Funktion durchsucht str1 nach str2 Erläuterung liefert einen Zeiger auf das erste Auftreten von str2 in str1 wird str2 nicht gefunden,

so liefert StrPos nil zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Pos StrRScan-Funktion Unit Strings

Deklaration Function StrRScan(p : PChar;c : Char) : PChar;

Funktion sucht c rückwärts in p Erläuterung gibt einen Zeiger auf das letzte Auftreten von c in p zurück, wird c nicht gefunden so

wird nil zurückgegeben Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrScan StrScan-Funktion Unit Strings

Deklaration Function StrScan(p : PChar;c : Char) : PChar;

Funktion sucht c in p Erläuterung gibt einen Zeiger auf das erste Auftreten von c in p zurück, wird c nicht gefunden so

wird nil zurückgegeben Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis StrRScan StrUpper-Funktion Unit Strings

Deklaration Function StrUpper(p : PChar) : PChar;

Funktion wandelt p in Großbuchstaben um und gibt p zurück Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Lowercase,StrLower,Upcase SwapVectos-Prozedur Unit Dos

Deklaration Procedure SwapVectors;

Funktion keine Funktion, aus Kompatibilitätsgründen implementiert Kompatibilität Dos, Turbo Pascal TextAttribut-Variable Unit Crt

Deklaration TextAttr : Byte;

Funktion enthält das momentan eingestellte Textattribut Erläuterung sollte nur ausgelesen werden und nur über die entsprechenden Unterprogramme verändert

werden Kompatibilität Dos, Turbo Pascal Querverweis HighVideo,LowVideo,TextBackground,TextColor TextBackground-Prozedur Unit Crt

Deklaration Procedure TextBackground(color : Byte);

Funktion setzt die Hintergrundfarbe für die folgenden Textausgaben auf color Kompatibilität Dos, Turbo Pascal Querverweis TextColor TextColor-Prozedur Unit Crt

Deklaration Procedure TextColor(color : Byte);

Funktion setzt die Vordergrundfarbe für die folgenden Textausgaben auf color Kompatibilität Dos, Turbo Pascal Querverweis TextBackground TextMode-Prozedur Unit Crt

Deklaration Procedure TextMode(mode : integer);

Funktion schaltet in eine anderen Textmodus Kompatibilität Dos, Turbo Pascal Querverweis NormVideo Upcase-Funktion Unit System

Deklaration Function Upcase(c) : { selber Typ wie c (Char oder String) };

Funktion wandelt Zeichen in Großbuchstaben Erläuterung die Funktion wandelt auch Zeichen des erweiterten ASCII-Zeichensatzes in Großbuchsta-

ben um Kompatibilität Dos, Linux, OS/2, Turbo Pascal, Windows NT Querverweis Lowercase,StrLower,StrUpper WhereX-Funktion Unit Unit Crt

Deklaration Function WhereX : Word;

Funktion gibt die x-Position des Cursor zurück Erläuterung die Koordinate ist relativ zum aktuell gesetzten Textfenster Kompatibilität Dos, Turbo Pascal Querverweis GotoXY,WhereY,Window WhereY-Funktion Unit Crt

Deklaration Function WhereY : Word;

Funktion gibt die y-Position des Cursor zurück Erläuterung die Koordinate ist relativ zum aktuell gesetzten Textfenster Kompatibilität Dos, Turbo Pascal Querverweis GotoXY,WhereX,Window Window-Prozedur Unit Crt

Deklaration Procedure Window(x1,y1,x2,y2 : Word);

Funktion setzt die Position des Fensters der Unit Crt neu Erläuterung Koordinatenangaben erfolgen relativ zur linken oberen Ecke des Textfensters Kompatibilität Dos, Turbo Pascal Querverweis GotoXY,WhereX,WhereY WindMax-Variable Unit Crt

Deklaration WindMax : Word;

Funktion rechte obere Ecke des momentan gesetzten Textfensters Erläuterung das Lowbyte enthält die absolute X-Koordinate das Highbyte die absolute Y-Koordinate

(bezogen auf den Bildschirm) die Werte sollten nur ausgelesen, das Fenster aber über Window gesetzt werden, dabei ist zu beachten, daß die linke obere Bildschirmecke die Koordinaten (0,0) besitzt, beim Aufruf von Window für die linke obere Bildschirmecke aber der Punkt (1,1) übergeben werden muß.

Kompatibilität Dos, Turbo Pascal Querverweis WindMin WindMin-Variable Unit Crt

Deklaration WindMin : Word;

Funktion linke untere Ecke des momentan gesetzten Textfensters Erläuterung siehe WindMax Kompatibilität Dos, Turbo Pascal Querverweis WindMax

1.2 Typen

BYTE type byte = 0..255;

Ordinaler Grundtyp

INTEGER type integer = -32768..32767;

Ordinaler Grundtyp

LONGINT type longint = -2147483648..2147483647;

Ordinaler Grundtyp

SHORTINT type shortint = -128..127;

Ordinaler Grundtyp

INTEGER type integer = -32768..32767;

Ordinaler Grundtyp

WORD type word = 0..65535;

Ordinaler Grundtyp

Der Compiler

Der Compiler ist als ausführbare Datei unter dem Namen PP(.EXE) zu finden. Er ist nur als Kommandozeilenversion vorhanden. Der Aufruf PP TEST übersetzt die Datei TEST.PP in Assembler. Der Compiler läßt sich durch Angabe verschiedener Kommandozeilenparameter steuern. Diese Parameter werden durch einen Bindestrich eingeleitet, worauf eine Buchstabe folgt. Ist dies ein Großbuchstabe, so muß noch ein weiterer Buchstabe folgen, der genaue Angaben über die gewünschte Option macht.

Alphabetische Auflistung der Parameter:

-a+ der Compiler fügt Zeilennummern in die Assemblerdatei ein

-b+ der Compiler nutzt EMS-Speicher, dieser muß allerdings auch vorhanden sein. Folgende Fehlercodes können ausgegeben werden, wenn ein Fehler bei der Arbeit mit EMS-Speicher auftritt:

-B Browseroptionen wird momentan nicht unterstützt

-C Codegeneratoroptionen Über die Option -C wird der Codegenerator gesteuert

-Chxxxx setzt die Größe des Heapspeichers auf xxxx Bytes Der minimale Wert beträgt 1024, der maximale 67107840; die Standarteinstellung ist 4000000 Bytes. Unter DOS wird der Heap im Datensegment angelegt, unter OS/2 wird der entsprechende Speicher vom Laufzeitsystem von OS/2 angefordert

-Co Generierung eines Laufzeitfehlers, wenn nach einer Integeroperation das Overflow-Flag des

Prozessors gesetzt ist. -Cr Generierung eines Laufzeitfehlers, wenn

1. bei einem Arrayzugriff ein ungültiger Feldindex angegeben wird

2. eine virtuelle Methode einer nicht initialisierten Klasseninstanz aufgerufen wird

3. bei einer Zuweisung oder Übergabe eines ordinalen Typ an ein Unterprogramm dessen

Bereichsgrenzen überschritten werden

-Csxxxx setzt die Größe des Heapspeichers auf xxxx Bytes Der minimale Wert beträgt 1024, der maximale 67107840; die Standarteinstellung ist 8096 Bytes, die Einstellung ist nur unter OS/2 verfügbar; der Wert wird wenn eine DEF-Datei erzeugt werden soll, in diese eingefügt.

-2 es ist kein EMS-Speicher vorhanden
-4 der EMS-Speicher ist voll

-dxxx definiert das Symbol xxx für den Präprozessor

-l beim Start des Compilers wird dessen Logo ausgegeben

-i Ausagbe einer Information über den Compiler selber

-m Es wird kein kompletter Übersetzungslauf gestartet, der Compiler erzeugt nur ein Makefile mit dem Namen Eingabedatei.MAK. Beim Aufruf dieses Makefiles müssen folgende implizite Regeln gesetzt sein: .S.O Aufruf des Assemblers, .PP.S Aufruf des Compilers. Außerdem müssen folgende Makros definiert sein: LINKER Aufruf des Linkers und AOUT auf den Namen der Zieldatei (falls keine Unit übersetzt wird).

-O Optimiereroptionen steuert den Optimierer, diese Klasse von Optionen erhöht die Compile-Zeit und den Speicherbedarf des Compilers, reduziert jedoch die Codegröße und die Ausführungszeit des Compilats. Die Optimierungen sind jedoch meist Gucklochoptimierungen.

-Oa weist den Compiler an, einfache Optimierungen durchzuführen, die zwar die Übersetzungszeit

geringfügig verlängern, aber nicht den Speicherbedarf des Compilers erhöhen. -Og Der Compiler versucht ein möglichst kleines Programm auch auf Kosten der Geschwindigkeit

zu erzeugen. Das betrifft: -OG Optimierung auf Geschindigkeit, Normaleinstellung, disjunkt zu -Og -Ox maximale Optimierung, der Compiler optimiert das Programm auf Kosten von Übersetzungs-

zeit und Hauptspeicherbedarf beim Übersetzen (schließt -Oa ein). -Oz aggressive Optimierungen, der Compiler führt Optimierungen durch, die zu einem fehlerhaf-

ten Programm führen können (schließt -Ox ein).

-S Syntaxoptionen Damit kann die Strenge des Syntaxchecks eingestellt werden. Die höheren Syntaxlevel schließen die niedrigeren ein

-Sa0 Der Compiler akzeptiert nur Ausdrücke wie sie auch ein ANSI-Pascal Compiler erlaubt -Sa1 Funktionsresultate muessen nicht verwendet werden -Sa2 der @-Operator liefert einen typisierten Pointer zurück -Sa4 eine Zuweisung hat auch ein Ergebnis, d.h. a:=b:=0; ist erlaubt, dies entspricht b:=0;

    a:=0;

-Sa9 der Compiler erlaubt auch seiteneffektlose Ausdrücke, z.B. a+4; , momentan sind mir jedoch

keine Gelegenheiten bekannt, bei denen dies eingesetzt werden muß. -Sn der Compiler verbietet die Verwendung von Exceptions. CATCH,TRY,THROW bleiben allerdings

Schlüsselwörter.

-T Zielbetriebssystem wählt das Zielbetriebssystem aus, d.h. der Compiler lädt jeweils verschiedene Systemunits

-TDOS Zielbetriebssystem ist der DOS-Extender von DJ Delorie -TOS2 Zielbetriebssystem ist OS/2 2.x

item [-q-] Anzeige des verfügbaren Speichers nach jeweils 100 Zeilen und Ausgabe einer Statistik am Ende des Compilerlaufes

-U Optionen für die Erzeugung von Units

-Us zeigt dem Compiler an, daß eine Systemunit übersetzt werden soll, ist dieser Schalter gesetzt, lädt der Compiler keine andere Systemunit etc

-h zeigt einen Hilfebildschirm an

Die OS/2 Units

Die Quellen für die OS/2-Units entsprechen soweit wie möglich, den Headerfiles für C. Die Interfaceunits für die Workplaceshellunterstützung werden nicht mitgeliefert, da ein SOM-Compiler etc für FPKPascal fehlen. Die Interfaceunits müssen allerdings alle einzeln in der USES aufgeführt werden, z.B. USES

BSE,BSEDOS,BSEORD,BSEMEMF,PM,PMWIN,PMGPI; . Außerdem müssen per {$MACROS.INC} alle Makros

eingebunden werden.

Anhang A

3.1 Erweiterte Tastaturcodes

CRT.READKEY liefert für die erweiterten Tasturcodes zuerst ein NUL-Zeichen (ASCII 0) zurück und als nächstes Zeichen die in Tabelle 3.1 aufgelisteten Werte. Werte, die nicht in der Tabelle aufgeführt sind, lassen sich am besten mit einem entsprechenden Testprogramm herausfinden Tabelle 3.1: Erweiterte Tastaturcodes

2.Byte Taste/Tastenkombination
3  NUL-Zeiche
15  Shift-Tab
16-25  Alt-Q W E R T Y U I O P
30-38  Alt-A S D F G H J K L
44-50  Alt-Z X C V B N M
59-68  F1 … F10
71  Pos1
72  Cursor hoch
73  Bild auf
75  Cursor links
77  Cursor rechts
79  Ende
80  Cursor runter
81  Bild ab
82  Einf
83  Entf
84-93  Shift-F1 … Shift-F10
94-103 Ctrl-F1 … Ctrl-F10
104-113 Alt-F1 … Alt-F10
114  Ctrl-Print
115  Ctrl-Cursor links
116  Ctrl-Cursor rechts
117  Ctrl-Cursor Ende
118  Ctrl-Bild ab
119  Ctrl-Pos 1
120-129 Alt-1 2 3 4 5 6 7 8 9 0
132  Ctrl-Bild auf
133  F11
134  F12
135  Shift-F11
136  Shift-F12
137  Ctrl-F11
138  Ctrl-F12
139  Alt-F11
140  Alt-F12