Home
Free Pascal 2
Contents
1. 20 P Pfadangaben nneeene 50 Prozeduradresse unnn 35 Codepage Cosekante Cosinus Hyperbolicus c scssesseseeeees 15 Cotangens CPU Flags Cursor Ziffernblock Tasten 137 CUISOMY pias sani fisctiancnaaaaanes 120 Heapverfolgung Hypotenuse Datei versteckte 45 Datei nderung Uhrzeit der 54 Dateiattribute cesses Dateiattribute Konstanten sy Dateiaufrufe eneeenen Dateimodus Konstanten Dateiname zerlegen Integer Werte L nge Unit Math Interproze kommunikation Interruptvektorentabelle Inverser Cosinus 12 Inverser Cosinus Hyberbolicus Inverser Cosinus Hyperbolicus 12 Inverser Sinus 13 Inverser Sinus Hyperbolicus 13 14 Inverser Tangens Hyperbolicus 14 K Kommandozeilenasuwertung 37 Kommandozeilen Optionen 36 Semaphore Semaphoren Shared Libraries Shared Memory w Shiftstatus nene Shortstrings neeennnenn Signal bermittlung an Sinus Hyperbolicus ee 0150 Stichwortverzeichnis Sinus Cosinus gemeinsam Sizelnt Softwareinterrupt ausf hren Sondertasten Scancodes Speicher belegen Speicher gemeinsam genutzter Speicherbelegung ausgeben Speicherblock freigeben Speicherzuweisungen freig
2. Undokumentierte Getsockopt Option _IPV6_MTU 24 Siehe http linux die net man 7 ipv6 _IPV6_MULTICAST_HOPS 18 Siehe http linux die net man 7 ipv6 IPV6_PMTU DISC_DONT 0 Nie DF Frames senden IPV6_RECVERR 25 Siehe http linux die net man 7 ipv6 IPV6_RTHDR 5 Siehe http linux die net man 7 ipv6 Hop muB ein Nachbar sein Undokumentierte Getsockopt Option Undokumentierte Getsockopt Option Undokumentierte Getsockopt Option IPV6_XFRM_ POLICY 35 Undokumentierte Getsockopt Option Download nur f r den Eigenbedart die Weiterverbreitung der Daten ist nicht gestattet 070 Kapitel 4 Referenz der RTL Online Daten F r die folgende Liste von Konstanten gilt das selbe wie f r die letzte Tabelle Konstante Wert Beschreibung IP_ADD_MEMBERSHIP enS Dae P Gruppen Mitgliedschaft hinzuf gen __ IP ADD SOURCE MEMBERSHIP 39 Der Quellgruppe beitreten Undokumentiert DROP MEMBERSHIP IP Gruppen Mitgliedschaft verwerfen IP_HDRINCL 3 Header ist mit Daten enthalten IP_MSFILTER 41 Undokumentiert IP MULTICAST IF 32 set get IP Multicast i f IP MULTICAST TTL 33 set get IP Multicast TTL IP_PKTINFO 8 Undokumentiert PMTUDISC IP_ PMTUDISC_DONT 0 Nie DF Frames senden RECVERR IP TOS 1 Type of Service und Precedence IP_UNBLOCK_ SOURCE 37 Daten von Quelle entblockieren Die folgenden Konstanten sind Multicast Gruppenop
3. end procedure StartVideoLogging begin Logging true WriteLn VideoLog Start logging video operations at TimeStamp end procedure StopVideoLogging begin WriteLn VideoLog Stop logging video operations at TimeStamp Logging false end function IsVideoLogging Boolean begin IsVideoLogging Logging end var ColUpd RowUpd array 0 1024 of Integer procedure DumpScreenStatistics Force Boolean var I Count Integer begin if Force then Write VideoLog forced WriteLn VideoLog video update at TimeStamp FillChar Colupd SizeOf ColUpd 0 FillChar Rowupd SizeOf RowUpd 0 Count 0 for I 0 to VideoBufSize div SizeOf TVideoCell do begin if VideoBuf i lt gt OldVideoBuf i then begin Inc Count Inc ColUpd I mod ScreenWidth Inc RowUpd I div ScreenHeight end end Write VideoLog Count videocells differed divided over Count 0 for I 0 to ScreenWidth 1 do if ColUpd I lt gt 0 then Inc Count Write VideoLog Count columns and Count 0 for I 0 to ScreenHeight 1 do if RowUpd I lt gt 0 then Inc Count WriteLn VideoLog Count rows if DetailedVideoLogging then begin for I 0 to ScreenWidth 1 do if ColUpd I lt gt 0 then Writeln VideoLog Col i ColUpd 1 3 rows changed for I 0 to ScreenHeight 1 do if RowUpd I lt gt 0 then WriteLn VideoLog Row i RowUpd I 3
4. cccccssscossccssccssccssccssccssccssccssccssccssccssccsscssscsssens DO 4 13 1 Konstanten Typen Variablen cccsccceeeeesececeeseeneeeeeeeneeeeeseanes 36 4 13 2 Prozeduren und Funktionen uuueeeeeeesesssssnnnennesssssnnnnnnennnenesnnnnnnnn 37 4 14 Unit HeapfTrc 00s0000s0s0snsonnnennsennnennsennsennsenssennsenssenssenssenssenssen OD 4 14 1 Konstanten Typen Variablen ccccscccceeeeseceeeeeeeneeeeeesneeeeesnaaes 41 4 14 2 Prozeduren und Funktionen cuueeeeeeesesssssennnennesssssnnnnnnnennnnsessnnnnnnn 42 4 15 Unit Lineinfo 2s 000000000000sssssunnnnononnnnnnssnnnnsssssnnnnnnssnnnnsnsnnnnnnnn Fa 4 15 1 Prozeduren und Funktionen cccccccccccescssssssceceeceecceeeeeesssseeeeeeeees 43 4 16 Unit Lnfodwrf 222200000000000000000000000000nnnnnssnnnnnsssnnnnnnnssnnnnnsnnnnnnnnnn A 4 16 1 Prozeduren und Funktionen cccccccccccesseessssecececeeeeceeeessssseeeeeeeens 44 4 17 1 Konstanten Typen Variablen ccccsccceeeeeseceeeeeeeneeeeseeneeeeeseaaes 44 4 17 2 Prozeduren und Funktionen cccccccccceeessseceeeceeeeeeessseeeeeeeeeeeeenes 48 4 18 Unit Strings 0000s000ssnennnennnennnennnennnennsennsennsennsenssenssenssenssenssenssen DI 4 18 1 Prozeduren und Funktionen ccccccccccccsssessseeececcecceeesessssseeseeeeees 59 4 19 Unit Socket 200000000000000000nnsnnnnnnsnonnnnnnnnsnnnnsssnsnnnnnnssnnnsssnnnnnnnnnn OO 4 19 1 Konstanten Typen Variablen c
5. 2012 by C amp L Computer und Literaturverlag Zavelsteiner Stra e 20 71034 B blingen E Mail info cul de WWW http www CuL de Coverdesign Hawa amp N h Neu Eichenberg Satz C amp L Verlag Druck PUT i RB DROGOWIEC Printed in Poland Dieses Buch wurde auf chlorfrei gebleichtem Papier gedruckt ISBN 978 3 936546 72 9 INHALTSVERZEICHNIS Kapitel 4 Referenz der RTL Online Daten Seite 7 4 10 Die Manager Units sssesssesssessnsennsennsennsennsenssenssennsenssenssenssenssensse 4 10 1 Der Locale Manager clocale 22204402244ne nennen 8 4 10 2 Der Memory Manager CMEM ccccceeeeeeeeteeeeeeeeeeeeeteeeenteeeeeeeeees 8 4 10 3 Der Thread Manager cthreads cccccceesscceeeeenneeeeeseneeeeeeeeeaees 9 4 10 4 Der WideString Manager CWString ccceeessseeeeeeeeeeeeestneeeeeeeaees 9 4 11 Unit Math cccscsscccscsssccccccsscccccccsssccsccsssccsscessccsscessccssssssccoses 1O 4 11 1 Konstanten Typen Variablen cccsccceceeececeeeeeeeneeeeeesneeeeeseanes 10 4 11 2 Prozeduren und Funktionen ccccccccccceeeessseceeecceceeeessseeeeeeeeeeeeenes 12 4 12 UNA YNIDS 55 i cccccccssccsssccecsssuescocescccesscssss cncsdvecees sosesoecossesessseseseocsO amp 4 12 1 Konstanten Typen Variablen cccccccceeeeseceeeeseeteeeeeesteeeeesenaes 34 4 12 2 Prozeduren und Funktionen c ccccccccccesesssceeeeceeeeeesssseeeeeeeeeeeeees 35 4 13 Unit GetOpts
6. GetEnv liefert den Wert der Umgebungsvariablen EnvVar Unter Linux mu EnvVar unter Ber cksichtigung der Klein und Gro schreibung angegeben werden Wenn die Umgebungsvariable EnvVar nicht definiert ist wird ein leerer String zur ckgegeben Bei einigen Betriebssystemen wie beispielsweise Unix mu die Gro und Kleinschrei bung bei der Suche nach EnvVar beachtet werden Siehe auch EnvCount und EnvStr program Examplel4 dosex ex14 pp Beispiel f r die Funktion GetEnv uses Dos begin WriteLn Der aktuelle PATH ist GetEnv PATH end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O54 Kapitel 4 Referenz der RTL Online Daten GETFATTR procedure GetFAttr var f var attr Word GetFAttr ermittelt die Dateiattribute der Dateivariable F Diese kann eine typisierte unty pisierte oder Textdatei sein die zugewiesen sein mu aber nicht ge ffnet sein darf Die Attribute k nnen mit den folgenden Konstanten berpr ft werden ReadOnly 01 Hidden 02 SysFile 04 VolumelId 08 Directory 10 Archive 20 Linux Unix kennt die folgenden Attribute Directory ReadOnly falls der aktuelle Proze keinen Zugriff auf die Datei hat Hidden f r Dateinamen die mit einem Punkt beginnen Fehler Fehler werden in DosError gemeldet Siehe auch SetFAttr program Example8 dosex ex8 pp Beispiel f r die Funktion GetFAttr uses Dos
7. Ist der Treiber initialisiert k mmert er sich um alles was n tig ist da die Tastatur rich tig ausgewertet werden kann wozu auch das Anfordern von Speicher das Initialisieren des Terminals und so weiter geh rt Diese Prozedur mu einmal aufgerufen werden bevor andere Tastaturfunktionen benutzt werden Beim Beenden des Programms mu der Treiber mit DoneKeyboard wieder abge schaltet werden oder es wird zur Laufzeit mit dem Aufruf von SetKeyboardDriver ein anderer Treiber installiert Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0144 Kapitel 4 Referenz der RTL Online Daten Unter Unix setzt der voreingestellte Tastaturtreiber das Terminal in den Raw Modus In diesem Modus wechselt der aktuelle Zeilenumbruch zum Zeilenvorschub ohne Wagenr ck lauf Das hei t da der Cursor zwar eine Zeile nach unten wandert dabei sich aber die X Koordinate nicht ndert was dem Verhalten unter DOS Windows entspricht Um dieses Verhalten zu kompensieren setzt der Treiber das Zeilenende auf System Output was dem unter DOS Windows und OS 2 gel ufigen 13 10 entspricht Siehe auch DoneKeyboard und SetKeyboardDriver Ein Beispiel ist bei den meisten anderen Funktionen abgebildet ISFUNCTIONKEY function IsFunctionKey KeyEvent TKeyEvent Boolean IsFunctionKey ergibt True wenn die in KeyEvent angegebene Taste eine Funktionstaste war Siehe auch GetKeyEvent program examplel kbdex ex7
8. Norm berechnet die euklidische Norm des Datenarrays Dies entspricht der Formel Sqrt SumOfSquares data Die zweite Variante nimmt einen Zeiger auf N Werte entge gen Siehe auch SumOfSquares program Example33 mathex ex33 pp Beispiel f r die Funktion Norm uses Math var v array 1 10 of Float 11 210 begin for I Low v to High v do v I Random WriteLn Norm v end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O26 Kapitel 4 Referenz der RTL Online Daten PoPNSTDDEV function PopNStdDev const Data array of Extended Float function PopNStdDev const Data PExtended const N Integer Float PopNStdDev liefert die Quadratwurzel der Streuung der Werte im Array Data Mit nur einem Wert im Array liefert die Funktion 0 Die zweite Version der Funktion nimmt einen Zeiger auf ein Array mit N Werten entgegen Siehe auch PopNVariance Mean MeanAndStdDev StdDev und MomentSkewKurtosis program Example35 mathex ex35 pp Beispiel f r die Funktion PopnStdDev uses Math type TExArray array 1 100 of Float var I Integer ExArray TExArray begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 WriteLn Pop StdDev PopNStdDev ExArray 8 4 WriteLn Pop StdDev b PopNStdDev ExArray 1 100 8 4 e
9. procedure TestCap Cap Word Msg String begin Write Msg if W and Cap Cap then WriteLn Ja else WriteLn Nein end begin W GetCapabilities WriteLn Der Bildschirmtreiber unterstiitzt folgende Funktionen Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0120 Kapitel 4 Referenz der RTL Online Daten TestCap cpUnderLine Unterstrichene Zeichen TestCap cpBlink Blinkende Zeichen ys TestCap cpColor Farbige Zeichen js TestCap cpChangeFont Font nderungen D TestCap cpChangeMode Videomodus nderung TestCap cpChangeCursor ndern der Cursorform end GETCURSORTYPE function GetCursorType Word GetCursorType gibt den aktuellen Cursortyp zur ck was einer der folgenden Werte ist crUnderLine Cursor aus einzelner Linie crHalfBlock Halber Blockcursor Zu beachten ist da nicht alle Treiber alle Arten von Cursordarstellung unterst tzen Siehe auch SetCursorType und GetCapabilities program Example5 videoex ex5 pp Beispiel f r die Funktion GetCursorType uses Video Keyboard VidUtil const Cursortypes array crHidden crHalfBlock of String Versteckt Unterstrichen Block Halber Block begin InitVideo InitKeyboard TextOut 1 1 Cursortyp CursorTypes GetCursorType TextOut 1 2 Ende mit beliebiger Taste UpdateScreen False GetKeyEvent DoneKeyboard DoneVideo end GETLOCKSCREENC
10. Cardinal FFFFFFFF Undokumentiert Die folgenden Konstanten definieren die Protokolle Konstante Wert Beschreibung PPROTO_HOPOPTS O Pv6 Hop by Hop Optionen IPPROTO_IP 0 Dummy Protokoll f r TCP IPPROTO_IGMP 2 Internet Group Management Protocol IPPROTO_TCP 6 Transmission Control Protocol IPPROTO UDP 17 User Datagram Protocol IPPROTO TP 29 SO Transport Protocol Class 4 IPPROTO_ROUTING 43 IPv6 Routing Header IPPROTO_GRE 47 General Routing Encapsulation IPPROTO_AH 51 Authentifizierungs Header IPPROTO NONE IPv6 kein n chster Header IPPROTO_ MTP Multicast Transport Protocol IPPROTO COMP 108 Compression Header Protocol IPPROTO_RAW 255 Rohe IP Pakete Die folgenden Konstanten sind gr tenteils undokumentierte Optionen f r GetSockOpt und SetSockOpt Alle vom Autor irgendwo als dokumentiert gefundenen Werte sind hier dokumentiert Wer nach ihnen googelt landet unweigerlich wieder in der Dokumentati on von Free Pascal C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Konstanten Typen Variablen O69 Konstante Wert Beschreibung IPV6 ADDRFORM Siehe http linux die net man 7 ipv6 Siehe http linux die net man 7 ipv6 Undokumentierte Getsockopt Option Siehe http linux die net man 7 ipv6 Undokumentierte Getsockopt Option Undokumentierte Getsockopt Option
11. Diese Konstante wird den Routinen die die Tastature vents beschreiben als Wort And in Tastenbeschrei bungen verwendet Der String kann bei Bedarf fir die Lokalisierung der Beschreibungen ge ndert werden C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard Konstanten Typen und Variable 0139 SKeyPad Array 0 FF2F kbdHome Die Konstante beschreibt alle Tasten des Ziffern Cur of String Home Up PgUkp sorblocks Sie wird von den Routinen zur Beschrei Left Middle Right End Down bung der Tastenevents ben tigt und kann bei Bedarf PgDn Insert lokalisiert werden Delete SLeftRight array 1 2 of String Die Konstante beschreibt linke und rechte Tasten Sie LEFT RIGHT wird von den Routinen zur Beschreibung der Tastene vents ben tigt und kann bei Bedarf lokalisiert werden SScanCode String Die Konstante enth lt einen String f r den Hinweis auf Key with scancode Scancode Events Sie wird von den Routinen zur Be schreibung der Tastenevents ben tigt und kann bei Bedarf lokalisiert werden SShift Array 1 3 of String Diese Konstante enthalt die Beschreibungen der Modi SHIFT CTRL ALT fizierertasten Sie wird von den Routinen zur Beschrei bung der Tastenevents ben tigt und kann bei Bedarf a lokelisiort werden U SUnicodeChar String Die
12. Float ArcosH gibt den inversen Cosinus Hyperbolicus des Parameters x zur ck Der Parameter mu gr er als 1 sein Die Variante ArcCosH ist f r die Delphi Kompatibilit t implemen tiert und gleichwertig Fehler Ist der Parameter x au erhalb des erlaubten Bereichs wird eine Ausnahme des Typs EInvalidArgument ausgel st Siehe auch CosH SinH ArcSin ArSinH ArTanH und TanH program Example3 mathex ex3 pp Beispiel fiir die Funktion ArcosH uses Math begin WriteLn ArcosH 1 WriteLn ArcosH 2 end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math ArcSin O13 ARCSIN function ArcSin x Float Float Arcsin ergibt den inversen Sinus f r den Parameter x x mu zwischen 1 und 1 sein Fehler Ist der Parameter x au erhalb des erlaubten Bereichs wird eine Ausnahme des Typs EInvalidArgument ausgel st Siehe auch ArcCos ArcosH ArSinH und ArTanH program Examplel mathex ex2 pp Beispiel f r die Funktion ArcSin uses Math procedure WriteRadDeg X Float begin WriteLn X 8 5 rad RadToDeg x 8 5 degrees end begin WriteRadDeg ArcSin 1 WriteRadDeg ArcSin Sqrt 3 Wri teRadDeg ArcSin Sqrt 2 WriteRadDeg ArcSin 1 2 WriteRadDeg ArcSin 0 WriteRadDeg ArcSin 1 end 2 s 2 s ARCSINH function ArcSinH x Float Float ArcSinH liefert den inversen Sinus Hyperbolicus f r den Parameter x Diese Funktion ist ein Alias fir A
13. GETINTVEC procedure GetIntVec intno Byte var vector Pointer GetIntVec liefert die Adresse des Interruptvektors IntNo Dieser Aufruf macht gar nichts und ist nur aus Gr nden der Abw rtskompatibilit t vor handen moderne Betriebssysteme erlauben diesen direkten Zugriff auf die Hardware nicht Siehe auch SetIntVec GETLONGNAME function GetLongName var p String Boolean Diese Funktion ist nur in den Versionen f r Go32v2 und Win32 von Free Pascal verf g bar GetLongName ndert den Dateinamen p in einen langen Dateinamen Das Ergebnis des API Aufrufs ist der lange Dateiname des kurzen Dateinamens p Die Funktion ergibt True wenn der Aufruf erfolgreich war Die Funktion wird nur beim DOS Extender unter Windows 95 und h her ben tigt Fehler Kann der API Aufruf nicht erfolgreich ausgef hrt werden meldet die Funktion False zur ck Siehe auch GetShortName GETMSCOUNT function GetMsCount Int64 GetMSCount liefert eine Zahl von Millisekunden seit einem bestimmten Zeitpunkt Dieser Zeitpunkt ist implementationsabh ngig Wird f r Timingoperationen ben tigt die Sub traktion zweier aufeinanderfolgender Aufrufe ergibt die Zahl der Millisekunden zwischen den beiden Aufrufen Diese Funktion ist nicht sehr genau es werden stattdessen systemspezifische Aufrufe f r Timerabfragen empfohlen Siehe auch GetTime GETSHORTNAME function GetShortName var p String Boolean Diese Funktion ist nur in den Versionen f r GO
14. Math type TExArray array 1 100 of Extended var I Integer ExArray TExArray Mean StdDev Extended begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 MeanAndStdDev ExArray Mean StdDev WriteLn Mean Mean 8 4 WriteLn StdDev StdDev 8 4 MeanAndStdDev ExArray 1 100 Mean StdDev WriteLn Mean b Mean 8 4 WriteLn StdDev b StdDev 8 4 end MIN function Min a Integer b Integer Integer Overload function Min a Int64 b Int64 Int64 Overload function Min a Extended b Extended Extended Overload Min liefert den kleineren Wert von Intl und Int2 Siehe auch Max program Example29 mathex ex29 pp Beispiel f r die Funktion Min uses Math Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O24 Kapitel 4 Referenz der RTL Online Daten var A B Cardinal begin A 1 B 23 WriteLn Min a b end MININTVALUE function MinIntValue const Data array of Integer Integer Minlntvalue liefert den kleinsten Wert im Array Data Die Funktion ist aus Gr nden der Delphi Kompatibilitat implementiert es sollte besser die flexiblere Funktion MinValue siehe unten genommen werden Siehe auch MinValue MaxIntValue und MaxValue program Example30 mathex ex30 pp Beispiel f r die Funktion MinIntValue mode objfpc Sicherstellen daB Integer Werte 32 Bit groB
15. Socket Option SO_RCVLOWAT Socket Option 2 Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O74 Kapitel 4 Referenz der RTL Online Daten Konstante Wert Beschreibung SO_SNDLOWAT i SO_SECURITY_ENCRYPTION _ TRANSPORT SO_SECURITY_ENCRYPTION_ 24 NETWORK Socket Option Socket Option 2 Socket Option 2 SO_ACCEPTCONN Socket Option Die folgenden Konstanten sind Werte f r TCP Socketoptionen und nicht weiter be schrieben Konstante Wert Beschreibung TCP_NODELAY 1 TCP_MAXSEG 2 TCP_KEEPIDLE 4 2 TCP_KEEPCNT 6 TCP_LINGER2 8 TCP_ WINDOW CLAMP TCP_QUICKACK TCP_MDS5SIG Die folgenden Konstanten sind Werte f r UDP Socketoptionen und nicht weiter be schrieben Konstante nn Nert Beschreibung e UDP CORK 1 2 UDP_ENCAP_ESPINUDP 2 UDP_ENCAP 100 C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Konstanten Typen Variablen O75 Typdeklarationen Die Unit definiert eine ganze Reihe spezialisierter Datentypen in6_addr packed record case Byte of 0 u6_addr8 array 0 15 of Byte u6_addr16 array 0 7 of Word u6_addr32 array 0 3 of Cardinal s6_addr8 array 0 15 of ShortInt s6_addr array 0 15 of ShortInt s6_addr16 array 0 7 of SmallInt s6_addr32 array 0 3 of LongInt ou pwmr end in6
16. Zeiger auf TMSQid_ds PSEMbuf TSEMbuf Zeiger auf den Record TSembuf PSEMid_ds TSEMid ds Zeiger auf den Record TSEMid_ds PSEMinfo TSEMinfo Zeiger auf den Record TSEMinfo PSEMun TSEMun Zeiger auf den Record TSEMun PShmid_DS TShmid_ds Zeiger auf den Record TSHMid_ds 4 20 2 Prozeduren und Funktionen FTOK function ftok Path PChar ID cint TKey ftok gibt einen Schliissel zuriick der in einem semget shmget oder msgget Befehl auf eine neue oder bereits vorhandene IPC Ressource zugreifen kann Path ist der Name einer Datei im Dateisystem ID ist ein beliebiges Zeichen ftok bewirkt das gleiche wie sein Gegenstiick in C ein Pascalprogramm und ein C Programm greifen auf die gleichen Ressourcen zu falls sie den gleichen Pfad und die gleiche ID benutzen Fehler ftok gibt 1 zur ck falls die Datei in Path nicht vorhanden ist Siehe auch semget shmget und msgget Beispiele fiir die Funktion sind bei msgctl semctl und shmctl gezeigt MSGCTL function msget1 msgid cint cmd cint buf PMSQid_ds cint msgctl f hrt verschiedene Operationen in der Botschafts Warteschlange mit der ID msqid aus Die Operation h ngt vom cmd Parameter ab der folgende Werte annehmen kann IPC_STAT Die Funktion msgctl f llt den Record TMSQid_ds mit Informationen ber die nr B fscheie Warteschlange wenn der cmd Parameter IPC STAT entspricht ni IPC_SET Wenn cmd den Wert IPC_SET enth lt wird buf als Ze
17. colums changed end end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video Konstanten Typen und Variablen 0113 procedure LogUpdateScreen Force Boolean begin if Logging then DumpScreenStatistics Force OldVideoDriver UpdateScreen Force end procedure LogInitVideo begin OldVideoDriver InitDriver Assign VideoLog logFileName Rewrite VideoLog Active true StartVideologging end procedure LogDoneVideo begin StopVideoLogging Close VideoLog Active false OldVideoDriver DoneDriver end procedure SetVideoLogFileName FileName String begin if not Active then LogFileName FileName end initialization GetVideoDriver OldVideoDriver NewVideoDriver OldVideoDriver NewVideoDriver UpdateScreen LogUpdateScreen NewVideoDriver InitDriver LogInitVideo NewVideoDriver DoneDriver LogDoneVideo LogFileName Video log Logging false SetVideoDriver NewVideoDriver end 4 21 2 Konstanten Typen Variablen Konstanten Die folgenden Angaben stehen f r die Farben des Textbildschirms Black Schwarz DarkGray Dunkelgrau LightGreen Hellgr n Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0114 Kapitel 4 Referenz der RTL Online Daten LightRed Hellrot Blink 128 Blinkend falls der Treiber es erlaubt Die Angaben von 0 bis 15 und 128 k nnen nur f r den Tex
18. 0130 Kapitel 4 Referenz der RTL Online Daten an ist das Funktionsergebnis False und der Inhalt von MouseEvent undefiniert Zu beachten ist da das Ereignis nach dem Aufruf von PollMouseEvent nicht aus der Warteschlange entfernt ist es mu erst mit GetMouseEvent gel scht werden Siehe auch GetMouseEvent und PutMouseEvent PUTMOUSEEVENT procedure PutMouseEvent const MouseEvent TMouseEvent PutMouseEvent f gt dem Eingabepuffer das Ereignis MouseEvent hinzu Der n chste Aufruf von GetMouseEvent oder PollMouseEvent gibt diesen MouseEvent dann zur ck Es ist zu beachten da abh ngig von ihrem Aufbau die Mausereigniswarteschlange eventuell nur einen Wert zwischenspeichern kann Siehe auch GetMouseEvent und PollMouseEvent SETMOUSEDRIVER procedure SetMouseDriver const Driver TMouseDriver SetMouseDriver setzt den Maustreiber auf den Wert Driver Diese Routine mu vor dem Aufruf von InitMouse und nach dem Aufruf von DoneMouse aufgerufen werden Wird die Prozedur nach dem Initialisieren des Maustreibers aufgerufen ist sie wirkungslos Siehe auch InitMouse DoneMouse und GetMouseDriver SETMOUSEXY procedure SetMouseXY x Word y Word SetMouseXY plaziert den Mauszeiger auf dem Koordinatenpaar X Y X und Y sind nullba sierte Zeichenkoordinaten 0 0 befindet sich an der oberen linken Ecke des Bildschirms Die Position wird in Zeichenzellen und nicht in Bildpunkten gemessen Siehe auch GetMouseX und GetMouseY
19. 100 end begin S Socket AF_INET SOCK_STREAM 0 if SocketError lt gt 0 then perror Server Socket SAddr Sin_family AF_INET port 50000 in network order SAddr Sin port htons 50000 SAddr Sin_addr s_ addr 0 if not Bind S SAddr SizeOf saddr then PError Server Bind if not Listen S 1 then PError Server Listen WriteLn Waiting for Connect from Client run now sock_cli in another tty if not Accept S FromName Sin Sout then PError Server Accept fromname Reset Sin ReWrite Sout WriteLn Sout Message From Server Flush Sout while not EoF Sin do begin ReadLn Sin Buffer WriteLn Server Read buffer end end BIND function Bind Sock LongInt const Addr AddrLen LongInt Boolean function Bind Sock LongInt const addr String Boolean Bind verbindet den Socket Sock mit der Adresse Addr die die Lange Addrlen hat Die Funktion liefert True falls sie erfolgreich war ansonsten False Die Variante des Bind Befehls mit der TUnixSockAdadr ist gleichwertig zum nacheinander folgenden Aufruf von Str2UnixSockAddr und der normalen Bind Function Die Funktion meldet True wenn sie erfolgreich ausgefiihrt wurde beim Auftreten eines Fehlers False Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen SYS_EBADF Der Socketdeskriptor ist ungiltig SYS_EACCESS Die Adresse ist gesch tzt das Progamm besitzt nicht die Berechtig
20. Anzahl der Signale im System Dieser Aufruf f llt _ dann das Array mit den Werten der Signale e GETNCNT Das Feld val des varianten Records ist bei diesem Befehl g ltig und enth lt nach dem Aufruf die Anzahl der Prozesse die auf Ressourcen warten GEIPID semet gibt die Proze ID des Prozesses zur ck der den letzten semop Befehl ausf hrte GETZCNT semctl gibt die Anzahl der Prozesse zur ck die darauf warten da Signale den 2 00 Wert Nullerreichen ____ SETALL In diesem Fall sollte das Feld arr von arg auf einen Speicherbereich verweisen in dem die neuen Werte der Signale gespeichert sind Diese Werte berschrei ben bei Angabe von SETALL dann die bisherigen Einstellungen Die Gr e des Speicherbereichs kann zu SizeOf Word Anzahl der Signale im System er ei mineli werden nn SETVAL Der Wert des Signals Nummer semnum wird auf den Wert des Feldes val des Parameters arg gesetzt Fehler Bei einem Fehler liefert die Funktion 1 und IPCerror wird entsprechend gesetzt Siehe auch semget und semop program semtool ipcex semtool pp program to demonstrate the use of semaphores uses ipc baseunix const MaxSemValue 5 procedure DoError const Msg String begin WriteLn Error msg Code fpgeterrno Halt 1 end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0102 Kapitel 4 Referenz der RTL Online Daten functio
21. CoSecant SETEXCEPTIONMASK function SetExceptionMask const Mask TFPUExceptionMask TFPUExceptionMask Setzt die Exception Maske der Gleitkommaeinheit SETPRECISIONMODE function SetPrecisionMode const Precision TFPUPrecisionMode TFPUPrecisionMode Setzt den Genauigkeitsmodus der Gleitkommeinheit SETROUNDMODE function SetRoundMode const RoundMode TFPURoundingMode TFPURoundingMode Setzt den Rundungsmodus der Gleitkommeinheit SIGN function Sign const AValue Integer TValueSign Overload function Sign const AValue Int64 TValueSign Overload function Sign const AValue Double TValueSign Overload function Sign const AValue Extended TValueSign Overload Sign gibt das Vorzeichen des Parameters aus der ein 32 64 Bit Integer oder ein Gleit kommawert sein kann Der R ckgabewert ist eine Integerzahl und entweder 1 0 oder 1 Damit k nnen dann weitere Berechnungen durchgef hrt werden SIMPLEROUNDTO function SimpleRoundTo const AValue Extended const Digits TRoundToRange Extended SimpleRoundTo rundet den Wert AValue auf die in Digits angegebene Zahl von Stellen rundet dabei aber auf und gibt dann das Ergebnis zur ck Dieses Ergebnis stimmt auf bis zu 10 8 s Stellen Daf r wird die Standardroutine Round aufgerufen Siehe auch TRoundToRange und RoundTo SINCOS procedure SinCos theta Float out sinus Float out cosinus Float SinCos berechnet den Sinus und den Cosinus des Winkels theta und g
22. Float C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math Variance O33 TotalVariance liefert die Gesamtvarianz der Werte im Array Data Die Funktion liefert 0 wenn das Array nur einen Wert enth lt Die zweite Version der Funktion bernimmt einen Zeiger auf ein Array mit N Werten Siehe auch Variance StdDev und Mean program Example49 mathex ex49 pp Beispiel f r die Funktion TotalVariance uses Math type TExArray array 1 100 of Float var I Integer ExArray TExArray TV Float begin Randomize for I 1 to 100 do ExArray i Random Random 100 TV TotalVariance ExArray WriteLn Total variance 2 YS Vig TV TotalVariance ExArray 1 100 WriteLn Total Variance b TV 8 4 end VARIANCE function Variance const Data array of Extended Float function Variance const Data PExtended const N Integer Float Variance liefert die Varianz der Werte im Array Data Die Funktion liefert 0 wenn das Array nur einen Wert enthalt Die zweite Version der Funktion tibernimmt einen Zeiger auf ein Array mit N Werten Siehe auch TotalVariance StdDev und Mean program Example50 mathex ex50 pp Beispiel f r die Funktion Variance uses Math var I 153 100 ExArray array 1 100 of Float V Float begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 V Variance ExArray WriteLn V
23. Sie f hrt Buch ber die Aufrufe von Getmem Freemem und schlie t auch New und Dispose mit in die berwachung ein Wenn ein Programm beendet wird oder eine direkte Anweisung daf r vorliegt wird der gesamte belegte Speicher angezeigt und anschlie end eine Liste aller Speicherbl cke aus gegeben die zwar reserviert aber nicht wieder freigegeben wurden au erdem wird der Ort ausgegeben an dem der Speicher reserviert wurde Bei Inkonsistenzen wie beispielsweise der zweimaligen Freigabe eines Speicherblocks oder bei Speicherbl cken die nicht vollst ndig oder mit einer falschen Gr enangabe freigege ben wurden werden Informationen ausgegeben Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O40 Kapitel 4 Referenz der RTL Online Daten Die Informationen die gespeichert und angezeigt werden konnen durch ein paar Kon stanten auf die pers nlichen Bed rfnisse angepa t werden Die Unit HeapTrc wird mit der Umgebungsvariable HEAPTRC gesteuert wobei der In halt dieser Variable die Startwerte einiger Konstanten der Unit kontrolliert Sie enth lt eine oder mehrere der folgenden Zeichenketten die durch Leerzeichen voneinander ge trennt werden keepreleased Ist dieser String angegeben wird die Variable KeepReleased auf True nn en disabled Ist dieser String angegeben wird die Variable UseHeapTrace auf False gesetzt und die Heapverfolgung ausgeschaltet Es ist wirkungslos diese eg A
24. WriteLn DegToRad 45 WriteLn DegToRad 90 WriteLn DegToRad 180 k WriteLn DegToRad 270 WriteLn DegToRad 360 end DivMoD procedure DivMod Dividend Integer Divisor Word var Result Word var Remainder Word procedure DivMod Dividend Integer Divisor Word var Result SmallInt var Remainder SmallInt procedure DivMod Dividend DWord Divisor DWord var Result DWord var Remainder DWord procedure DivMod Dividend Integer Divisor Integer var Result Integer var Remainder Integer DivMod gibt Dividend div Divisor in Result und Dividend mod Divisor in Remainder zu riick C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math EnsureRange O17 ENSURERANGE function EnsureRange const AValue Integer const AMin Integer const AMax Integer Integer Overload function EnsureRange const AValue Int64 const AMin Int64 const AMax Int64 Int64 Overload EnsureRange ergibt Value wenn AValue sich im Bereich AMin bis AMax befindet Die Funktion ergibt AMin wenn der Wert kleiner ist als AMin und AMax wenn er gr er ist als AMax Siehe auch InRange FLOOR function Floor x Float Integer Floor ergibt die gr te ganze Zahl die kleiner oder gleich x ist Der absolute Wert von x mu kleiner als MaxInt sein Fehler Ist x gr er als MaxInt erfolgt ein berlauf Siehe auch Ceil program Examplel3 mathex ex13 pp Beispiel f r die Fun
25. der m glichen Hooks TKeyboardDriver record InitDriver procedure DoneDriver procedure GetKeyEvent function TKeyEvent Pol 1lKeyEvent function TKeyEvent GetShiftState function Byte TranslateKeyEvent function KeyEvent TKeyEvent TKeyEvent TranslateKeyEventUniCode function KeyEvent TKeyEvent TKeyEvent end Die Bedeutung der Felder erl utert Tabelle 04 11 Genaugenommen m ssen nur die Hooks GetKeyEvent und PollKeyEvent implementiert werden damit der Treiber richtig funktioniert Folgende Beispiel Unit logkeys zeigt wie ein Tastaturtreiber installiert wird wobei der installierte Treiber herangezogen wird und Hooks in die Funktion GetKeyEvent einge h ngt werden um die Tastaturevents zu registrieren und in einer Datei mitzuprotokollie ren C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard Allgemeines 0133 Hook Bedeutung InitDriver Wird aufgerufen um den Treiber zu initialisieren und einzuschalten Dieser Aufruf darf nur einmal erfolgen und mu daf r sorgen da alles DoneDriver Wird aufgerufen um den Treiber abzuschalten und aufzur umen Dieser Aufruf mu garantiert nach einem InitDriver erfolgen und sollte alles was von InitDriver initialisiert wurde wieder zur cksetzen Wird von GetKeyEvent aufgerufen Mu auf das n chste Tastaturereignis warten und es zur ckgeben Die Funktion darf die Tasten nicht speichern Wird von P
26. eines Programmaufrufs und gibt gegebenenfalls Fehler aus 4 13 1 Konstanten Typen Variablen Konstanten EndOfOptions 255 Wird von getopt zur ckgegeben wenn keine weiteren Optionen zur Verf gung stehen No_Argument 0 Gibt an da eine lange Option keine Parameter ben tigt Optional Argument 2 Gibt an da eine lange Option einen optionalen Parameter besitzen darf OptSpecifier set of Char Zeichen f r das Erkennen von Optionen auf der Kommandozeile Required Argument 1 Gibt an da eine lange Option einen Parameter ben tigt Typdeklarationen Orderings require_order permute return_in order Die Aufz hlungswerte f r den Datentyp Orderings bedeuten Wert Beschreibung _permute Die Kommandozeilenoptionen werden ge ndert reiurn_ n _ order ptionen in der ricntigen Reihenfolge zur ckgeben Tabelle 04 5 Die Optionen zur Kommandozeilensortierung type TOption record Name String Has_arg Integer Flag Pehar Value Char end POption TOption Der Typ TOptions bergibt lange Optionen an die Routine GetLongOpts Das Feld Name enth lt den Namen der Option in Has_arg kann angegeben werden ob die Option einen Parameter erwartet und Flag verweist auf das Zeichen Value wenn Flag von NIL ver schieden ist POption ist ein Zeiger auf einen TOption Record und wird als Parameter an die GetLongOpts Funktion bergeben Variablen OptArg String Besitzt eine Opt
27. q DoneKeyBoard DoneVideo end SETCURSORTYPE procedure SetCursorType NewType Word SetCursorType setzt das Aussehen des Cursors auf den Typ der in NewType angegeben ist Zur Auswahl stehen folgende Konstanten _erHidden Cursor ausblenden 7 crBlock Blockcursor crHalfBlock Cursor als halber Block Siehe auch SetCursorPos SETVIDEODRIVER function SetVideoDriver const Driver TVideoDriver Boolean SetVideoDriver wahlt Driver als aktuellen Bildschirmtreiber aus Ist der aktuelle Bild schirmtreiber bereits initialisiert wurde also InitVideo bereits aufgerufen macht die Funktion nichts sondern kehrt sofort zur ck und gibt den Wert False als Funktionser gebnis aus Um einen neuen Treiber zu installieren mu also vorher DoneVideo aufgeru fen werden Ein Beispiel ist im Abschnitt zum Schreiben eigener Bildschirmtreiber ab Seite O110 ge zeigt Fehler Ist der aktuelle Treiber bereits installiert gibt die Funktion False zur ck SETVIDEOMODE function SetVideoMode const Mode TVideoMode Boolean SetVideoMode setzt den in Mode angegebenen Bildschirmmodus War der Aufruf erfolg reich besitzt der Bildschirm Mode Col Zeilen und Mode Row Spalten und wird in Farbe angezeigt wenn Mode Color den Wert True hat Die Funktion meldet True wenn der Modus erfolgreich eingeschaltet werden konnte False wenn nicht Bemerkung Der Bildschirmmodus mu nicht unbedingt gesetzt werden zum Beispiel k nnen eine Ko
28. sem _ num Die Nummer des Signals im System auf die die Operation durchgef hrt werden sem_op Die auszuf hrende Operation Sie kann folgende Werte annehmen 1 Eine positive Zahl wird zum aktuellen Wert des Signals addiert 2 Falls O Null angegeben wurde wird der Proze angehalten bis das spezifi zierte Signal den Wert Null erreicht hat 3 Falls eine negative Zahl angegeben ist wird sie vom aktuellen Wert des Signals subtrahiert Wenn der Wert des Signals dabei negativ wird wird der Proze angehalten bis der Wert wieder gro genug wird Mit Angabe des IPC_NOWAIT Flags in sem_flg kann dieses Verhalten umgangen werden sem_flg Falls IPC_NOWAIT angegeben wurde wird der aufrufende Proze nie angehalten Die Funktion liefert True falls die Operationen erfolgreich waren ansonsten False Fehler Bei einem Fehler wird False zur ckgeliefert und IPCerror wird gesetzt Siehe auch semget und semctl SHMAT function shmat ShmID cint shmaddr Pointer shmflg cint Pointer shmat bindet einen gemeinsam nutzbaren Speicherblock mit der ID shmid an den aktuel len Proze und gibt einen Zeiger auf diesen zur ck Falls shmaddr gleich NIL ist w hlt das System einen bisher nicht zugeteilten Speicherbereich aus der sich so hoch wie m g Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O106 Kapitel 4 Referenz der RTL Online Daten lich im Adre raum befindet Falls shmaddr verschieden vo
29. 2 AF_INET 2 Internet IP Protokoll C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Konstanten Typen Variablen 067 Konstante Wert Adre familie AF_IPX 4 Novell IPX AF_BRIDGE 7 Multiprotocol Bridge AF X25 9 Reserviert f r das X 25 Projekt Amateur Radio X 25 PLP AF_NETBEUI 13 Reserviert f r das 802 2LLC Project AF_NETLINK 16 _AF_PACKET 17 Packet Familie AF_ECONET 19 Acorn Econet AF_IRDA IRDA Sockets AF_WANPIPE Wanpipe API Sockets TIPC Sockets AF_MAX 32 Maximalwert Die Unit definiert die folgenden Fehlerkonstanten sind alles Alias Angaben Fehlercode Wert Bedeutung EsockEACCESS ESysEAcces Zugriff verboten EsysEFAULT Alias Es ist ein Fehler aufgetreten EsockEINVAL EsysEINVAL Alias Ung ltiger Wert angegeben EsockENOBUFS ESysENoBufs Kein Pufferspeicher verf gbar EsockENOTSOCK ESysENotSock Dateideskriptor ist kein Socket EsockEWOULDBLOCK ESysEWouldBlock Operation w rde blockieren Die folgenden Konstanten sind spezielle IP Adressen die h ufig ben tigt werden wenn ein Socket an eine Schnittstelle auf der lokalen Maschine gebunden werden soll Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O68 Kapitel 4 Referenz der RTL Online Daten Konstante Wert Beschreibung INADDR ANY Cardinal 0 INADDR_NONE
30. 4 21 Unit Video Konstanten Typen und Variablen O115 Die Unit arbeitet auch mit unterschiedlichen Schriften daf r sind die Codepages einmal allgemein und einmal als VGA Codepages definiert iso_codepages iso_codepages ist eine Aufz hlung mit allen Codepages iso01 iso02 iso03 iso04 iso05 basierend auf der ISO Codierung iso06 iso07 iso08 iso09 isol0 vga_codepages vga_codepages ist eine Aufz hlung mit allen Codepages cp437 cp850 cp852 cp866 bei denen mit normaler VGA Karte ein VGA Font ausge w hlt werden kann Zu beachten ist da dabei die Grafik zeichen an falschen Stellen in der Tabelle sind Einschr nkungen des Zeichensatzes LowAscii true Auf einigen Systemen sind die unteren 32 Zeichen 0 bis 31 der DOS Codepage f r die ASCII Steuerzeichen erfor derlich und k nnen von Programmen nicht angezeigt werden Ist LowAscii auf True gesetzt k nnen die unteren 32 ASCII Zeichen genutzt werden ist der Wert auf False gesetzt sollten sie vermieden werden LowAscii kann je nach Bedarf als Konstante Variable oder Property definiert werden es darf aber unter keinen Um st nden erwartet werden da LowAscii geschrieben wer einfachen Linie Ist dieser Wert auf True gesetzt werden die Zeichen zum Zeichnen von Linien automatisch immer auf die einfachen Linien gesetzt und die doppelten Linienzei chen werden automatisch konvertiert NoExtendedFrame kann je nach Bedarf als Konstante Variab
31. AddDisk DOSEXITCODE function DosExitCode Word DosExitCode enthalt im niederwertigen Byte den Exitcode eines Programms das mit dem Exec Befehl ausgef hrt wurde Siehe auch Exec program Example5 dosex ex5 pp Beispiel f r die Funktionen Exec und DosExitCode uses Dos begin ifdef Unix WriteLn Starte bin Is la Exec bin Is la else WriteLn Starte Dir Exec GetEnv COMSPEC C dir endif WriteLn Programme endete mit ExitCode Lo DosExitCode end DOSVERSION function DosVersion Word DosVersion gibt die Versionsnummer des Betriebssystems oder die Kernelversion zurtick Das h herwertige Byte enth lt die jeweilige Unter und das niederwertige Byte die Haupt versionsnummer Hinweis Auf Systemen deren Version mehr als zwei Zahlen enthalten werden nur die ersten beiden zur ckgegeben Unter Linux finden beispielsweise nur die ersten beiden Nummern Anwendung so da beispielsweise eine Linuxversion 2 6 24 nur 2 6 ausgibt Bei Betriebssystemen die keinen speziellen Systemaufruf besitzen um die Kernelversion mitzuteilen erh lt man eine Versionsnummer von 0 program Examplel dosex exl pp Beispiel f r die Funktion DosVersion uses Dos var OS String 32 Version Word begin ifdef LINUX OS Linux endif ifdef FreeBSD OS FreeBSD endif Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O50 Kapitel 4 Referenz d
32. Cotan pi 3 WriteLn Cotan pi 4 end CSC function csc x Float Float csc ist ein Alias f r die Function Cosecant Siehe auch Cosecant Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O16 Kapitel 4 Referenz der RTL Online Daten CYCLETORAD function CycleToRad cycle Float Float Cycletorad wandelt den Parameter cycle Vollwinkel in das Bogenma 1 Vollwinkel 27 rad Siehe auch DegToGrad DegToRad RadToDeg RadToGrad und RadToCycle program Examplel0 mathex ex10 pp Beispiel f r die Funktion CycleToRad uses Math begin WriteLn Cos CycleToRad 1 6 WriteLn Cos CycleToRad 1 8 end sollte 1 2 ergeben sollte Sgrt 2 2 sein DEGTOGRAD function DegToGrad deg Float Float DegToGrad wandelt den Parameter deg einen Winkel in Grad in Gon um 90 sind 100 gon Siehe auch CycleToRad DegToRad RadToDeg RadToGrad und RadToCycle program Examplell mathex exll pp Beispiel f r die Funktion DegToGrad uses Math begin WriteLn DegToGrad 90 100 WriteLn DegToGrad 180 200 WriteLn DegToGrad 270 300 end DEGTORAD function DegToRad deg Float Float Degtorad wandelt den Parameter deg einen Winkel in Grad in das Bogenma um n rad 180 Siehe auch CycleToRad DegToGrad RadToDeg RadToGrad und RadToCycle program Examplel2 mathex ex12 pp Beispiel f r die Funktion DegToRad uses Maths begin
33. Daten enthalten wie verf gbar waren oder wie von der alten in die neue Speicherposition kopiert werden konnten Siehe auch Malloc und Free 4 10 3 Der Thread Manager cthreads Die Unit CThreads initialisiert mit dem Aufruf von SetCThreadManager siehe unten den Record System ThreadManager und damit die Threadverwaltung der Unit System Basis ist die Implementation der POSIX Thread Routinen der C Bibliothek Dies ge schieht automatisch nach dem Einbinden der Unit m glichst als erste in die Uses Anweisung des Programms Weil es sinnlos ist diese Unit auf einem Nicht POSIX System wie Windows OS 2 oder DOS einzubinden sollte der Aufruf immer in einer ifdef Bedingung stehen Die Lazarus IDE f gt die bedingte Kompilierung automatisch bei jedem neu begonnenen Programm ein Prozeduren und Funktionen SETCTHREADMANAGER procedure SetCThreadManager SetCThreadManager setzt den Thread Manager auf den C Thread Manager Dieser Auf ruf darf manuell erfolgen wenn w hrend der Lebenszeit des Programmes aus beliebigen Gr nden zwischenzeitlich ein anderen Thread Manager aktiviert wurde 4 10 4 Der WideString Manager cwstring Die Unit cwstring initialisiert den WideString Manager der Unit System mit einer Imple mentation auf der Basis der Sortier und Umwandlungsfunktionen die von der C Bibliothek des unterliegenden POSIX kompatiblen Unix oder Linux Systems bereitge stellt werden Dazu braucht die Unit cwstring nur manuell als eine d
34. Daten ist nicht gestattet O62 Kapitel 4 Referenz der RTL Online Daten STRICOMP function StrIComp Str1 PChar Str2 PChar Sizelnt Vergleicht die beiden nullterminierten Strings Str und Str2 und ignoriert dabei die Gro und Kleinschreibung Das Ergebnis ist ein negativer SizeInt wenn Str1 kleiner als Str2 ist 0 wenn die beiden Zeichenketten gleich sind Ein positiver SizeInt wenn Str1 gr er als Str2 ist Siehe auch StrLComp StrComp StrLIComp und SysUtils StrIComp program Example8 stringex ex8 pp Beispiel f r die Funktion StrlComp uses Strings const Pl PChar P2 PChar var L Sizelnt begin Write Pl und P2 sind if StrComp Pl P2 lt gt 0 then Write NICHT Write gleich Der erste L 1 while StrLComp P1 P2 L 0 do Ine L Dec 1 WriteLn 1 Zeichen sind gleich end Das ist der erste String Das ist der zweite String STRLCAT function StrLCat Dest PChar Source PChar 1 SizeInt PChar F gt L Zeichen an von Source an Dest an und dann das abschlie ende ASCII 0 Zeichen Die Funktion gibt Dest zur ck Siehe auch StrCat und SysUtils StrLCat program Examplel2 stringex ex12 pp Beispiel f r die Funktion StrLCat uses Strings const Pl PChar 1234567890 var P2 PCh r begin P2 StrAlloc StrLen P1 2 1 P2 0 L nge Null StrCat P2 P1 StrLCat P2 Pl 5 WriteLn P2 P2 StrDispose P2
35. False Wenn KeepReleased auf true gesetzt wird f hrt Heaptrc eine Liste des bereits freigegebe nen Speichers Diese Option ist n tzlich falls ein Speicherblock zweimal gel scht wird Da diese Option sehr speicherintensiv ist sollte sie nur im Notfall angewandt werden quicktrace Boolean True Quicktrace bestimmt ob der Speichermanager berpr fen soll ob ein Speicherblock der gerade gel scht werden soll korrekt durch GetMem reserviert wurde Dies ist ein sehr zeitaufwendiger Proze und verlangsamt die Programmausf hrung erheblich Quicktrace ist dennoch standardm ig auf True gesetzt im Gegensatz zum alten FPC 1 0 tracesize 8 tracesize gibt an wie viele Ebenen von Aufrufen des Aufrufstacks w hrend einer Ausgabe durch die DumpHead Anweisung angezeigt werden sollen Wird keepreleased true gesetzt wird die H lfte von tracesize f r den GetMem Aufrufstack und die andere H lfte f r den FreeMem Aufrufstack reserviert Ein Beispiel Der Standardwert 8 f r tracesize bewirkt die Ausgabe von acht Ebenen des Aufrufsrahmens des GetMem Befehls falls KeepReleased false ist Falls KeepReleased true ist werden vier Ebenen f r GetMem und vier Ebenen f r FreeMem ausgegegeben Soll dieser Wert ge ndert werden mu die Unit Heaptrc mit einem neuen Wert f r die Kon stante kompiliert werden usecrc Boolean True Falls usecrc eingeschaltet ist Voreinstellung werden die Speicherstellen vor und nach dem Speicheranfordern C
36. Konstante enth lt einen String f r den Hinweis auf Unicode character Unicode Events Sie wird von den Routinen zur Be schreibung der Tastenevents ben tigt und kann bei g Unknown function key da eine unbekannte Funktionstaste bet tigt wurde Sie wird von den Routinen zur Beschreibung der Ta stenevents ben tigt und kann bei Bedarf lokalisiert 1 werden Typdeklarationen TKeyboardDriver record InitDriver procedure DoneDriver procedure GetKeyEvent function TKeyEvent PollKeyEvent function TKeyEvent GetShiftState function Byte TranslateKeyEvent function KeyEvent TKeyEvent TKeyEvent TranslateKeyEventUniCode function KeyEvent TKeyEvent TKeyEvent end Mit dem Record TKeyboardDriver siehe auch Seite O132 kann ein eigener Tastaturtrei ber mit der Funktion SetKeyboardDriver siehe Seite O146 installiert werden Die ver schiedenen Felder des Records korrespondieren mit den unterschiedlichen Funktionen des Interfaces der Unit Keyboard Weitere Informationen dazu k nnen auf Seite 0132 nachgelesen werden TKeyEvent Cardinal Der Datentyp TKeyEvent ist der Grundtyp f r alle Tastaturevents Der Tastenanschlag wird in die 4 Byte des Typs TKeyEvent kodiert Die verschiedenen Felder des Tastendrucks k n nen mit einem Typecast des TKeyEvents auf den Typ TKeyRecord ermittelt werden TKeyRecord packed record KeyCode Word ShiftState Byte Flags Byte end Download nur f
37. NoAddress6 in6 _addr Konstante die eine ung ltige keine IPv6 u6_addr16 0 0 0 0 0 0 0 0 Netzwerkadresse mitteilt en EA een NoNet6 in _addr u6_addr16 Konstante die eine ung ltige keine IPv6 0 0 0 0 0 0 0 0 Netzwerkadresse mitteilt Die folgenden Konstanten legen die Protokollfamilie fest Sie werden im Aufruf von der Prozedur Socket ben tigt Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 072 Kapitel 4 Referenz der RTL Online Daten Konstante Wert Protokollfamilie PF APPLETALK AF APPLETALK Appletalk DDP AF ASH AF_ATMSVC ATM SVCs PF_BLUETOOTH AF BLUETOOTH Bluetooth Sockets PF_DECnet AF_DECnet DECNET Projekt PF_INET AF_INET Internet IP Protokoll PF_IPX AF_IPX Novell IPX PF_KEY AF_KEY Key Management API PF_LOCAL AF LOCAL Unix socket PF ROSE AF ROSE Amateur Radio X 25 PLP PF SECURITY AF SECURITY Sicherheitscallback Pseudo PF PF TIPC AF_TIPC TIPC Sockets PF_UNSPEC AF_UNSPEC Unspezifiziert PF_X25 AF_X25 Reserviert f r das X 25 Projekt Die folgenden Konstanten sind Optionen fiir das Datagram SendMsg Konstante Wert Beschreibung E SCM_SRCRT oo IPV6_RXSRCRT _Umdokumentierte Getsockopt Option SCM_TIMESTAMP SO TIMESTAMP Socket Option Die folgenden Konstanten steuern das Herunterfahren von Sockets Konstante Wert Beschreibung SHUT RDO Leseantei
38. SetCursorPos stellt den Cursor an die angegebene Position mit der Zeilenangabe NewCur sorX und der Spalte NewCursorY Der Ursprung der Bildschirmkoordinaten befindet sich mit dem Koordinatenpaar 0 0 an der linken oberen Ecke Die aktuelle Position wird in den Variablen CursorX und CursorY gespeichert Siehe auch SetCursorType program example2 videoex ex2 pp uses Video Keyboard var P PP D Integer K TKeyEvent procedure PutSquare P Integer C Char begin VideoBuf P Ord C 07 shl 8 VideoBuf P ScreenWidth Ord c 07 shl 8 VideoBuf P 1 Ord c 07 shl 8 VideoBuf P ScreenWidth 1 Ord c 07 shl 8 end begin InitVideo InitKeyBoard Po s PP 1 repeat if PP lt gt 1 then PutSquare PP PutSquare P SetCursorPos P mod ScreenWidth P div ScreenWidth UpdateScreen False Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0124 Kapitel 4 Referenz der RTL Online Daten PP se P repeat D z 0 K TranslateKeyEvent GetKeyEvent case GetKeyEventCode K of kbdLeft if P mod ScreenWidth lt gt 0 then D 1 kbdUp if P gt ScreenWidth then D ScreenWidth kbdRight if P 2 mod ScreenWidth lt gt 0 then D 1 kbdDown if P lt VideoBufSize div 2 ScreenWidth 2 then D ScreenWidth end until D lt gt 0 or GetKeyEventChar K q P s P Ds until GetKeyEventChar K
39. Siehe auch StrNew und SysUtils StrDispose program Examplel7 stringex ex17 pp Beispiel f r die Funktion StrDispose uses Strings const P PChar Das ist ein PChar String var P2 PChar begin P2 StrNew P1 WriteLn P2 P2 StrDispose P2 end STRECOPY function StrECopy Dest PChar Source PChar PChar Kopiert den nullterminierten String in Source nach Dest und gibt einen Zeiger auf das Stringende also das terminierende ASCII 0 des kopierten Strings zur ck Fehler Es wird keine L ngen berpr fung durchgef hrt Siehe auch StrLCopy StrCopy und SysUtils StrECopy program Example6 stringex ex6 pp Beispiel f r die Funktion StrECopy uses Strings const P PChar Das ist ein PChar String var PP PChar begin PP StrAlloc StrLen P 1 if SizeInt StrECopy PP P SizeInt PP lt gt StrLen P then WriteLn Hier ist was falsch else WriteLn PP PP StrDispose PP end STREND function StrEnd p PChar PChar Liefert einen Zeiger auf das Ende von p also auf das terminierende ASCII 0 Zeichen Siehe auch StrLen und SysUtils StrEnd program Example6 stringex ex7 pp Beispiel fiir die Funktion StrEnd uses Strings const P PChar Das ist ein PChar String begin if SizeInt StrEnd P SizeInt P lt gt StrLen P then WriteLn Da ist was falsch else WriteLn Alles in Ordnung end Download nur f r den Eigenbedarf die Weiterverbreitung der
40. allgemeinen Abschnitt dieses Kapitels wird gezeigt wie ein eigener Tastatur treiber entwickelt wird Ein Teil der Funktionen in dieser Unit ist derzeit nicht dokumentiert was jeweils entspre chend angegeben ist 4 23 1 Spezielle Hinweise zu Unix Unter Unix laufen Programme in einem Terminal und die Programme die auf den Bildschirm schreiben und von der Tastatur lesen kommunizieren mit dem Terminal Die Tastaturbehandlung unter Unix ist gr tenteils abw rtskompatibel zum DEC vt100 und vt220 von vor vielen Jahren Diese Ger te hatten Tastaturen die sich von denen heutiger PCs drastisch unterschieden und an dieser Stelle fangen die Probleme an Verschlimmert wird die Situation dadurch da das Design des Protokolls der beiden Terminals au er dem nicht sehr gut war Unter diesem Hintergrund versucht die Unit Keyboard auf Unix Systemen die Tastatur funktionalit t bestm glich zur Verf gung zu stellen Eine Implementation mit allen M g lichkeiten anderer Betriebssysteme ist aufgrund des unterliegenden Designs nicht m g lich Eine Ausnahme hiervon stellt der Linux Kernel bereit Die Terminalemulation des Linux Kernels ist aus Sicht einer PC Tastatur zwar ebenfalls hoffnungslos primitiv aber im Gegensatz zu den anderen Terminal Emulatoren voll konfigurierbar Auf der Linux Konsole versucht die Unit Keyboard von Free Pascal den vollen Funktionsumfang zu implementieren Wird die Unit Keyboard in Programme eingebunde
41. bietet eine plattformunabh ngige Schnittstelle zur Maussteuerung die auf allen von Free Pascal 2 unterst tzten Plattformen verf gbar ist Sie kann bei Bedarf durch selbstgeschriebene Treiber erweitert werden beispielsweise um durch das Protokol lieren von Mausereignissen eine Aufzeichnungs und Wiederabspielfunktion zur Verf gung zu stellen Die Unit ist nur f r Textmodus und nicht f r grafische Programme ausgelegt und basiert prinzipiell auf dem Zusammenspiel mit den beiden Units Keyboard und Video Wichtig Die Unit Mouse von Free Pascal 2 ist nicht zur gleichnamigen Unit von Free Pascal 1 kompatibel Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O126 Kapitel 4 Referenz der RTL Online Daten 4 22 1 Konstanten Typen Variablen Konstanten Fehlerkonstanten Konstante Wert Beschreibung errMouseBase 1030 Basis f r die Fehlercodes der Maussteuerung errMouseNotlmplemente errMouseBase Allgemeine Konstanten f r die Maussteuerung Konstante Wert Beschreibung MouseActionDown 0001 Signal wenn die Maustaste gedr ckt wird MouseEventBufSize 16 Die Unit Mouse besitzt einen Mechanismus f r das Puffern der Mausereignisse diese Konstante legt die Gr e dieses Puffers fest Button Events Konstante Wert Beschreibung MouseLeftButton 01 Linke Maustaste MouseRightButton 02 Rechte Maustaste Datentypen PMouseEvent TMouse
42. den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0136 Kapitel 4 Referenz der RTL Online Daten Code Taste Code Taste Code Taste 2B Alt lt engl Alt 62 Strg F5 94 Strg Tab BkSlash t Minus engl Alt a a a ee a v gt F2 6F Alt F8 Tabelle 04 12 Tasten Scancodes alle Codes in hexadezimaler Schreibweise Teil 2 von 2 Taste Code Shift Taste Strg Taste Alt Taste GrauPlus 90 4E Tabelle 04 13 Sondertasten Scancodes alle Codes in hexadezimaler Schreibweise C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard Konstanten Typen und Variable 0137 Eine Liste der Scancodes f r besondere Tasten und Kombinationen mit Shift Alt und Strg zeigt die Schnellreferenz in Tabelle 04 13 4 23 3 Konstanten Typen Variablen Konstanten AltPrefix Byte O Alternativer Index f r die Alt Taste Nur unter Unix ShiftPrefix Byte O Alternativer Index f r die Shift Taste Nur unter Unix Fehlercodes errKbdBase 1010 Basiswert f r die Fehlerkonstanten der Tastaturrouti ee ee ee ee ee eee errKbdinitError errKbdBase 0__Tastaturtreiber konnte nicht initialisiert werden errKbdNotlmplemented Tastaturtreiber ist nicht implementiert errKbdBase 1 Die Konstanten fiir die Modifizierertasten fiir ShiftState Konstante Code Taste _kbLeftShift 1 Modifizierer der linken Shifttaste kbShift
43. die auf Unix Plattformen implementiert ist und nicht verwendet werden sollte Siehe auch DT ToUnixDate PackTime UnpackTime GetTime und SetTime UNPACKTIME procedure UnpackTime p LongInt var t DateTime UnPackTime konvertiert die Zeit der letzten nderung einer Datei p in einen DateTime Datensatz Die Zeit der letzten Datei nderung finden die Funktionen GetFTime FindFirst und FindNext Ein Beispiel ist bei PackTime gezeigt Siehe auch GetFTime FindFirst FindNext und Pack Time WEEKDAY function Weekday y LongInt m LongInt d LongInt LongInt WeekDay gibt die Nummer des Wochentags zur ck auf den das Datum d m y f llt Sonntag ergibt dabei den Wert 0 und Samstag den Wert 6 Fehler Bei einem Fehler wird der Wert 1 zur ckgegeben Siehe auch PackTime UnpackTime GetTime und SetTime 4 18 Unit Strings Die Unit Strings von Free Pascal ist systemunabh ngig und funktioniert auf allen unter st tzten Plattformen Alle Funktionen dieser Unit sind in erweiterten Varianten auch in der Unit SysUtils verf gbar wobei die Syntax der Funktionen dann immer gleich ist Das zeigt sich auch in den Beispielen bei denen nur der Import anders lautet Die Routinen in dieser Unit kennen weder AnsiStrings noch WideStrings und auch keine nationalen Sonderzeichen Alle Strings sind klassische Pascal ShortStrings mit einer L n ge von maximal 255 Zeichen F r AnsiStrings und WideStrings mu auf die entsprechen den Routinen der Uni
44. enth lt das High Byte das Farbattribut und das Low Byte den ASCII Code des Zeichens selbst TVideoDriver record InitDriver procedure DoneDriver procedure UpdateScreen procedure Force Boolean ClearScreen procedure SetVideoMode function const Mode TVideoMode Boolean GetVideoModeCount function Word GetVideoModeData function Index Word var Data TVideoMode Boolean SetCursorPos procedure NewCursorX Word NewCursorY Word GetCursorType function Word SetCursorType procedure NewType Word GetCapabilities function Word end ber TVideoDriver und mit dem Aufruf SetVideoDriver kann ein eigener Bildschirmtrei ber installiert werden Bei der Funktion und im allgemeinen Abschnitt zu eigenen Bildschirmtreibern ab Seite 0110 befinden sich weitere Informationen zu diesem Record TVideoMode record Col Word Row Word Color Boolean end Der Record TVideoMode beschreibt einen Bildschirmmodus Seine Felder sind selbster kl rend Col und Row steht f r die Zahl der Spalten und Zeilen auf dem Bildschirm Color ist True wenn der Modus Farben unterst tzt und False wenn nicht TVideoModeSelector function const VideoMode TVideoMode Params LongInt Boolean TVideoModeSelector ist der Prototyp eines Callbacks f r die Auswahl des Bildschirmmo dus Variablen Die Unit Video enth lt einige wichtige Variablen CursorLines Byte CursorLines ist eine Bitmaske die festlegt we
45. falls dieser Record eine bersetzte Funktionstaste enth lt War die gedr ckte Taste keine Funktionstaste oder Taste des Cursorblocks wird ein ASCII Null zur ckgemeldet Siehe auch GetKeyEventUniCode GetKeyEventShiftState GetKeyEventFlags GetKeyE ventChar und GetKeyEvent program Example2 kbdex ex2 pp Beispiel f r die Funktion GetKeyEventCode uses keyboard var K TKeyEvent begin InitKeyBoard WriteLn Driicken Sie eine erweiterte Taste q beendet das Programm repeat K GetKeyEvent K TranslateKeyEvent K if GetKeyEventFlags K lt gt KbfnKey then WriteLn Keine erweiterte Taste else begin Write Erhaltene Taste GetKeyEventCode K WriteLn KeyEventToString K end until GetKeyEventChar K q DoneKeyboard end GETKEYEVENTFLAGS function GetKeyEventFlags KeyEvent TKeyEvent Byte GetKeyEventFlags gibt den Flags Anteil des bergebenen TKeyEvent Records zur ck Ein Beispiel f r diese Funktion ist bei GetKeyEvent gezeigt Siehe auch GetKeyEventUniCode GetKeyEventShiftState GetKeyEventCode GetKeyE ventChar und GetKeyEvent C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard GetKeyEventShiftState 0143 GETKEYEVENTSHIFTSTATE function GetKeyEventShiftState KeyEvent TKeyEvent Byte GetKeyEventShiftState gibt den Shiftstatus des angegebenen TKeyEvent Records KeyEvent zur ck Hiermit wird ermittelt ob eine der Modifizierer Tasten Shif
46. fiir die Funktion StdDev uses Maths var I Integer ExArray array 1 10000 of Float begin Randomize for I Low ExArray to High ExArray do ExArray i RandG 1 0 2 WriteLn StdDev StdDev ExArray 8 4 WriteLn StdDev b StdDev ExArray 0 10000 8 4 end SUM function Sum const Data array of Extended Float function Sum const Data PExtended const N LongInt Float Sum liefert die Summe der Werte im Array data Die zweite Version der Funktion tiber nimmt einen Zeiger auf ein Array mit N Werten Siehe auch SumOfSquares SumsAndSquares TotalVariance und Variance C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math Sumint O31 program Example44 mathex ex44 pp Beispiel f r die Funktion Sum uses Math var I z 1 100 ExArray array 1 100 of Float begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 WriteLn Sum Sum ExArray 8 4 WriteLn Sum b Sum ExArray 1 100 8 4 end SUMINT function SumInt const Data PInt64 const N LongInt Int64 function SumInt const Data array of Int64 Int64 Sumlnt liefert die Summe der N Integerzahlen im Array Data das ein offenes Array oder ein Zeiger auf ein Array sein kann Fehler Es kann ein berlauf auftreten SUMOFSQUARES function SumOfSquare
47. gel scht sondern ausgel st COMPAREV ALUE function CompareValue const A Integer const B Integer TValueRelationship function CompareValue const A Int64 const B Int64 TValueRelationship function CompareValue const A QWord const B QWord TValueRelationship function CompareValue const A Extended const B Extended delta Extended TValueRelationship CompareValue vergleicht zwei ganzzahligge oder Gleitkommawerte A und B gibt 1 wenn A lt B 0 wenn A B und 1 wenn A gt B ist zur ck Siehe auch TValueRelationship COSECANT function CoSecant x Float Float CoSecant berechnet die Cosekante 1 sin x fiir den Parameter x Fehler Wird 0 oder 180 angegeben wird eine Ausnahme ausgel st Siehe auch Secant CosH function CosH x Float Float CosH gibt den Cosinus Hyperbolicus des Parameters x zur ck Siehe auch ArcosH SinH und ArSinH program Example8 mathex ex8 pp Beispiel f r die Funktion CosH uses Math begin WriteLn CosH 0 WriteLn CosH 1 end COT function Cot x Float Float Cot ist ein Alias f r die Funktion Cotan Siehe auch Cotan COTAN function Cotan x Float Float Cotan gibt den Cotangens f r den Parameter x zur ck x sollte ungleich 0 sein Fehler Falls f r x Null angeben wird kommt ein berlauffehler Siehe auch TanH program Example9 mathex ex9 pp Beispiel f r die Funktion Cotan uses Math begin WriteLn Cotan pi 2 WriteLn
48. in diesen virtuellen Bildschirm geschrieben wird der Bildschirmpuffer wieder mit dem bereits erw hnten UpdateScreen in den wirkli chen Bildschirmspeicher bertragen Die Aktualisierung des Bildschirms kann um die Arbeit zu beschleunigen verboten wer den Daf r ist die Funktion LockScreenUpdate vorgesehen die einen internen Z hler erh ht Solange er gr er als 0 ist bewirkt der Aufruf von UpdateScreen nichts Der Z hler wird mit UnlockScreenUpdate wieder verringert Hat er den Wert 0 erreicht aktualisiert der n chste Aufruf von UpdateScreen die Bildschirmdaten Dies ist vor allem dann sinnvoll wenn ver schachtelte Funktionen eine gro e Zahl von Bildschirmausgaben t tigen Die Unit Video besitzt auch eine Schnittstelle um eigene Bildschirmtreiber zu schreiben Damit ist es m glich den voreingestellten Bildschirmtreiber mit einem eigenen zu ber schreiben Wie das geht ist bei der Funktion SetVideoDriver erl utert Der aktuelle Bild schirmtreiber kann mit GetVideoDriver ermittelt werden Hinweis Die Unit Video sollte nicht gleichzeitig mit der veralteten an Turbo Pascal ange lehnten Unit Crt verwendet werden Das f hrt zu recht seltsamem Programm und Bild schirmverhalten und Abst rze sind wahrscheinlich Die Beispiele in diesem Abschnitt rufen au er der Unit Video auch die Unit VidUtil auf die als einzige Routine die Prozedur TextOut enth lt Sie schreibt einen Text an der ange gebenen Stelle auf den Bildschirm und sieht
49. nicht an diese Regel wird ein Laufzeitfehler Nummer 6 un g ltiger Dateihandle ausgel st Fehler Fehler werden in DosError gemeldet Siehe auch FindNext FindClose SysUtils FindFirst SysUtils FindNext SysUtils FindClose program Example7 dosex ex7 pp Beispiel f r die Funktionen FindFirst und FindNext uses ltere Variante mit der Unit Dos gt Dos var Dir SearchRec begin FindFirst archive Dir WriteLn FileName Space 32 FileSize 9 while DosError 0 do begin Writeln Dir Name Space 40 Length Dir Name Dir Size 9 FindNext Dir Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O52 Kapitel 4 Referenz der RTL Online Daten end FindClose Dir end FINDNEXT procedure FindNext var f SearchRec FindNext erhalt als Argument einen SearchRec Record der durch einen FindFirst Befehl initialisiert wurde und versucht die nachste Datei zu finden die mit den dem FindFirst Befehl bergebenen Kriterien bereinstimmt Falls DosError von Null verschieden ist wurde keine andere die Kriterien erf llende Datei gefunden Fehler DosError meldet Fehler Ein Beispiel befindet sich unter FindFirst Siehe auch FindFirst FindClose SysUtils FindFirst SysUtils FindNext SysUtils FindClose FSEARCH function FSearch path PathStr dirlist String PathStr FSearch sucht die Datei Path in allen Verzeichnissen die in DirList angef hrt werden
50. nn 7 SYS ENOTSOCK Der Deskriptor ist kein Socket nn SYS_EOPNOTSUPP Der Socket Typ unterst tzt keine Listen Operation Siehe auch Socket Bind und Connect NETADDRTOSTR function NetAddrToStr Entry in_addr AnsiString NetAddrToStr in einen menschenlesbaren String mit Punkttrennern um Siehe auch HostAddrToStr StrToNetAddr und StrToHostAddr NETADDRTOSTR6 function NetAddrToStr6 Entry Tin6 addr AnsiString NetAddrToStr6 wandelt die IPV6 Netzwerkadresse in Entry in einen lesbaren String um Vom Grunde her ist das dasselbe wie NetAddrToStr6 allerdings sind hier die Daten in der richtigen Reihenfolge Siehe auch NetAddrToStr StrToHostAddr StrToNetAddr und StrToHostAddr6 NETTOHOST function NetToHost Net in_addr in_addr function NetToHost Net LongInt LongInt NetToHost wandelt eine Netzwerkadresse in eine Hostadresse um wobei die Endianness der Hostmaschine beriicksichtigt wird Die Adresse kann als punktgetrennter Block oder als LongInt Zahl angegeben sein Siehe auch HostToNet NToHS HToNS ShortHostToNet und ShortNetToHost NTOHL function NToHl Net LongInt LongInt ntohs stellt sicher da die Bytes in Net die aus dem Netzwerk erhalten wurden in der richtigen Reihenfolge ftir die Verarbeitung auf der Hostmaschine sind und gibt das Er gebnis in richtiger Reihenfolge aus Siehe auch htonl htons und ntohs C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets N
51. sind uses Maths type TExArray array 1 100 of Integer var 1 Integer ExArray TExArray begin Randomize for i Low ExArray to High ExArray do ExArray i Random i Random 100 WriteLn MinIntValue ExArray end MINVALUE function MinValue const data array of Extended Extended function MinValue const data PExtended const N Integer Extended function MinValue const data array of Integer Integer function MinValue const Data PInteger const N Integer Integer MinValue liefert den kleinsten Wert im Array Data mit Integer oder Gleitkomma werten Der R ckgabewert hat den selben Typ wie die Elemente im Array Einige Vari anten nehmen einen Zeiger auf ein Array mit N Integer oder Gleitkommawerten an Siehe auch MaxIntValue MaxValue und MinIntValue program Example31 mathex ex3l pp Beispiel f r die Funktion MinValue Sicherstellen da Integer Werte 32 Bit gro sind mode objfpc uses Math var i 141003 f_array array 1 100 of Float i_array array 1 100 of Integer Pf_array PFloat PI array PInteger begin Randomize Pf_array f_array 1 Pi_array i_array 1 for i Low f_array to High f_array do f_array i Random Random 100 for i Low i_array to High i_array do i_array i Random I Random 100 WriteLn Min Float MinValue f_array 8 4 C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math Momen
52. 0 end RADTOCYCLE function RadToCycle rad Float Float Radtocycle konvertiert den Parameter rad einen Winkel im Bogenma in einen Winkel in Vollkreisen 1 Vollkreis 27 rad Siehe auch DegToGrad DegToRad RadToDeg RadToGrad und CycleToRad program Example37 mathex ex37 pp Beispiel f r die Funktion RadToCycle uses Math begin WriteLn RadToCycle 2 pi 8 6 WriteLn RadToCycle pi 8 6 WriteLn RadToCycle pi 2 8 6 end RADTODEG function RadToDeg rad Float Float RadToDeg wandelt den Parameter rad einen Winkel im Bogenma in einen Winkel in Grad um 180 entsprechen n rad Siehe auch DegToGrad DegToRad RadToCycle RadToGrad und CycleToRad program Example38 mathex ex38 pp Beispiel f r die Funktion RadToDeg uses Math begin WriteLn RadToDeg 2 pi 8 6 WriteLn RadToDeg pi 8 6 WriteLn RadToDeg pi 2 8 6 end RADTOGRAD function RadToGrad rad Float Float RadToGrad wandelt den Parameter rad einen Winkel im Bogenma in einen Winkel in Gon um 200 Gon entsprechen rn rad Siehe auch DegToGrad DegToRad RadToCycle RadToDeg und CycleToRad program Example39 mathex ex39 pp Beispiel f r die Funktion RadToGrad uses Math begin WriteLn RadToGrad 2 pi 8 6 WriteLn RadToGrad pi 8 6 WriteLn RadToGrad pi 2 8 6 end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 028 Kapitel 4 Referenz der RTL Online D
53. 040CB3D 0x0040C481 Wird auch die Unit lineinfo eingebunden oder der Schalter gl gesetzt gibt HeapTrc auch die Dateinamen und Zeilennummerninformation in der R ckverfolgung aus Marked memory at 00410DA0 invalid Wrong size 128 allocated 64 freed 0x004094B8 0x0040D8F9 main line 25 of heapex pp 0x0040D231 Call trace for block 0x00410DA0 size 128 0x0040D8ED main line 23 of heapex pp 0x0040D231 Falls hier Zeilen ohne Dateiname Zeilennummer auftauchen enth lt die entsprechende Unit keine Debuginformationen C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 14 Unit HeapTrc Konstanten Typen Variablen O41 4 14 1 Konstanten Typen Variablen Konstanten add_tail Boolean True Falls add_tail auf True gesetzt ist die Voreinstellung erstreckt sich die Pr fung auch auf den Speicher direkt hinter dem belegten Speicher HaltOnError Boolean True Falls HaltOnError auf True gesetzt wird wird ein unzul ssiger Aufruf von FreeMem den Speichermanager veranlassen eine halt Anweisung auszuf hren Im Standardfall ist diese Konstante auf True gesetzt HaltOnNotReleased Boolean False HaltOnNotReleased kann auf True gesetzt werden um die DumpHeap Prozedur anzuhal ten Exitcode 203 falls vom Programm beim Ausf hren des Speicherdumps noch nicht s mtlicher Speicher freigegeben wurde Falls die typisierte Konstante auf False gesetzt ist Voreinstellung kehrt DumpHeap einfach zur ck keepreleased Boolean
54. 28 end begin SetExtraInfo SizeOf Marker SetMarker Writeln Part 1 Partl Writeln Part 2 Part2 end SETHEAPTRACEOUTPUT procedure SetHeapTraceQutput const name String SetHeapTraceOutput legt den Dateinamen in den die Informationen zur Heapverfolgung geschrieben werden fest In der Voreinstellung werden die Daten auf die Standardausga be geschrieben diese Prozedur erlaubt es die Daten in eine Datei mit dem vollstandigen Namen name zu schreiben Fehler Wenn die Datei nicht geschrieben werden kann treten beim Schreiben der Nach verfolgung Fehler auf Siehe auch SetHeapExtralnfo 4 15 Unit Lineinfo Die Unit Lineinfo stellt eine Routine zur Verf gung um die Debuginformationen aus einer ausf hrbaren Datei auszulesen falls diese Debuginformationen enth lt und Quell textinformationen zu dieser Adresse zu erfahren Sie arbeitet mit Stabs Debug informationen Um Debuginformationen vom Typ DWARF auszulesen mu statt Lineinfo die Unit LnfoDwrf eingebunden werden 4 15 1 Prozeduren und Funktionen GETLINEINFO function GetLineInfo addr ptruint var func String var source String var line LongInt Boolean GetLineInfo liefert die Quelltextzeileninformation zur Adresse addr Diese Daten werden in der Stabs Debuginformation in der Binardatei gesucht Wurde die Datei ohne Debu ginformationen kompiliert wird nichts zurtickgemeldet Bei einer erfolgreichen Suche meldet die Funktion den Wert True und f l
55. 32V2 und Win32 von Free Pascal enthalten GetShortName ndert die Dateinamensangabe in p ber einen API Aufruf in dessen 8 3 Gegenst ck Ergebnis ist der kurze Dateiname zum langen Dateinamen in p Die Funktion gibt True zur ck wenn der API Aufruf erfolgreich war Diese Funktion wird nur beim DOS Extender unter Windows 95 und h her ben tigt Fehler Ist der API Aufruf nicht erfolgreich meldet die Funktion False zur ck Siehe auch GetLongName Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O56 Kapitel 4 Referenz der RTL Online Daten GETTIME procedure GetTime var hour Word var minute Word var second Word var sec100 Word GetTime liefert die Systemzeit Hour wird im 24 Stunden System angegeben Die Minuten werden in minute die Sekunden in second und die Hundertstelsekunden in sec100 zu r ckgegeben Hinweis Bestimmte Betriebssysteme wie beispielsweise Amiga OS setzen das Feld sec100 immer auf Null Siehe auch GetDate und SetTime program Example3 dosex ex3 pp Beispiel f r die Funktion GetTime uses Dos function LO w Word String var s String begin Str w s if w lt 10 then LO 0 s else LO s end var Hour Min Sec HSec Word begin GetTime Hour Min Sec HSec WriteLn Die aktuelle Uhrzeit WriteLn LO Hour LO Min LO Sec end GETVERIFY procedure GetVerify var Verify Boolean GetVerify liefert den Stat
56. Computer amp Literatur C L Micha l Van Canneyt Free Pascal 2 Handbuch und Referenz 12 aktualisierte Auflage Zus tzliche Online Daten zum Buch ad Deutsches Originalhandbuch Software Free Pascal ist ein moderner und plattformunabh ngiger Compiler f r die Programmiersprache Object Pascal Er bildet auch die Unterlage f r die plattform bergreifende grafische Entwicklungsumgebung Lazarus Buch Zu Free Pascal gibt es im Internet eine mehrtausendseitige Dokumentation die f r diese autori sierte deutsche Fassung bersetzt und ediert wurde Diese deutsche Version enth lt in teilweise gestraffter und erg nzter Form das Benutzerhandbuch die komplette Sprach beschreibung die Erl uterung aller Kommandozeilenschalter und Metabefehle sowie die Beschrei bung der Codeerzeugung die f r die Optimierung von Programmen und das Verst ndnis des Compilers unumg nglich ist Weiterhin enth lt das Buch die bersetzung der Referenz der wich tigsten Units der Laufzeitbibliothek von Free Pascal Autor Micha l Van Canneyt ist langj hriger Free Pascal Core Entwickler und zeichnet au er da er der urspr ngliche Maintainer der Linux Version ist und sich heute vorwiegend um die Klassenbibliotheken k mmert auch f r die Dokumentation des Projekts verantwortlich Die vorliegende Dokumentation die im englischen Original mehrere Tausend Sei ten umfa t entstand im Laufe mehrerer Jahre und wird st ndig an die neuen Funkti
57. Die vollst ndige Pfadangabe der gefundenen Datei wird zur ckgeliefert DirList mu eine Liste von Verzeichnissen sein die durch Strichpunkte getrennt werden Falls keine Datei gefunden wurde wird eine leere Zeichenfolge zur ckgeliefert Hinweis Unter unixartigen Systemen kann als Trenner in DirList auch der dort f r Pfad trennungen bliche Doppelpunkt angegeben werden Siehe auch FExpand program Examplel0 dosex ex10 pp Beispiel f r die Funktion FSearch uses Dos var s PathStr begin s FSearch ParamStr 1 GetEnv PATH if s then WriteLn ParamStr 1 nicht im Suchpfad gefunden else Writeln ParamStr 1 im Suchpfad befinden unter s end FSPLIT procedure FSplit path PathStr var dir DirStr var name NameStr var ext ExtStr FSplit zerlegt einen vollst ndigen Dateinamen path in die drei Teile Pfad dir Dateiname name und Suffix ext Unter Linux gilt als Endung die Folge der Buchstaben die hinter dem letzten Punkt stehen Bei DOS gibt es eine Ausnahme wenn LFNSupport False ist denn dann ist die Endung alles hinter dem ersten Punkt Siehe auch FSearch program Examplel2 dosex ex12 pp Beispiel f r die Funktion FSplit uses Dos var dir Dirstr name NameStr ext ExtStr begin FSplit ParamStr 1 dir name ext WriteLn Gesplittet wird ParamStr 1 in C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS GetCBreak O53 Wr
58. Event Zeiger auf den Record TMouseEvent TMouseDriver record UseDefaultQueue Boolean InitDriver procedure DoneDriver procedure DetectMouse function Byte ShowMouse procedure HideMouse procedure GetMouseX function Word GetMouseY function Word GetMouseButtons function Word SetMouseXY procedure x Word y Word GetMouseEvent procedure var MouseEvent TMouseEvent PollMouseEvent function var MouseEvent TMouseEvent Boolean PutMouseEvent procedure const MouseEvent TMouseEvent end Mit dem Record TMouseDriver wird ein Maustreiber in der Funktion SetMouseDriver definiert Seine Felder m ssen vor dem Aufruf der Funktion SetMouseDriver gef llt sein TMouseEvent packed record buttons Word x Words C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 22 Unit Mouse DetectMouse 0127 y Word Action Word end Das Ereignis TMouseEvent ist der zentrale Datentyp der Unit Mouse es beschreibt alle Ereignisse Das Feld Buttons beschreibt welche Buttons beim Auftreten des Ereignisses gedr ckt waren die Felder x und y enthalten die Position an der das Ereignis eintrat Action gibt an was der Fall war als das Ereignis eintrat Die Felder Buttons und Actions k nnen auf die Konstanten im Interface der Unit untersucht werden Variablen MouseButtons Byte Diese Variable speichert die Position des letzten bekannten Maus MouselntFlag Byte Diese Variabl
59. Fehler Es wird 1 zur ckgegeben wenn ein Fehler auftritt oder eine falsche Laufwerks nummer zur ckgegeben wurde program Example6 dosex ex6 pp Beispiel f r die Funktionen DiskSize und DiskFree uses Dos begin WriteLn Die Partition ist DiskSize 0 Byte gro WriteLn Aktuell sind DiskFree 0 Byte frei end DISKSIZE function DiskSize drive Byte Int64 DiskSize liefert die absolute Gr e eines Laufwerks in Byte Der Parameter Drive gibt das zu untersuchende Laufwerk an Dieser Parameter ist 1 f r Laufwerk a 2 f r Laufwerk b und so weiter Der Wert 0 liefert den Speicher des aktuellen Laufwerks C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS DosExitCode 049 Nur f r unixartige Betriebssysteme Diskfree und Disksize ben tigen eine Datei auf dem ausgew hlten Laufwerk da dies von der Systemfunktion statfs verlangt wird Vier Dateinamen werden von der Unit DOS vorinitialisiert f r das aktuelle Laufwerk fd0 f r das erste Floppy Laufwerk fd1 f r das zweite Floppy Laufwerk f r die erste Festplatte Es k nnen jedoch bis zu 26 verschiedene Laufwerke angegeben werden Um ein weiteres nicht vordefiniertes Laufwerk hinzuzuf gen wird AddDisk aufgerufen Fehler 1 wenn ein Fehler auftritt oder eine falsche Laufwerksnummer zur ckgegeben wird Ein Beispiel ist unter DiskFree zu finden Siehe auch DiskFree und
60. Minfo Record wird vom Signal bertragungssystem verwendet und sollte nicht direkt benutzt werden PSEMun TSEMun TSEMun record case LongInt of 0 val LongInt 1 buf PSEMid ds 2 arr PWord 3 padbuf PSeminfo 4 padpad Pointer end Der variante Record TSEMun eigentlich eine C Union wird im semctl Befehl verwendet TShmid_ds record shm_perm TIPC_Perm shm_segsz cint shm_atime time_t shm_dtime time_t shm_ctime time_t shm_cpid ipc_pid t shm_Ipid ipc_pid_t shm_nattch Word shm_npages Word shm_pages Pointer attaches Pointer end Die Struktur TSHMid_ds ermittelt oder setzt im Befehl shmctl die Einstellungen die sich auf den gemeinsam genutzten Speicher beziehen TSHMinfo shmmax shmmin shmmni shmseg shmall record Cine cint int cint cint end Der TSHMinfo Record wird intern im System des gemeinsam nutzbaren Speichers ver wendet der Programmierer darf nicht direkt auf einen solchen Record zugreifen Die Unit enth lt au erdem eine ganze Reihe vorgefertigter Zeiger auf die zusammenge setzten Datentypen PIPC_Perm TIPC_Perm Zeiger auf den Record TIPC_Perm PMSG TMSG Zeiger auf den Record TMSG C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc ftok 097 PMSGbuf TMSGbuf Zeiger auf den Record TMsgBuf PMSGinfo TMSGinfo Zeiger auf den Record TMSGinfo PMSQid_ds TMSQid_ds
61. Move Dest PChar Source PChar L SizeInt PChar Kopiert L Zeichen von Source nach Dest Dabei wird kein terminierendes Nullzeichen bertragen Die Funktion gibt Dest zur ck Siehe auch StrLCopy StrCopy und SysUtils StrMove program Examplel0 stringex ex10 pp Beispiel f r die Funktion StrMove uses Strings const Pl PChar Das ist ein PChar String var P2s PChars begin P2 StrAlloc StrLen Pl 1 StrMove P2 P1 StrLen P1 1 WriteLn P2 P2 StrDispose P2 end j P2 Pl STRNEW function StrNew p PChar PChar Kopiert p auf den Heap und gibt einen Zeiger auf die Kopie zur ck Fehler Die Funktion gibt NIL zur ck wenn nicht genug Speicher f r die Kopie verf gbar ist Siehe auch StrCopy StrDispose und SysUtils StrNew program Examplel6 stringex ex16 pp Beispiel f r die Funktion StrNew uses Strings const Pl PChar Das ist ein PChar String C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 18 Unit Strings StrPas O65 var P2 PChar begin P2 StrNew P1 if Pl P2 then WriteLn Das kann nicht passieren else WriteLn P2 P2 StrDispose P2 end STRPAS function StrPas p PChar ShortString Konvertiert den nullterminierten String p in einen Pascal String um und gibt ihn als Funktionsergebnis zur ck Der Ergebnisstring wird bei einer L nge von 255 Zeichen abgeschnitten Siehe auch StrPCopy und SysUtils StrPas prog
62. N function Mean const Data array of Extended Float function Mean const Data PExtended const N LongInt Float Mean liefert den Durchschnittswert von Data Die zweite Form nimmt einen Zeiger auf ein Array mit N Werten entgegen Siehe auch MeanAndStdDev MomentSkewKurtosis und Sum C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math MeanAndStdDev O23 program Example27 mathex ex27 pp Beispiel f r die Funktion Mean uses Math type TExArray array 1 100 of Float var I Integer ExArray TExArray begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 WriteLn Mean Mean ExArray 8 4 WriteLn Mean b Mean ExArray 1 100 8 4 end MEANANDSTDDEV procedure MeanAndStdDev const Data array of Extended var Mean Float var StdDev Float procedure MeanAndStdDev const Data PExtended const N LongInt var Mean Float var StdDev Float MeanAndStdDev berechnet den Durchschnitt und die Standardabweichung von Data und gibt die jeweiligen Ergebnisse in Mean und StdDev zur ck StdDev ist 0 wenn das Array nur einen Wert enth lt Die zweite Form nimmt einen Zeiger auf ein Array mit N Werten entgegen Siehe auch Mean Sum SumOfSquares und MomentSkewKurtosis program Example28 mathex ex28 pp Beispiel f r die Funktion MeanAndStdDev uses
63. OUNT function GetLockScreenCount Integer GetLockScreenCount gibt die aktuelle Sperrstufe an Ist sie Null aktualisiert UpdateScreen den Bildschirm Siehe auch LockScreenUpdate UnlockScreenUpdate und UpdateScreen program Example6 videoex ex6 pp Beispiel fiir die Funktion GetLockScreenCount uses Video Keyboard Vidutil var I LongInt S String begin InitVideo InitKeyboard TextOut 1 1 Press key until new text appears UpdateScreen False Randomize for I 0 to Random 10 1 do LockScreenUpdate I 0 C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video GetVideoDriver 0121 while GetLockScreenCount lt gt 0 do begin Inc I Str 1 5 UnlockScreenUpdate GetKeyEvent TextOut 1 1 UnLockScreenUpdate had to be called S times UpdateScreen False end TextOut 1 2 Press any key to end UpdateScreen False GetKeyEvent DoneKeyboard DoneVideo end GETVIDEODRIVER procedure GetVideoDriver var Driver TVideoDriver GetVideoDriver ergibt den aktuellen Bildschirmtreiber Record in Driver Auf diese Weise kann einerseits der aktuelle Treiber geklont werden andererseits k nnen dann einzelne Bereiche mit SetVideoDriver berschrieben werden GETVIDEOMODE procedure GetVideoMode var Mode TVideoMode GetVideoMode gibt die Einstellungen des aktuellen Bildschirmmodus zur ck Die Felder row und col der Record Variable Mode enthalt
64. RC gepr ft was beim Erkennen des berschreibens von Speicher hilft useheaptrace Boolean True Diese Variable mu beim Programmstart gesetzt sein damit die Umgebungsvariable ausgewertet wird Typdeklarationen TDisplayExtralnfoProc procedure var ptext Text p Pointer TDisplayExtralnfo ist ein prozeduraler Typ der im Aufruf von SetHeapExtralnfo einen Speicherbereich anzeigt der vorher mit TFillExtraInfoProc gef llt wurde TFillExtralnfoProc procedure p Pointer TFillExtraInfoProc ist ein prozeduraler Typ der in der Routine SetExtraInfo einen Spei cherbereich mit zus tzlichen Daten f r die Anzeige von Daten belegt Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 042 Kapitel 4 Referenz der RTL Online Daten 4 14 2 Prozeduren und Funktionen DUMPHEAP procedure DumpHeap DumpHeap gibt eine Aufstellung der Speicherbelegung an die Standardausgabe aus Der Befehl wird automatisch von der Unit Heaptrc aufgerufen wenn das Programm beendet wird dies geschieht durch Installation einer Exit Prozedur aber die Prozedur kann auch an jeder anderen Stelle aufgerufen werden Siehe auch MarkHeap SETHEAPEXTRAINFO procedure SetHeapExtralnfo size PtrUInt Fillproc TFillExtralnfoProc DisplayProc TDisplayExtraInfoProc SetExtraInfo speichert Extrainformationen in den Bl cken die die Unit Heaptrc belegt wenn GetMem Aufrufe verfolgt werden Size gibt die Gr e in Byte an d
65. Referenz der RTL Online Daten Logging False end function IsKeyLogging Boolean begin IsKeyLogging Logging end function LogGetKeyEvent TKeyEvent var K TKeyEvent begin K OldkeyboardDriver GetKeyEvent if Logging then begin Write KeyLog TimeStamp Key event Writeln KeyLog KeyEventToString TranslateKeyEvent K end LogGetKeyEvent K end procedure LogInitKeyBoard begin OldKeyBoardDriver InitDriver Assign Keylog logFileName Rewrite KeyLog Active True StartKeyLogging end procedure LogDoneKeyBoard begin StopKeyLogging Close KeyLog Active False OldKeyBoardDriver DoneDriver end procedure SetKeyLogFileName FileName String begin if not Active then LogFileName FileName end initialization GetKeyBoardDriver OldKeyBoardDriver NewKeyBoardDriver OldKeyBoardDriver NewKeyBoardDriver GetKeyEvent LogGetKeyEvent NewKeyBoardDriver InitDriver LogInitKeyboard NewKeyBoardDriver DoneDriver LogDoneKeyboard LogFileName keyboard log Logging False SetKeyboardDriver NewKeyBoardDriver end Dieser Treiber kann ber einen anderen bergest lpt werden solange er in der Uses Klausel nach der richtigen Treiber Unit eingebunden wird und wenn der echte Treiber in seinem Initialisierungsbereich den Treiber Record setzt Durch Erweiterung dieser Beispiel Unit kann ein Treiber geschrieben werden der Ta stendr cke aufnehmen und sp t
66. Time program Example4 dosex ex4 pp Beispiel f r die Funktionen PackTime und UnPackTime uses Dos var DT DateTime Time LongInt begin with DT do begin Year 2012 Month 11 Day 11 Hour 11 Min 11 Sec 11 end PackTime DT Time WriteLn Gepackte Zeit Time UnPackTime Time DT WriteLn Wieder ausgepackt with DT do begin Writeln Jahr Year WriteLn Monat Month Writeln Tag Day Writeln Stunde Hour WriteLn Minute Min WriteLn Sekunde Sec end end SETCBREAK procedure SetCBreak BreakValue Boolean SetCBreak setzt den Status der berpr fung der Eingabe von Strg Pause Wenn BreakValue False ist wird nur bei E A Operationen der Zustand von Strg Pause ber pr ft ansonsten bei jedem Systembefehl Dieser Aufruf ist nur unter DOS verf gbar bei anderen Betriebssystemen macht er nichts Siehe auch GetCBreak SETDATE procedure SetDate year Word month Word day Word SetDate legt das systeminterne Datum fest wobei Year eine Zahl zwischen 1980 und 2099 ist Auf Linux werden f r diesen Aufruf Administrator Rechte ben tigt Auf anderen Unix Systemen ist der Aufruf derzeit wirkungslos Siehe auch GetDate und SetTime SETFATTR procedure SetFAttr var f attr Word SetFAttr setzt die Dateiattribute der Dateivariable F die eine typisierte untypisierte oder Textdatei sein kann F mu zugewiesen darf aber nicht ge ffnet
67. ToHs 089 NToHs function NToHs Net Word Word ntohs stellt sicher da die Byte in Net die aus dem Netzwerk erhalten wurden in der richtigen Reihenfolge f r die Verarbeitung auf der Hostmaschine sind und gibt das Er gebnis in richtiger Reihenfolge aus Siehe auch htonl htons und ntohl RECV function Recv Sock LongInt var Buf BufLen LongInt Flags LongInt LongInt Recv liest h chstens Addrlen Byte vom Socket Sock in die Adresse Addr ein Es mu eine Verbindung zum Socket bestehen Flags kann folgende Werte annehmen wa 1 Daten au erhalb des Bands verarbeiten Process out of band data j 4 Roufing umgehen und eine direkte Schnittstelle ansprechen 22 Auf eine vollstandige Anfrage oder die Meldung eines Fehlers warten Die Funktionen liefern die Anzahl an Byte die tats chlich vom Socket gelesen werden oder 1 falls ein Fehler bemerkt wurde Fehler Fehler werden in SocketError gespeichert Es k nnen folgende Werte auftreten SYS_EBADF Der Socketdeskriptor ist ungiltig Der Socket ist nicht verbunden Die angegebene Adresse ist au erhalb der Adre raums Die angefragte Operation w rde die Applikation blockieren SYS_ENOBUFS Dem System steht nicht genug freier Pufferspeicher zur Verf gung Siehe auch Send RECVFROM function RecvFrom Sock LongInt var Buf Buflen LongInt Flags LongInt var Addr var AddrLen LongInt LongInt RecvFrom empf ngt Daten aus de
68. UnixSockAddr Die Funktion Connect gibt bei Erfolg einen Datei deskriptor zur ck Fehler Bei einem Fehler ergibt die Funktion den Wert 1 Fehler werden in SocketError bergeben Siehe auch fpListen fpBind und fpAccept Listingbeispiele hierzu sind sockex sockcli pp und sockex pfinger pp bei der Funktion connect FPGETPEERNAME function fpGetPeerName s cint name PSockaddr Namelen psocklen cint fpGetPeerName gibt den Namen der an den angegebenen Socket S angebundenen Einheit zur ck Der Socket mu damit dieser Aufruf funktioniert verbunden sein Name sollte auf einen Speicherplatz zeigen der gro genug ist den Namen aufzunehmen der verf gbare Platz wird in Namelen bergeben Wurde die Funktion erfolgreich ausge f hrt enth lt Name den Namen und Namelen dessen L nge Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 082 Kapitel 4 Referenz der RTL Online Daten SYS_EBADF Der Socket Deskriptor ist ungiltig Das System besitzt nicht genug Puffer um die Operation durchf hren zu k nnen Addr zeigt aus dem g ltigen Adre bereich heraus SYS_ENOTCONN Der Socket ist nicht verbunden Siehe auch fpConnect fpSocket FPGETSOCKNAME function fpGetSockName s cint name psockaddr namelen psocklen cint fpGetSockName gibt den aktuellen Namen des angegebenen Sockets s
69. Verftigung in der man meh rere Events gleichzeitig zwischenspeichern kann andere machen das nicht In solchen Fallen ist eine Event Warteschlange f r ein einziges Ereignis in PollMouseEvent verf gbar Siehe auch GetMouseButtons GetMouseX und GetMouseY GETMOUSEX function GetMouseX Word GetMouseX gibt die aktuelle horizonatale Position der Maus auf dem Textbildschirm an dabei wird mit dem Wert 0 an der linken Seite des Bildschirms begonnen Siehe auch GetMouseButtons GetMouseEvent und GetMouseY program Example4 mouseex ex4 pp Beispiel f r die Funktionen GetMouseX GetMouseY uses Mouse var X Y Word begin InitMouse WriteLn Maus in das Quadrat 10 10 bewegen um zu beenden repeat X GetMouseX C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 22 Unit Mouse GetMouseY 0129 Y GetMouseY WriteLn X Y Xs 5 oY FJ until X 9 and Y 9 DoneMouse end GETMOUSEY function GetMouseY Word GetMouseY gibt die vertikale Position der Maus auf dem Bildschirm zur ck Y wird in Zeichen angegeben wobei am oberen Bildschirmrand mit dem Wert 0 begonnen wird Ein Beispiel f r diese Funktion ist bei GetMouseX gezeigt Siehe auch GetMouseButtons GetMouseEvent und GetMouseX HIDEMOUSE procedure HideMouse HideMouse blendet den Mauszeiger aus Diese Funktion funktioniert nicht unbedingt auf allen Systemen Ob sie Auswirkungen zeitigt h ngt vom Treiber ab Siehe auc
70. _addr ist ein Record f r das Beschreiben einer allgemeinen IPv6 Adresse in_addr packed record case Boolean of true s_addr cuint32 inaddr_t cuint32 false s_bytes packed array 1 4 of Byte end in_addr erfa t die allgemeine Internet Socket Adresse linger packed record l_onoff cint l_linger cint end Dieser Record wird im Aufruf von setsockopt ben tigt um Linger Optionen zu definieren PIn6Addr pin6_addr Zeiger auf den Datentyp in6_addr pin6_addr in6 addr Zeiger auf den Datentyp Tin6_addr PInAddr pin_addr Ein Alias f r pin_addr PInetSockAddr psockaddr_in Zeiger auf den Datentyp sockaddr_in PInetSockAddr6 psockaddr_in6 Zeiger auf den Datentyp sockaddr_in6 type pin _addr in_addr Zeiger auf den Record in_addr plinger linger Zeiger auf den Datentyp linger psockaddr sockaddr Zeiger auf eine TSockAdadr psockaddr_in sockaddr_in Zeiger auf den sockaddr_in psockaddr_in6 sockaddr_in6 Zeiger auf sockaddr_in6 psockaddr un sockaddr_un Zeiger auf sockaddr_un sa_family_t cushort Datentyp f r die Adre familie Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O76 Kapitel 4 Referenz der RTL Online Daten sockaddr packed record if sa_len is defined sa family t is smaller ifdef SOCK_HAS SINLEN sa_len cuchar endif case Integer of 0 sa_family sa_family_t sa_ data packed array 0 13 of cui
71. _perm mode mode if semctl id 0 IPC_SET opts lt gt 1 then WriteLn Set permissions to mode else DoError Couldn t set permissions end procedure PrintSem ID LongInt var I cnt LongInt begin cnt getMembercount ID WriteLn Semaphore ID has cnt Members for I 0 to cnt 1 do DispVal id i end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0104 Kapitel 4 Referenz der RTL Online Daten procedure Usage begin WriteLn Usage semtool c reate lt count gt WriteLn 1 ock lt Member gt WriteLn u nlock lt Member gt WriteLn d elete WriteLn m ode lt mode gt Halt 1 end function StrToInt S String LongInt var M LongInt C Integer begin Val S M C if C lt gt 0 then DoError StrToInt S StrToInt M end var Key TKey ID LongInt const ipckey 0 begin if ParamCount lt 1 then Usage key ftok ipckey 1 Ord s case UpCase Paramstr 1 1 of C begin if ParamCount lt gt 2 then Usage CreateSem key StrToInt ParamStr 2 end L begin if ParamCount lt gt 2 then Usage ID OpenSem key LockSem ID StrToInt ParamStr 2 end U begin if ParamCount lt gt 2 then Usage ID OpenSem key UnLockSem ID StrToInt ParamStr 2 end M begin if ParamCount lt gt 2 then Usage ID OpenSem key ChangeMode ID StrToInt ParamStr 2
72. aben Stabs Debuginformationen Standardabweichung String konvertieren String kopieren String Speicher reservieren f r Tastaturereignis Tastaturevent Tastaturtreiber Tastaturtreiber schreiben Tastaturzugriffsschicht Tastenevent bersetzen Textbildschirm Farben Text Eingabecursor Aussehen Thread Manager Verzeichnis Attribut AD Video Subsystem initalisieren Volume Label ne Vorzeichen e Parameters ausgeben 29 W Warteschleife uneneeeene WideString Manager WideStrings Winkel nach Bogenma Wochentag Umgebungsvariablen Anzahl Stringvergleich Unicode Zeichen Tastaturevent Systemdatei Integer Gr e Systemdatum x Unix Zeitstempel al Systemuhr annneeeeeenssseeennnnseseesnnnnssseennnnnne Unix Zeitstempel konvertieren v Tangens Varianz esta 33 Tangens Hyperbolicus p Tastatur unter Unix Versionsnummer des Betriebs systems Kernelversion u nen 49 Zufallselement Zweierlogarithmus
73. als sogenannte Nicht Optionen angesehen Falls die Zeichenkette mit einem eingeleitet wird werden alle Nicht Optionen behandelt als w ren sie Parameter einer Option mit dem Zeichen 0 Dies ist n tzlich bei Anwendungen die ihre Optionen in der exakten Reihenfolge des Auftretens ben tigen Falls das erste Zeichen von Shortopts keine der oben genannten M glichkeiten ist werden Optionen und Nicht Optionen so umsortiert da zuerst alle Optionen und dann alle Nicht Optionen stehen Aus diesem Grund ist es m glich da Optionen und Nicht Optionen in zuf lliger Reihenfolge auf der Komman dozeile stehen Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O38 Fehler Fehler werden durch Riickgabe des Zeichens gemeldet OptOpt liefert dann das Zeichen das den Fehler verursachte Falls OptErr gleich true ist schreibt getopt eine Feh Kapitel 4 Referenz der RTL Online Daten lermeldung an die Standardausgabe Siehe auch GetLongOpts getopt program testopt optex optex pp Beispiel f r die Funktion getopts G ltige Aufrufe an dieses Programm sind optex verbose addme delete you optex append create child optex ab c me d you und so weiter uses getopts var c Char optionindex LongInt theopts array 1 7 of TOption begin with theopts 1 do begin name add has_arg 1 flag NIL value 0 end with theopt
74. andt die die L nge AddrLen hat Fehler Bei einem Fehler wird der Wert 1 zur ckgemeldet Siehe auch Socket Send und RecvFrom SETSOCKETOPTIONS function SetSocketOptions Sock LongInt Level LongInt OptName LongInt const OptVal optlen LongInt LongInt SetSocketOptions legt die Verbindungsoptionen fiir den Socket Sock fest Der Socket kann auf verschiedenen Levels geandert werden Der Parameter Level bestimmt dies und kann folgende Werte annehmen a SOL SOCKET IM den Socket selbst zu ndern eer XXX Setzen Sie Level auf die Nummer des Protokolls das die Optionen interpretieren soll Weitere Informationen ber diesen Befehl stehen in den Unix Manpages unter setsockopt Fehler werden in SocketError gespeichert wobei folgende Fehlercodes m glich sind SYS_EBADF Der Socketdeskriptor ist ung ltig Z p Siehe auch GetSocketOptions SHORTHOSTTONET function ShortHostToNet Host Word Word ShortHostToNet wandelt eine Host Portnummer in eine Netzwerk Portnummer um Dabei wird die Endianness der Hostmaschine ber cksichtigt Siehe auch ShortNetToHost HostToNet NToHS und HToNS SHORTNETTOHOST function ShortNetToHost Net Word Word ShortNetToHost wandelt eine Netzwerk Portnummer in eine Host Portnummer um Dabei wird auf die Endianness der Hostmaschine R cksicht genommen Siehe auch ShortNetToHost HostToNet NToHS und HToNS C 2012 C amp L Computer und Literaturverlag GmbH Kap
75. angsam wenn eine gro e Zahl von Suchrecords ge ffnet wird Deshalb wurde um das FindFirst FindNext System zu beschleunigen der FindClose Befehl implementiert der einen nicht mehr ben tigten Suchvorgang abschlie t und das zugeh rige Verzeichnis schlie t Wenn man einen SearchRec also nicht mehr ben tigt teilt man das der Unit DOS mit dem Aufruf FindClose mit womit der SearchRec geschlos sen und der Tabellenslot freigegeben wird Hinweis Es wird empfohlen unter Linux nach Dateien mit dem Befehl Glob zu suchen Fehler Fehler werden ber DosError bekanntgegeben Siehe auch FindFirst und FindNext FINDFIRST procedure FindFirst const path PathStr attr Word var f SearchRec FindFirst leitet die Suche nach der durch path spezifizierten Datei mit den Attributen Attr ein Die Prozedur speichert alle ben tigten Daten um die Suche weiterzuf hren im Re cord f Path kann Wildcard Zeichen das Zeichen entspricht einer beliebig langen Folge von beliebigen Zeichen entspricht einem einzigen beliebigen Zeichen enthalten Wird eine den Angaben entsprechende Datei gefunden wird diese in F gespeichert und 0 in DosError gespeichert Eine mit FindFirst initialisierte Suche kann mit FindNext fortgesetzt und FindClose beendet werden Unter OS 2 k nnen keine zwei unterschiedlichen FindFirst Aufruf parallel gestartet wer den Es mu immer zuerst der eine Suchlauf beendet werden bevor der zweite gestartet werden kann H lt man sich
76. anten DATEIMODUS KONSTANTEN Die folgenden Konstanten werden im Feld Mode des Record TextRec ben tigt Sie geben Auskunft ber den Dateimodus der Textein und Textausgabe siehe Tabelle 04 6 C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS Dateiattribute 045 Konstante Beschreibung Wert fmclosed Datei ist geschlossen 0D7BOh fminout Datei darf gelesen und geschrieben werden 0D7B3h Tabelle 04 6 Die Dateimodus Konstanten DATEIATTRIBUTE Die Dateiattribute Konstanten werden in FindFirst und FindNext f r die Definition ben tigt nach welchen Dateitypen zus tzlich zu normalen Dateien solchen ohne Attribute gesucht werden soll Diese Flags gelten au erdem in den Routinen SetFAttr und GetFAttr f r das Setzen und Auslesen der Attribute von Dateien Zusammengestellt sind sie in Tabelle 04 7 Konstante Beschreibung Wert readonly Schreibschutzattribut Olh Attribut f r Systemdatei Attribut f r Verzeichnisse anyfile Attribut das auf alle Dateien pa t Tabelle 04 7 M gliche Dateiattribute L NGENBESCHREIBUNGEN Die Unit DOS enth lt einige Beschreibungen f r L ngenangaben Konstante Wert Beschreibung _filerecnamelength 255 Maximallange des Dateinamensanteils im Record FileRec FileNameLen 255 Maximale L nge eines Dateinamens TextRecNameLength 256 Maximale Lange eines Dateinamens in TextRec CPU FLAGS Die in der Unit definierte
77. ariance eh VB V Variance ExArray 1 100 WriteLn Variance b V 8 4 end EINVALIDARGUMENT Die Ausnahme die ausgel st wird wenn einer mathematischen Funktion ein ung ltiger Parameter bergeben wird Operatoren Die Unit Math erweitert den Operator siehe Unit System um die Kompatibilit t zu Float und Int64 Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O34 Kapitel 4 Referenz der RTL Online Daten 4 12 Unit dynlibs Die Unit dynlibs stellt die Unterst tzung f r das dynamische Laden von Bibliotheksrouti nen aus DLLs Windows OS 2 und Shared Libraries Linux und unixartige Plattformen zur Verf gung Sie ist nur auf Plattformen mit dynamischen Bibliotheken verf gbar also Windows Windows CE OS 2 Netware Darwin und den unixartigen Plattformen Die Funktionalit t die in dieser Unit zur Verf gung gestellt wird kann aber damit die Porta bilit t gewahrt bleibt nur einen Teil des kompletten Leistungsumfangs der jeweiligen Einzelplattform umfassen Auf Unix Derivaten bedeutet das Einbinden dieser Unit da das Programm gegen die C Laufzeitbibliothek gelinkt wird da die meisten Shared Libra ries und auch der dynamische Linker in C geschrieben sind 4 12 1 Konstanten Typen Variablen Konstanten NilHandle TLibHandle 0 NilHandle ist der richtig zugewiesene NIL Handle der bei einem Fehler von LoadLibrary zur ckgegeben wird Je nach Plattform kann die Defin
78. asiert Die Funktion sollte True zur ckge ben wenn die Daten richtig gemeldet wurden und False wenn in Index ein ung ltiger Wert angegeben wurde Ist diese Funktion nicht implementiert gibt die allgemeine Routine die Daten des aktuellen Bildschirmmodus zur ck wenn f r Index der Wert 0 angegeben ist GetCapabilitie Ist diese Funktion nicht implementiert wird von der allgemeinen Funk tion O das hei t keine F higkeiten zur ckgegeben Die folgende Unit zeigt wie ein Bildschirmtreiber mit einem Treiber der Debuginforma tionen in eine Datei ausgibt berschrieben wird Die Unit kann in Beispielprogramme eingebunden werden indem sie einfach der Uses Klausel hinzugef gt wird Das Setzen von DetailedVideoLogging auf True erzeugt ein detailliertes Protokoll bremst dabei aber das Programm stark ab unit viddbg interface uses video procedure StartVideoLogging procedure StopVideoLogging function IsVideoLogging Boolean procedure SetVideoLogFileName FileName String const DetailedVideoLogging Boolean False implementation uses sysutils keyboard var NewVideoDriver OldVideoDriver TVideoDriver Active Logging Boolean LogFileName String Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0112 Kapitel 4 Referenz der RTL Online Daten VideoLog Texts function TimeStamp String begin TimeStamp FormatDateTime hh nn ss Time
79. aten RANDG function RandG Mean Float StdDev Float Float RandG liefert eine Zufallszahl die wenn in gro er Zahl produziert eine Gau sche Nor malverteilung mit dem Durchschnitt Mean und eine Standardabweichung StdDev besitzt Siehe auch Mean Stddev und MeanAndStdDev program Example40 mathex ex40 pp Beispiel f r die Funktion RandG uses Math var i Integer ExArray array 1 10000 of Float Mean StdDev Float begin Randomize for i Low ExArray to High ExArray do ExArray i RandG 1 0 2 MeanAndStdDev ExArray Mean StdDev WriteLn Mean Mean 8 4 WriteLn StdDev StdDev 8 4 end RANDOMFROM function RandomFrom const AValues array of Double Double Overload function RandomFrom const AValues array of Integer Integer Overload function RandomFrom const AValues array of Int64 Int64 Overload RandomFrom liefert ein Zufallselement aus dem Array AValues Der R ckgabewert ist vom selben Type wie die Elemente des Arrays Siehe auch System Random und RandomRange RANDOMRANGE function RandomRange const aFrom Integer const aTo Integer Integer function RandomRange const aFrom Int64 const alo Int64 Int64 RandomRange liefert ein zufalliges Element aus dem Bereich AFrom bis ATo Die beiden Bereiche brauchen nicht in aufsteigender Reihe zu sein die Obergrenze ist nicht im gene rierten Wert enthalten die Untergrenze kann es aber sein Siehe auch System Rand
80. aterThanValue High TValueRelationship Der erste Wert ist gr er als der zweite Infinity 1 0 0 0 Der Wert ist unendlich LessThanValue Low TValueRelationship Der erste Wert ist niedriger als der zweite MaxExtended 1 1e 4932 Der Maximalwert des Datentyps Extended MaxFloat MaxExtended Der Maximalwert des Datentyps Float MinExtended 3 4e 4932 Minimaler Wert am n chsten an Null des Datentyps Extended MinFloat MinExtended Minimaler Wert am n chsten an Null des Datentyps Float NaN 0 0 0 0 Der Wert ist keine Zahl NegativeValue Low TValueSign Der Wert ist negativ NegInfinity 1 0 0 0 Der Wert ist minus Unendlich PositiveValue High TValueSign Der Wert ist positiv ZeroValue 0 Der Wert ist 0 Float Extended PFloat Float Alle Berechnungen werden mit dem Datentyp Float durchgef hrt Das erlaubt es die Unit mit unterschiedlichen Float Typen zu kompilieren um die jeweils gew nschte Genauig keit einzustellen Der Zeigertyp PFloat ein Zeiger auf den Datentyp Float wird in Funk tionen ben tigt die ein beliebig gro es Array von Werten akzeptieren C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math Konstanten Typdeklarationen Variablen O11 PInteger ObjPas PInteger Zeiger auf den Datentyp Integer TFPUException exInvalidOp exDenormalized exZeroDivide exOverflow exUnderflow exPrecision Dieser Da
81. bers Sie sollte den Bildschirm auf Basis des Inhalts des Arrays VideoBuf aktualisieren Dieser Vorgang wird optimiert indem die Werte gegen die des Arrays OldVideoBuf abgeglichen werden Nach dem Aktualisieren des Bildschirms mu die Prozedur Update Screen den Puffer OldVideoBuf eigenst ndig aktualisieren Ist der Parameter Force auf True gesetzt wird der gesamte Bildschirm aktualisiert nicht nur die ge nderten Werte C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video Allgemeines 0111 ClearScreen Wenn es eine schnellere M glichkeit gibt den Bildschirm zu l schen als alle Zeichenzellen mit Leerzeichen zu berschreiben kann das an dieser Stelle eingebaut werden Ist diese Funktion im Treiber nicht implementiert schreibt die allgemeine Routine Leerzeichen in alle Bildschirmzellen und ruft anschlie end die Prozedur Update iese Funktion setzt talls sie verf gbar ist den gew nschten schirmmodus Sie sollte True zur ckgeben wenn der Bildschirmmodus 7 gesetzt werden konnte und False wenn nicht nun GetVideoModeCount Sollte die Zahl der unterst tzten Bildschirmmodi melden Falls keine unterschiedlichen Bildschirmmodi erkannt werden sollte diese Funktion nicht implementiert werden die allgemeine Routine gibt 1 zur ck was f r den aktuellen Modus steht GetVideoModeData Diese Funktion sollte die Daten f r den Modus mit dem angegebenen Index melden Index ist nullb
82. cccsccccceeeseceeeeeeeneeeeeesneeeeeseaaes 66 4 19 2 Prozeduren und Funktionen uuueeeeeeesessssnnnnnenneesssssnnnnneennnesesnnnennnn 77 4 20 1 Konstanten Typen Variablen cccsccceceeececeeeeeeeteeeeeeeneeeeeseanes 93 4 20 2 Prozeduren und Funktionen uuueeeeeesesssssnnnennesssssnnnnnnnnnnnesesnnnnnnnn 97 O6 Inhalt 4 21 Unit Video cosssosssssssssssssnnnnnnsssnnssssnnnnnnnnssnnnnssssnnnnnnnssnnnnnnnns 108 4 21 1 Schreiben eines eigenen Bildschirmtreibers 110 4 21 2 Konstanten Typen Variablen cceeeesscceeeeeeeseeeeeseteeeeesenneeees 113 4 21 3 Prozeduren und Funktionen uuusssssssnssnneneneneennnnenneennnnen nen 118 4 22 Unit Mouse uu000ss0s0osnssnssnnnnsnssnnnnsnnsnnnnssnsnnnnnsnssnnnnsnnsnnnnssnsnnnnnse 125 4 22 1 Konstanten Typen Variablen cceeeesseceeceseeneceeeenteeeeessnneeees 126 4 22 2 Prozeduren und Funktionen uuusssssseeesnnennnenennennneennnnen nen 127 4 23 Unit Keyboard s 22 lt 0s52825080350s5 2800880000808 60 seen nshschee nasser 131 4 23 1 Spezielle Hinweise zu Unix cnnesennnsssnnesssenenenennnnneennnnnnen ne 131 4 23 2 Tastaturtreiber schreiben cccccesccceeessceeeeeseeeeeeeeeteeeeeseneeees 132 4 23 3 Konstanten Typen Variablen ccceeescceeceseeeeeeseeteeeeesenseeees 137 4 23 4 Prozeduren und Funktionen uuussssssnnsssnnnnensennnnenennnnnennen 140 Stichwor
83. d StrToHostAddro HOsTTONET function HostToNet Host in_addr in_addr function HostToNet Host LongInt LongInt HostToNet wandelt eine Hostadresse in eine Netzwerkadresse wobei die Endianness der Hostmaschine ber cksichtigt wird Die Adresse kann mit Anf hrungszeichen und Punkt rennern oder als LongInt angegeben werden Siehe auch NetToHost NToHS HToNS ShortHostToNet und ShortNetToHost HTONL function htonl host LongInt LongInt htonl sorgt daf r da die Byte in host f r den Versand ber das Netzwerk in der richtigen Reihenfolge stehen und gibt das richtig sortierte Ergebnis zur ck Siehe auch htons ntohl und ntohs Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet Oss Kapitel 4 Referenz der RTL Online Daten HTONS function htons host Word Word htons sorgt daf r da die Byte in host f r den Versand ber das Netzwerk in der richtigen Reihenfolge stehen und gibt das richtig sortierte Ergebnis zur ck Siehe auch htonl ntohl und ntohs LISTEN function Listen Sock LongInt MaxConnect LongInt Boolean Listen wartet auf maximal MaxConnect Verbindungen vom Socket Sock der vom Typ SOCK_STREAM oder Sock_SEQPACKET sein mu Die Funktion liefert true falls eine Verbindung angenommen wurde false bei einem Fehler Fehler Fehler werden in SocketError gespeichert Folgende Werte sind m glich SYS EBADE Der Socketdeskriptor ist ung ltig
84. d sec100 enthalten die Minuten Sekunden und Hundertstel einer Sekunde der zu setzenden Zeitangaben Unter Linux ben tigt dieser Aufruf root Rechte bei anderen unixartigen Betriebssyste men macht der Aufruf nichts Siehe auch GetTime und SetDate SETVERIFY procedure SetVerify Verify Boolean SetVerify setzt oder entfernt das DOS Flag Verify Wenn Verify True ist pr ft DOS Daten die auf die Festplatte geschrieben wurden indem es sie wieder einliest und die Pr fsum men vergleicht Falls Verify False ist werden die geschriebenen Daten nicht berpr ft Hinweis Auf Nicht DOS Systemen ausgenommen OS 2 Anwendungen unter reinem DOS ist Verify immer True Siehe auch SetVerify SWAPVECTORS procedure SwapVectors SwapVectors vertauscht den Inhalt der internen Interruptvektorentabelle mit dem aktuel len Inhalt der Interruptvektoren Der Befehl sollte vor und nach einem Exec Aufruf aus C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 18 Unit Strings StrAlloc O59 gef hrt werden damit dem aufgerufenen Programm die standardm igen Interruptvek toren zur Verf gung stehen Hinweis Bei diversen Betriebssystemen ist diese Prozedur nur als leerer Rumpf imple mentiert Siehe auch Exec und SetIntVec UNIXDATETODT procedure UnixDateToDt SecsPast LongInt var Dt DateTime DTToUnixDate konvertiert den Unix Zeitstempel in SecsPast in eine g ltige DateTime in DT Dies ist eine interne Funktion
85. dIn SIn Buffer WriteLn Buffer Close Sout end program pfinger sockex pfinger pp uses Sockets Errors var Addr TInetSockAddr LongInt Sin Sout Text Line String begin Addr family AF_INET port 79 in network order Addr Sin_port 79 shl 8 localhost 127 0 0 1 in network order Addr Sin_addr s_addr 1 shl 24 or 127 S Socket AF_INET SOCK_STREAM 0 if not Connect S Addr Sin Sout then begin WriteLn Couldn t connect to localhost WriteLn Socket error strerror SocketError Halt 1 end ReWrite Sout Reset Sin WriteLn Sout ParamStr 1 Flush Sout while not EoF Sin do begin ReadLn Sin line WriteLn line end Close Sin Close Sout end FPACCEPT function fpAccept s cint Addrx psockaddr Addrlen PSocklen cint fpAccept nimmt eine Verbindung vom Socket s entgegen der auf eine Verbindung ge lauscht hat Wird eine Verbindung akzeptiert wird ein Dateideskriptor eine positive Zahl zur ckgegeben beim Auftreten eines Fehlers der Wert 1 ber den zur ckgegebe nen Socket d rfen keine weiteren Verbindungen angenommen werden F r diesen Zweck bleibt der Original Socket ge ffnet C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets fpBind O81 Der Aufruf fpAccept f llt die Adresse in Addrx und setzt die Lange in Addrlen Addrx sollte auf einen Bereich mit gen gend Platz zeigen Addrlen
86. de TRANSLATEKEYEVENTUNICODE function TranslateKeyEventUniCode KeyEvent TKeyEvent TKeyEvent TranslateKeyEventUniCode f hrt die Unicode bersetzung von KeyEvent durch Diese Funktion ist noch nicht auf allen Plattformen implementiert Fehler Ist die Funktion auf der gew hlten Zielplattform nicht implementiert wird der ErrorCode der Unit System auf errKbdNotImplemented gesetzt Siehe auch TranslateKeyEvent Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0143 Kapitel 4 Referenz der RTL Online Daten C 2012 C amp L Computer und Literaturverlag GmbH A Ansi trings nn dann 59 Archiv Attribut 145 Array gr ter kleinster Wert in 22 ASCII 0 Zeichen 61 Attribut f r alle Dateien eee 45 B Bereichspriifung c secseessseseeseeseesseeees 19 Betriebssystemaufruf Bibliothek freigeben 35 Bibliothek laden 3b Bibliotheken dynamische 34 Bildschirm aktualisieren 109 Bildschirm l schen Bildschirm Array f physikalischen 118 Bildschirm schreiben in Bildschirm Zeichen auf Bildschirm Aktualisierung Bildschirmmodus 2 111 121 Bildschirmposition an die Daten geschrieben werden Bildschirmpuffergr e nnee Bildschirmtreiber abschalten Bildschirm Vorder Hintergrundfarbe 108 Bildschirm Z
87. den Puffers entity in Addr und seine L nge in Addrlen Vor dem Aufruf sollte Addr auf gen gend Speicher verweisen und Addrlen sollte die Gr e dieses Speichers vor dem Aufruf enthalten Die anderen Varianten des Aufrufs von Accept mit den Text und File Parametern sind Kombinationen aus der normalen Funktion Accept und an schlie enden Aufrufen der Funktionen Sock2Text beziehungsweise Sock2File Diese erwei terten Funktionen liefern bei erfolgreicher Ausf hrung ein True und sonst den Wert False Fehler Bei einem Fehler wird von der einfachen Variante der Funktion der Wert 1 zu r ckgeliefert und SocketError auf einen der folgenden Werte gesetzt SYS _EBADF Der Socketdeskriptor ist ung ltig _SYS_EOPNOTSUPP Der Socket Typ unterst tzt keine Listen Operation SYS _EWOULDBLOCK Die angefragte Operation w rde den Proze blockieren Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 073 Kapitel 4 Referenz der RTL Online Daten Siehe auch Listen Connect und Bind program server sockex socksvr pp program to test Sockets unit by Michael van Canneyt and Peter Vreman Server Version First Run sock_svr to let it create a socket and then sock_cli to connect to that socket E uses Sockets var FromName String Buffer String 255 5 LongInt Sin Sout Text SAddr TInetSockAddr procedure perror const S String begin WriteLn S SocketError Halt
88. die Funktion erfolgreich abgeschlossen liefert sie einen Socket Deskriptor der an einen nachfolgenden Aufruf von fpBind bergeben werden kann beim Auftreten eines Fehlers gibt die Funktion 1 zur ck Ein Beispiel ist bei der Funktion Accept gezeigt Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen SYS_EPROTONOSUPPORT Der Protokolltyp oder das angebene Protokoll wird in dieser Domain nicht unterst tzt Die proze bezogene Deskriptortabelle ist voll Die Adresse ist gesch tzt und das Programm hat nicht das Recht Zr sie zu ffnen enum SYS_ENOBUFS Das System besitzt nicht genug freie Puffer um die Operation durchf hren zu k nnen Siehe auch SocketPair Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O86 Kapitel 4 Referenz der RTL Online Daten FPSOCKETPAIR function fpSocketPair d cint xtype cint protocol cint sv pcint cint fpSocketPair erzeugt zwei Sockets in der Domain D vom Typ xType mit dem Protokoll Protocol Das Paar wird in sv zur ckgegeben die beiden Sockets unterscheiden sich nicht voneinander Die Funktion gibt bei einem Fehler den Wert 1 zur ck geht alles glatt meldet sie den Wert 0 Fehler Fehler werden in SocketError gespeichert es sind die selben Codes wie bei der Funktion Socket Siehe auch Str2UnixSock Addr GETPEERNAME function GetPeerName Sock LongInt var Addr var Addrlen LongInt LongIn
89. dr_in6 Alias f r den Datentyp sockaddr_in6 TIn_addr in_addr Alias f r den Record Datentyp in_addr TLinger linger Alias fiir den Datentyp linger TSockAddr sockaddr Alias fiir sockaddr TSockArray array 1 2 of LongInt Datentyp der vom Aufruf SocketPair zur ckgegeben wird TSocket LongInt Alias f r einfachere Kylix Portierung TSockPairArray array 0 1 of LongInt Ein Socket Array f r den Aufruf SocketPair TUnixSockAddr packed record family sa_family t path array 0 107 of Char end Alias fiir den Datentyp sockaddr_un 4 19 2 Prozeduren und Funktionen ACCEPT function Accept Sock LongInt var Addr var Addrlen LongInt LongInt function Accept Sock LongInt var addr TInetSockAddr var SockIn File var SockOut File Boolean function Accept Sock LongInt var addr TInetSockAddr var SockIn Text var SockOut Text Boolean function Accept Sock LongInt var addr String var SockIn Text var SockOut Text Boolean function Accept Sock LongInt var addr String var SockIn File var SockOut File Boolean Accept nimmt die Verbindung von einem Socket Sock an der auf eine Verbindung wartet Falls eine Verbindung akzeptiert wird wird ein Dateideskriptor zurtickgeliefert bei einem Fehler 1 Uber den zur ckgegebenen Socket d rfen keine weiteren Verbindungen ange nommen werden Der bergebene Socket bleibt ge ffnet Der Accept Befehl speichert die Adresse des verbinden
90. e for I Low ExArray to High ExArray do ExArray i Random I Random 100 WriteLn MaxIntValue ExArray end MAXVALUE function maxvalue const data array of Extended Extended function maxvalue const data PExtended const N Integer Extended function maxvalue const data array of Integer Integer function maxvalue const data PInteger const N Integer Integer MaxValue ergibt den gr ten Wert im Array Data das Integer oder Gleitkommazahlen enthalten kann Der R ckgabewert ist vom gleichen Typ wie die Elemente im Array Die dritte und vierte Variante nehmen einen Zeiger auf ein Array mit N Integer oder Gleit kommawerten entgegen Siehe auch MaxIntValue MinValue und MinIntValue program Example26 mathex ex26 pp Beispiel f r die Funktion MaxValue mode objfpc Sicherstellen daB Integer Werte 32 Bit groB sind uses Math var i 1 4100 f_array array 1 100 of Float i_array array 1 100 of Integer Pf_array PFloat PI array PInteger begin Randomize Pf_array f_array 1 Pi_array i_array 1 for i Low f_array to High f_array do f_array i Random Random 100 for i Low i_array to High i_array do i_array i Random I Random 100 WriteLn Max Float MaxValue f_array 8 4 WriteLn Max Float b MaxValue Pf_array 100 8 4 WriteLn Max Integer MaxValue i_array 8 WriteLn Max Integer b MaxValue Pi_array 100 8 end MEA
91. e und line die Zeilennummer in der Datei zu addr Fehler Wurden keine Debuginformationen gefunden gibt die Funktion den Wert False zur ck 4 17 Unit DOS Die Unit DOS bietet den Zugriff auf eine Reihe betriebssystemspezifischer Aufrufe f r Dateien auf das Dateisystem sowie Datum und Uhrzeit Mit der Ausnahme von PalmOS ist diese Unit auf allen von Free Pascal unterst tzten Plattformen verf gbar Die Unit wurde urspr nglich von Florian Kl mpfl f r DOS geschrieben von Mark May auf Linux portiert und von Micha l Van Canneyt erweitert Der inzwischen veraltete Amiga Port wurde von Nils Sjoholm geschrieben Bei anderen Betriebssystemen als DOS geht ein Teil der Funktionalit t der Unit verloren da die Routinen entweder nicht implementiert werden k nnen oder nutzlos sind Sind die Funktionen tats chlich implementiert und nicht nur als Prozedurrumpf aus Gr nden der Abw rtskompatibilit t verhalten sie sich auf den verschiedenen Betriebssystemen gleich Die Unit DOS dient der Kompatibilit t zum veralteten 16 Bit Turbo Pascal Compiler und wird nicht mehr aktiv weiterentwickelt das Interface ist eingefroren und die Funk tionen und Prozeduren werden nur noch f r das Portieren alter Turbo Pascal Routinen gepflegt F r das Entwickeln neuer und moderner Programme wird dringend empfohlen anstelle dieser Unit die neuere Unit SysUtils einzubinden Die Unit DOS bindet die Unit BaseUnix ein 4 17 1 Konstanten Typen Variablen Konst
92. e speichert die Position des letzten internen Maus buttonstatus Sie sollte nicht verwendet werden MouseWhereX Word Diese Variable speichert die Position der letzten bekannten MouseWhereY Word Diese Variable speichert die Position des letzten bekannten Y Cursorposition Sie sollte nicht verwendet werden 4 22 2 Prozeduren und Funktionen DETECTMOUSE function DetectMouse Byte DetectMouse stellt fest ob am System eine Maus angeschlossen ist Wird keine Maus ge funden wird der Wert 0 zur ckgeliefert Ist die Suche erfolgreich meldet die Funktion die Zahl der Maustasten Diese Funktion sollte aufgerufen werden nachdem der Maustreiber initialisiert wurde Siehe auch InitMouse und DoneMouse program Examplel mouseex exl pp Beispiel f r die Funktion DetectMouse uses Mouse var Buttons Byte begin InitMouse Buttons DetectMouse if Buttons 0 then WriteLn Keine Maus angeschlossen else WriteLn Buttons Tasten Maus gefunden DoneMouse end DONEMOUSE procedure DoneMouse DoneMouse f hrt den Maustreiber herunter wobei der vom Treiber belegte Speicher freigegeben oder m gliche Maushooks aus dem Speicher entfernt werden Die Funktio nen der Unit Mouse funktionieren nach diesem Aufruf nicht mehr wird die Prozedur ein zweites Mal aufgerufen kehrt sie sofort zur ck Bevor DoneMouse erneut aufgerufen werden kann mu InitMouse ein weiteres Mal aufgerufen werden Ein Beispiel f r diese Prozedur i
93. ePos Word end FileRec ist f r die interne Repr sentation von typisierten und untypisierten Dateien Text dateien werden in den folgenden Typen gespeichert const filerecnamelength 255 type FileRec packed record Handle Mode LongInt RecSize Sizelnt _private array 1 3 SizeOf SizeInt 5 SizeOf Pointer of Byte UserData array 1 32 of Byte name array 0 filerecnamelength of Char end Die Definition des Textpuffers const TextRecNameLength 256 TextRecBufSize 256 type TextBuf array 0 TextRecBufSize 1 of Char TextRec packed record Handle THandle Mode LongInt bufsize Sizelnt _private Sizelnt bufpos Sizelnt bufend Sizelnt C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS Typdeklarationen 047 bufptr Textbuf openfunc Pointer inoutfunc Pointer flushfunc Pointer closefunc Pointer UserData array 1 32 of Byte name array 0 TextRecNameLength 1 of Char buffer TextBuf end Hinweis Diese Deklaration ist nicht bin rkompatibel zu ihrem Gegenst ck aus Turbo Pascal da sich die Gr e der einzelnen Felder ge ndert hat Dies ist der Record der CPU Register f r den Aufruf der Prozedur MsDos IFDEF CPUI386 IFNDEF HAS REGISTERS Registers packed record case i Integer of O ax fls Da 25 exs fos dk fAs bp f5y sis bl fes ds T7 es f8 flags fs gs Word 1 al ah f9 10 bl bh fl
94. el LongInt OptName LongInt var OptVal var optlen LongInt LongInt GetSocketOptions liefert die Verbindungsoptionen f r den Socket Sock Diese Optionen k nnen von verschiedenen Levels gewonnen werden Der daf r vorgesehene Parameter level kann die folgenden Werte annehmen SOL SOCKET ________Der Socket selbst soll die Optionen bereitstellen XXX Setzen Sie Level auf die Nummer des Protokolls das die Option inter pretieren soll Um mehr Informationen ber diesen Befehl zu erhalten schlagen Sie in den Unix Manpages unter getsockopt nach Fehler Fehler werden in SocketError gespeichert Folgende Werte sind m glich SYS_EFAULT Addr zeigt auf einen Bereich au erhalb des Adre raums Siehe auch SetSocketOptions HOSTADDRTOSTR function HostAddrToStr Entry in_addr AnsiString HostAddrToStr wandelt die Hostadresse in Entry in einen menschenlesbaren String mit Punkttrennern um Dabei handelt es sich prinzipiell um die selbe Funktion wie Ne tAddrToStr aber mit den Byte in korrekter Reihenfolge Siehe auch NetAddrToStr StrToHostAddr und StrToNetAddr HosTADDRTOSTR6 function HostAddrToStr6 Entry Tin6 addr AnsiString HostAddrToStr6 wandelt die IPV6 Hostadresse in Entry in einen menschenlesbaren String mit Punkttrennern um Dabei handelt es sich prinzipiell um die selbe Funktion wie NetAddrToStr6 aber mit den Byte in korrekter Reihenfolge Siehe auch NetAddrToStr StrToHostAddr StrToNetAddr un
95. en Out of band Data 4 Das Routing soll umgangen und eine direkte Schnittstelle angespro chen werden Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen SYS_EBADF Der Socket Deskriptor ist ungiltig SYS _ENOTSOCK Der Deskriptor ist kein Socket SYS_EMSGSIZE Die Meldung konnte nicht atomar gesendet werden SYS_ENOBUFS Das System besitzt nicht genug freien Puffer um die Operation durchf hren zu k nnen Siehe auch fpRecv FPSENDTO function fpSendTo s cint msg pointer len size_t flags cint tox psockaddr tolen tsocklen ssize_t fpSendTo sendet Daten aus dem Puffer Msg mit der L nge len durch den Socket s mit der Option Flags Die Daten werden an die Adresse tox gesandt die die L nge toLen besitzt Fehler Beim Auftreten eines Fehlers gibt die Funktion den Wert 1 zur ck Siehe auch fpSocket fpSend und fpRecvFrom FPSETSOCKOPT function fpSetSockOpt s cint level cint optname cint optval pointer optlen tsocklen cint fpSetSockOpt setzt die Verbindungsoptionen f r den Socket s Der Socket kann auf ver schiedenen Ebenen ver ndert werden wie im Parameter level angegeben level kann einen der folgenden Werte annehmen SOL SOCKET Um den Socket selbst zu manipulieren XXX Setzt Level auf XXX die Nummer des Protokolls das die Option interpretieren soll Die aktuelle Option wird im Puffer auf den optval zeigt gespeichert Seine Lange wird mit
96. en die Gr e des aktuellen Bildschirms und Mode Color den Wert True wenn der Bildschirm farbf hig ist Siehe auch SetVideoMode und GetVideoModeData program Example7 videoex ex7 pp Beispiel f r die Funktion GetVideoMode uses Video Keyboard Vidutil var M TVideoMode S String begin InitVideo InitKeyboard GetVideoMode M if M Color then TextOut 1 1 Der aktuelle Modus unterst tzt Farbe else TextOut 1 1 Der aktuelle Modus kann keine Farben Str M Row S TextOut 1 2 Zahl der Zeilen S Str M Col S TextOut 1 3 Zahl der Spalten S TextOut 1 4 Ende mit beliebiger Taste UpdateScreen False GetKeyEvent DoneKeyboard DoneVideo end GETVIDEOMODECOUNT function GetVideoModeCount Word GetVideoModeCount gibt die Zahl der Bildschirmmodi die der aktuelle Treiber unter st tzt zur ck Erlaubt der Treiber das Umschalten der Bildschirmmodi nicht retourniert die Funktion die Zahl 1 Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0122 Kapitel 4 Referenz der RTL Online Daten In Verbindung mit GetVideoModeData k nnen ber diese Funktion die Daten der unter st tzten Bildschirmmodi abgefragt werden Siehe auch GetVideoModeData und GetVideoMode program Example8 videoex ex8 pp Beispiel f r die Funktion GetVideoModeCount uses Video Keyboard VidUtil procedure DumpMode M TVideoMode Index Integer var S Stri
97. en in Pair zur ckgegeben und sind unver einbar Die Funktion liefert 1 bei einem Fehler und 0 bei Erfolg zur ck Fehler Fehler werden in SocketError gemeldet und sind die gleichen wie in Socket Siehe auch Str2UnixSockAdadr STR2UNIXSOCKADDR procedure Str2UnixSockAddr const addr String var t TUnixSockAddr var len LongInt Str2UnixSockAddr ndert eine Unix Socket Adresse in einen String einer Struktur TU nixSockAddr die an eine Bind Anweisung bermittelt werden kann Siehe auch Socket und Bind STRTOHOSTADDR function StrToHostAddr IP AnsiString in_addr StrToHostAddr wandelt den String in IP in eine Hostadresse um und gibt diese zur ck Fehler Bei einem Fehler wird die Hostadresse mit Nullen gef llt Siehe auch NetAddrToStr HostAddrToStr und StrToNetAdar STRTOHOSTADDR6 function StrToHostAddr6 IP String Tin6 addr StrToHostAddr6 wandelt den String in IP in eine IPv6 Hostadresse um und gibt diese zur ck Fehler Bei einem Fehler wird die Hostadresse mit Nullen gef llt Siehe auch NetAddrToStr6 HostAddrToStr6 und StrToHostAddr STRTONETADDR function StrToNetAddr IP AnsiString in_addr StrToNetAddr wandelt den String in IP in eine Netzwerkadresse um und gibt diese zu r ck Fehler Bei einem Fehler wird die Netzwerkadresse mit Nullen gef llt Siehe auch NetAddrToStr HostAddrToStr und StrToHostAddr STRTONETADDR6 function StrToNetAddr6 IP AnsiString Tin6 addr StrToNetAddr wandelt den Stri
98. end STRLCOMP function StrLComp Strl PChar Str2 PChar L SizeInt Sizelnt Vergleicht maximal L Zeichen der beiden nullterminierten Strings Str1 und Str2 Das Ergebnis ist ein negativer SizeInt wenn Str1 lt Str2 0 wenn Str1 Str2 und ein posi tiver SizeInt wenn Strl gt Str2 Siehe auch StrComp StrIComp StrLIComp und SysUtils StrLComp C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 18 Unit Strings StrLCopy 063 program Example8 stringex ex8 pp Beispiel f r die Funktion StrLComp uses Strings const Pl PChar Das ist der erste String P2 PChar Das ist der zweite String var L Sizelnt begin Write Pl und P2 sind if StrComp Pl P2 lt gt 0 then Write NICHT Write gleich Die ersten Los ds while StrLComp P1 P2 L 0 do Inc L Dec L WriteLn 1 Zeichen sind identisch end STRLCOPY function StrLCopy Dest PChar Source PChar MaxLen SizeInt PChar Kopiert MaxLen Zeichen von Source nach Dest und macht aus Dest einen nullterminier ten String Fehler Keine es findet keine L ngen berpr fung statt Siehe auch StrCopy StrECopy und SysUtils StrLCopy program Example5 stringex ex5 pp Beispiel f r die Funktion StrLCopy uses Strings const P PChar 123456789ABCDEF var PP PChar begin PP StrAlloc 11 WriteLn Die ersten 10 Zeichen von P StrLCopy PP P 10 StrDispose PP end STRLEN function StrLen p PC
99. end D Begin ID OpenSem Key RemoveSem Id end P begin ID OpenSem Key PrintSem Id end else Usage end end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc semget 0105 SEMGET function semget key TKey nsems cint semflg cint cint semget gibt die ID des durch key beschriebenen Signalsystems zur ck In Abh ngigkeit vom Inhalt des Parameters semfls k nnen die folgenden Aktionen durchgef hrt werden Verkn pfung ber OR m glich IPC CREAT Das System wird angelegt falls es noch nicht vorhanden ist na IPC_EXCL Dieses Flag kann nur zus tzlich zur IPC_CREAT Option angegeben werden und bewirkt einen Fehler wenn das Signalsystem bereits vorhanden ist Die Flags k nnen mit Zugriffsrechten ber OR verkn pft werden die die gleichen Werte wie ihre Pendants im Dateisystem haben Falls ein neues Signalsystem erzeugt wurde kann dieses nsems Signale aufnehmen Fehler Bei einem Fehler wird 1 zur ckgegeben und IPCError wird gesetzt Siehe auch ftok semop und semctl SEMOP function semop semid cint sops PSEMbuf nsops cuint cint semop f hrt eine Reihe von Operationen auf verschiedene Signale durch sops zeigt auf ein Array vom Typ TSEMbuf Das Array sollte nsops Elemente enthalten Das Feld einer TSEMbuf Struktur TSEMbuf record sem num Word sem op Integer sem _flg Integer end sollte mit folgenden Werten gef llt sein
100. er und Literaturverlag GmbH Kapitel 4 11 Unit Math InRange 019 INRANGE function InRange const AValue Integer const AMin Integer const AMax Integer Boolean function InRange const AValue Int64 const AMin Int64 const AMax Int64 Boolean InRange ergibt True wenn AValue sich im Bereich von AMin bis AMax befindet und False wenn Value au erhalb des angegebenen Bereichs liegt Siehe auch EnsureRange INTPOWER function IntPower base Float const Exponent Integer Float Intpower ergibt base hoch exponent wobei der Exponent eine ganze Zahl ist Fehler Hat base den Wert 0 und ist der Exponent negativ erfolgt ein berlauf Siehe auch Power program Examplel8 mathex ex18 pp Beispiel f r die Funktion IntPower uses Math procedure DoIntpower X Extended Pow Integer begin WriteLn X 8 4 Pow 2 IntPower X Pow 8 4 end begin DoIntpower 0 DoIntpower 1 DoIntpower 2 DoIntpower 4 DoIntpower 2 DoIntpower 2 DoIntpower 2 DoIntpower 4 end WERNF WOOO U ee Se aS oooooo0o0 1 IsINFINITE function IsInfinite const d Double Boolean IsInfinite gibt True wenn der Double Wert d unendlich ist Siehe auch IsZero und IsInfinite ISNAN function IsNan const d Single Boolean Overload function IsNan const d Extended Boolean Overload IsNan ergibt True wenn der Double d keine Zahl Not A Number enth lt also einen Wert der nicht korrek
101. er RTL Online Daten ifdef NetBSD OS NetBSD endif ifdef Solaris OS Solaris endif ifdef DOS OS Dos endif Die Liste in diesem Beispiel ist nicht vollst ndig Version DosVersion WriteLn Current OS version is Lo Version Hi Version end DTTOUNIXDATE function DTToUnixDate DT DateTime LongInt DTToUnixDate wandelt den DOS DateTime DT in einen Unix Zeitstempel um DTTo UnixDate ist eine interne Funktion f r Unix Plattformen sie sollte in der Anwendungs entwicklung keine Anwendung finden Siehe auch UnixDateToDT PackTime UnpackTime GetTime und SetTime ENVCOUNT function EnvCount LongInt EnvCount ermittelt die Anzahl der Umgebungsvariablen Siehe auch EnvStr und GetEnv ENVSTR function EnvStr Index LongInt String EnvStr gibt das Name Wert Paar an der Position Index aus der Liste der Umgebungs variablen zur ck Der Index des ersten Paares ist Null Fehler Die L nge ist auf 255 Zeichen begrenzt Siehe auch EnvCount und GetEnv program Examplel3 dosex ex13 pp Beispiel f r die Funktionen EnvCount und EnvStr uses Dos var i LongInt begin WriteLn Current Environment is for i 1 to EnvCount do WriteLn EnvStr i end EXEC procedure Exec const path PathStr const comline ComStr Exec f hrt das Program in Path mit den Optionen die in ComLine gegeben sind aus Nachdem das Program beendet wurde kehrt die Prozedur zu
102. er auch wieder abspielen kann auf diese Weise k nnen Tastaturmakros aufgenommen und abgespielt werden Dieser Treiber wiederum kann auf jeden anderen aufgesetzt werden C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard Allgemeines 0135 Tasten Scancodes Eine gro e Zahl besonderer Tasten wird mit ihren DOS Scancodes im zweiten Byte des Datentyps TKeyEvent belegt Eine vollst ndige Liste aller Scancodes als hexadezimale Werte steht in Tabelle 04 12 wobei es sich dabei um die Liste der Tasten handelt wie sie im voreingestellten Tasten bersetzungsmechanismus angegeben sind Beim Schreiben eines Tastaturtreibers m ssen diese Konstanten entweder von den verschiedenen Tasten Event Funktionen zur ckgemeldet werden oder es mu der Hook TranslateKeyEvent vom Treiber implementiert werden Code Taste Code Taste Code Taste m NOKey Keine Taste 3D 70 AIFS Strg Einfg Strg Entf Strg Ende t R ckschritt Strg Pos1 Shift Tab 18 Alt O 52 Einfg 82 Alt GrauMinus 1B Alt 55 Shift E2 oa a TE engl Alt RgtBrack 1F Alt S 57 Shift F4 87 Shift F 11 Strg F11 Shift F8 Alt F11 Shift F10 27 Alt O 5F Strg F2 8F Strg 5 ohne Num engl At SemiCol n E 28 AlrA engl All Quote 60 StgF3 90 Strg GrouPlys 29 Alt engl Alt OpQuote 61 Strg F4 91 Strg Tabelle 04 12 Tasten Scancodes alle Codes in hexadez Schreibweise Teil1 von 2 Download nur f r
103. er ersten Units in das Programm eingebunden zu werden die restliche Arbeit f hrt automatisch der Initialisie rungsbereich der Unit durch Prozeduren und Funktionen SETCWIDESTRINGMANAGER procedure SetCWideStringManager SetC WideStringManager setzt den WideString Manager Record der Unit System Diese Prozedur wird automatisch im Initialisierungsteil der Unit aufgerufen Download nur f r den Eigenbedart die Weiterverbreitung der Daten ist nicht gestattet 010 Kapitel 4 Referenz der RTL Online Daten 4 11 Unit Math Die Unit Math wurde urspr nglich von Florian Kl mpfl geschrieben Sie deckt mathema tische Funktionen ab die nicht in der Unit System enthalten sind Folgendes mu beim Aufrufen der Funktionen und Prozeduren aus dieser Unit beachtet werden Die Unit ist im Object Pascal Modus kompiliert weshalb alle Integer Werte 32 Bit lang sind das gilt auch f r den 64 Bit Modus Einige Funktionen sind f r Datenarrays und Gleitkommazahlen berladen Wenn mit dem Adre operator gearbeitet wird um solchen Funktionen ein Datenarray zu bergeben mu unbedingt darauf geachtet werden da die Adresse auf den richti gen Typ weist oder man schaltet die Compileroption des typisierten Adressenopera tors mit T oder TYPEDADDRESS ON ein Wird das nicht beachtet kann der Compiler nicht die gew nschte Funktion finden 4 11 1 Konstanten Typen Variablen Konstanten EqualsValue 0 Die Werte sind identisch Gre
104. ex ex15 pp Beispiel f r die Funktion GradToDeg uses Math begin WriteLn GradToDeg 100 WriteLn GradToDeg 200 WriteLn GradToDeg 300 end GRADTORAD function GradToRad grad Float Float GradtoRad konvertiert den Parameter grad einen Winkel in Gon in einen Winkel im Bogenma 200 gon sind v rad Siehe auch CycleToRad DegToGrad RadToDeg RadToGrad RadToCycle und GradToDeg program Examplel6 mathex ex16 pp Beispiel f r die Funktion GradToRad uses Math begin WriteLn GradToRad 100 WriteLn GradToRad 200 WriteLn GradToRad 300 end HYPOT function Hypot x Float y Float Float Hypot liefert die Hypotenuse des rechtwinkligen Dreiecks mit den beiden Seitenl ngen x und y Die Funktion basiert auf dem pythagor ischen Lehrsatz program Examplel7 mathex ex17 pp Beispiel f r die Funktion Hypot uses Math begin WriteLn Hypot 3 4 sollte 5 ergeben end IFTHEN function ifthen val Boolean const iftrue Integer const iffalse Integer Integer function ifthen val Boolean const iftrue Int64 const iffalse Int64 Int64 function ifthen val Boolean const iftrue Double const iffalse Double Double function ifthen val Boolean const iftrue String const iffalse String String ifthen ergibt iftrue wenn val zutrifft also True ist und iffalse wenn val nicht zutrifft also False ist Diese Funktion kann in Ausdr cken eingesetzt werden C 2012 C amp L Comput
105. ext in das Array VideoBuf geschrie ben werden Der Aufruf von UpdateScreen kopiert dann den Text in m glichst idealer Form in den Bildschirm was in diesem Kapitel auch noch an einem Beispiel gezeigt wird Das Attribut f r die Farbe ist eine Kombination aus Vordergrund und Hintergrundfarbe erg nzt um das Blinkbit Die folgenden Bitangaben beschreiben die diversen Farbkombi nationen C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video Allgemeines 0109 Bit 0 3 Die Vordergrundfarbe hierf r k nnen alle Farbkonstanten eingesetzt werden Bit4 6 Die Hintergrundfarbe sie kann auf einen Teilbereich der dunklen Farben der Farb konstanten gesetzt werden Bit 7 Das Blinkbit Ist es gesetzt blinkt das Zeichen auf dem Bildschirm Jede m gliche Farbe hat eine zugeordnete Konstante die alle in der Liste der Konstanten ab Seite O113 aufgef hrt sind Die Vordergrund und die Hintergrundfarbe k nnen auch direkt zu einem Farbattribut verschmolzen werden Attr ForeGroundColor BackGroundColor shl 4 Au erdem kann das Farbattribut auch ber ein logisches OR mit dem Blinkattribut zu sammengef gt werden um ein blinkendes Zeichen zu erreichen Attr Attr or blink Es darf aber nicht unerw hnt bleiben da diese Optionen nicht von allen Treibern unter st tzt werden Der Inhalt des Arrays VideoBuf kann ver ndert werden Das entspricht einem Schrei ben auf den Bildschirm Sind alle Daten
106. fo Pointer TErrorHandlerReturnValue Mit der Funktion TErrorHandler wird eine eigene Fehlerbehandlungsfunktion registriert diese mu einen der Werte aus Tabelle 04 10 zur ckgeben Code sollte den Fehlercode f r die Fehlerbedingung enthalten und der Parameter Info beliebige Daten die spezifisch f r den Fehlercode sind der an die Funktion bergeben wird TErrorHandlerReturnValue errRetry errAbort errContinue TErrorHandlerReturnValue gibt Fehler bekannt und reagiert entsprechend auf Fehlerbe dingungen Die Bedeutung der Felder des Aufz hlungstyps ist in Tabelle O4 10 erl utert Wert Beschreibung Z errAbort Abbrechen und Fehlercode zur ckgeben nn 7 errContinue Abbrechen ohne einen Fehlercode zu melden nn errRetry Operation wiederholen Tabelle 04 10 Die Aufz hlungswerte f r den Datentyp TErrorHandlerReturnValue TVideoBuf array 0 32759 of TVideoCell Der Datentyp TVideoBuf stellt den Bildschirm dar C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video Konstanten Typen und Variablen 0117 TVideoCell Word TVideoCell beschreibt ein Zeichen auf dem Bildschirm Eines der beiden Byte steht f r das Farbattribut mit dem das Zeichen auf dem Bildschirm angezeigt wird das andere enth lt den ASCII Code des Zeichens das abgebildet wird Die genaue Position der unterschied lichen Byte im Record ist betriebssystemspezifisch Auf den meisten Litte Endian Systemen Intel Format
107. folgenderma en aus unit vidutil interface uses video procedure TextOut X Y Word const S String implementation procedure TextOut X Y Word const S String var W P I M Word begin P X 1 Y 1 ScreenWidth M Length S if P M gt ScreenWidth ScreenHeight then M ScreenWidth ScreenHeight P Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0110 Kapitel 4 Referenz der RTL Online Daten for I 1 to M do VideoBuf P I 1 Ord S i 07 shl 8 end end 4 21 1 Schreiben eines eigenen Bildschirmtreibers Das Schreiben eines eigenen Bildschirmtreibers ist gar nicht kompliziert und bedeutet eigentlich nur da eine Reihe von Funktionen die mit SetVideoDriver registriert werden geschrieben werden m ssen Die verschiedenen zur Implementierung zur Verf gung stehenden Funktionen sind im Record TVideoDriver enthalten TVideoDriver record InitDriver procedure DoneDriver procedure UpdateScreen procedure Force Boolean ClearScreen procedure SetVideoMode function const Mode TVideoMode Boolean GetVideoModeCount function Word GetVideoModeData function Index Word var Data TVideoMode Boolean SetCursorPos procedure NewCursorX NewCursorY Word GetCursorType function Word SetCursorType procedure NewType Word GetCapabilities function Word end Es m ssen allerdings nicht alle die
108. gen der Delphi Kompatibilitat verf gbar Siehe auch UnloadLibrary GETPROCADDRESS function GetProcAddress Lib TLibHandle const ProcName AnsiString Pointer GetProcAddress stellt die selbe Funktionalit t wie die Funktion GetProcedureAddress zur Verf gung und ist wegen der Delphi Kompatibilit t verf gbar Siehe auch GetProcedureAddress GETPROCEDUREADDRESS function GetProcedureAddress Lib TLibHandle const ProcName AnsiString Pointer GetProcedureAddress gibt einen Zeiger auf die Speicherstelle des Symbols ProcName in der dynamisch geladenen Bibliothek zur ck die im Handle Lib angegeben ist Wird das Symbol nicht gefunden oder ist das Handle ung ltig meldet die Funktion den Wert NIL Unter Windows k nnen nur explizit exportierte Prozeduren oder Funktionen untersucht werden Auf unixartigen Plattformen kann jedes exportierte Symbol angefordert werden Fehler Kann das Symbol nicht gefunden werden ergibt die Funktion NIL Siehe auch LoadLibrary UnLoadLibrary LOADLIBRARY function LoadLibrary const Name AnsiString TLibHandle LoadLibrary l dt die dynamische Bibliothek Name und gibt einen Handle auf sie zur ck Kann die Bibliothek nicht in den Speicher geladen werden wird NilHandle gemeldet Es k nnen keine Voraussagen ber den Speicherplatz getroffen werden an dem sich die geladene Bibliothek befindet wenn ein relativer Pfadname angegeben wird Das Verhal ten ist hier plattformabh ngig Deshalb ist es am beste
109. gram Example20 mathex ex20 pp Beispiel f r die Funktion Inxpl uses Math begin WriteLn Inxp1 0 WriteLn Inxp1 0 5 WriteLn Inxp1 1 end LoG10 function Logl0 x Float Float Log10 ergibt den dekadischen Logarithmus von x Fehler Ist x kleiner oder gleich 0 wird ein Fehler Invalid fpu Operation ausgel st Siehe auch Idexp Inxp1 Log2 und LogN program Example21 mathex ex2l pp Beispiel f r die Funktion Log10 uses Math begin WriteLn Log10 10 8 4 WriteLn Log10 100 8 4 WriteLn Log10 1000 8 4 WriteLn Log10 1 8 4 WriteLn Log10 0 1 8 4 WriteLn Log10 0 01 8 4 WriteLn Log10 0 001 8 4 end LoG2 function Log2 x Float Float Log2 ergibt den Zweierlogarithmus von X C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math LogN O21 Fehler Ist x kleiner oder gleich 0 wird ein Fehler Invalid fpu Operation ausgel st Siehe auch LdExp LnXp1 Log10 und LogN program Example22 mathex ex22 pp Beispiel fiir die Funktion Log2 uses Math begin WriteLn Log2 2 8 4 WriteLn Log2 4 8 4 WriteLn Log2 8 8 4 WriteLn Log2 1 8 4 WriteLn Log2 0 5 8 4 WriteLn Log2 0 25 8 4 WriteLn Log2 0 125 8 4 end j LOGN function LogN n Float x Float Float LogN ergibt den Logarithmus auf Basis n von x Fehler Ist x kleiner oder gleich 0 wird ein Fehler Invalid fpu Operation ausgel st Siehe auch LdExp LnX
110. h ShowMouse program Example5 mouseex ex5 pp Beispiel f r die Funktion HideMouse uses Mouse var Event TMouseEvent Visible Boolean begin InitMouse ShowMouse Visible true WriteLn Linke Maustaste zeigt versteckt rechte Taste beendet repeat GetMouseEvent Event with Event do if Buttons MouseLeftbutton and Action MouseActionDown then begin if Visible then HideMouse else ShowMouse Visible not Visible end until Event Buttons MouseRightButton and Event Action MouseActionDown DoneMouse end INITMOUSE procedure InitMouse InitMouse initialisiert den Maustreiber Die Prozedur belegt alle ben tigten Datenstruktu ren damit die Maus funktioniert Nach dem InitMouse k nnen die anderen Mausfunk tionen aufgerufen werden Einem Aufruf von InitMouse mu beim Programmende im mer ein Aufruf von DoneMouse folgen Wird er ausgelassen ist die Maus nicht mehr brauchbar oder es kommt sogar zu Speicherl chern Ein Beispiel f r diese Prozedur ist bei den meisten anderen Mausfunktionen gezeigt Siehe auch DoneMouse und DetectMouse POLLMOUSEEVENT function Pol1MouseEvent var MouseEvent TMouseEvent Boolean PollMouseEvent pr ft ob ein Mausereignis verf gbar ist und gibt es wenn das der Fall ist in MouseEvent zur ck Das Funktionsergebnis ist in diesem Fall True Liegt kein Mausereignis Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet
111. h hlt Dabei mu aber sichergestellt sein da die Zahl der Aufrufe von LockScreenUpdate genau zur Zahl der Aufrufe von UnlockScreenUpdate pa t Siehe auch LockScreenUpdate GetLockScreenCount und UpdateScreen Ein Beispiel ist bei GetLockScreenCount gezeigt UPDATESCREEN procedure UpdateScreen Force Boolean UpdateScreen synchronisiert den aktuellen Bildschirm mit dem Inhalt des internen Puf fers VideoBuf Der Parameter Force legt fest ob der komplette Bildschirm neu gezeichnet werden soll bei Force True oder ob nur die Teile des Puffers auf den Monitor geschrie ben werden sollen die sich seit der letzten Aktualisierung ge ndert haben Die Unit Video bewahrt eine interne Kopie des letzten Bildschirms im Array OldVideoBuf Der aktuelle Inhalt von VideoBuf dagegen wird bei der Pr fung welche Teile neu geschrie ben werden m ssen abgeglichen Auf langsamen Terminals wie beispielsweise einer Linux Telnet Sitzung beschleunigt dieser Mechanismus die Bildschirmausgabe merklich Bei Plattformen bei denen die Sichtbarkeit des Mauscursors bei Bildschirmaktualisierun gen nicht garantiert ist mu der Mauszeiger nach dem Update aktualisiert werden Nor malerweise wird dazu vor dem Schreiben die Prozedur HideMouse und nach dem Update die Routine ShowMouse beide aus der Unit Mouse aufgerufen Ein Beispiel f r diese Prozedur ist bei den meisten anderen Funktionen abgebildet Siehe auch ClearScreen 4 22 Unit Mouse Die Unit Mouse
112. h vorgesehen external_codepage TEncoding internal_codepage TEncoding 4 21 3 Prozeduren und Funktionen CLEARSCREEN procedure ClearScreen ClearScreen l scht den aktuellen Bildschirm und ruft anschlie end UpdateScreen auf Beim L schen des Bildschirminhalts wird in alle Zeichenzellen des Bildschirmpuffers ein Leerzeichen und in die Farbzellen die voreingestellte Farbe Hellgrau auf Schwarz Farbat tribut 07 geschrieben Siehe auch InitVideo und UpdateScreen program testvideo videoex ex3 pp uses video keyboard vidutil var i LongInt k TKeyEvent begin InitVideo InitKeyboard for I 1 to 10 do TextOut i i Beliebige Taste l scht den Bildschirm UpdateScreen False K GetKeyEvent ClearScreen TextOut 1 1 Bildschirm ist gel scht Ende mit bel Taste UpdateScreen True K GetKeyEvent DoneKeyBoard DoneVideo end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 21 Unit Video DefaultErrorHandler 0119 DEFAULTERRORHANDLER function DefaultErrorHandler AErrorCode LongInt AErrorInfo Pointer TErrorHandlerReturnValue DefaultErrorHandler ist die voreingestellte Fehlerbehandlungsroutine des Bildschirmtrei bers Hierbei werden die Fehlercode Angaben in AErrorCode und AErrorInfo in die globa len Variablen ErrorCode und ErrorInfo geschrieben und errContinue zur ckgegeben DONEVIDEO procedure DoneVideo DoneVideo schaltet den Bildschirmtreibe
113. har Sizelnt Liefert die L nge des nullterminierten Strings p Siehe auch StrNew und SysUtils StrLen program Examplel stringex exl pp Beispiel f r die Funktion StrLen uses Strings const P PChar Das ist ein PChar Stringkonstante begin WriteLn P p WriteLn Lange P StrLen P end STRLICOMP function StrLIComp Strl PChar Str2 PChar L Sizelnt Sizelnt Vergleicht maximal L Zeichen der nullterminierten Strings Strl und Str2 und ignoriert dabei die Gro und Kleinschreibung Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 064 Kapitel 4 Referenz der RTL Online Daten Das Ergebnis ist eine negative SizeInt Zahl wenn Str1 lt Str2 0 wenn Str1 und Str2 gleich sind Ein positiver SizeInt wenn Str1 gt Str2 Ein Beispiel ist bei der Funktion StrIComp gezeigt Siehe auch StrLComp StrComp StrIComp und SysUtils StrLIComp STRLOWER function StrLower p PChar PChar Konvertiert p in Kleinbuchstaben Das Funktionsergebnis ist p Siehe auch StrUpper und SysUtils StrLower program Examplel4 stringex ex14 pp Beispiel f r StrLower und StrUpper uses Strings oder SysUtils const Pl PChar DAS IST EIN PCHAR STRING IN GROSSBUCHSTABEN P2 PChar das ist ein pchar string in kleinbuchstaben begin WriteLn GroBschreibung StrUpper P2 StrLower P1 WriteLn Kleinschreibung P1 end STRMOVE function Str
114. hen WriteLn type buf mtype Text buf mtext else DoError msgrcv end procedure RemoveQueue ID LongInt begin if msgctl id IPC_RMID NIL lt gt 1 then WriteLn Removed Queue with id Id end procedure ChangeQueueMode ID mode LongInt var QueueDS TMSQid ds begin if msgctl Id IPC_STAT QueueDS 1 then DoError msgetl stat WriteLn Old permissions QueueDS msg_perm mode QueueDS msg_perm mode Mode if msgctl ID IPC_SET QueueDS 0 then WriteLn New permissions QueueDS msg_perm mode else DoError msgetl IPC_SET end procedure Usage begin WriteLn Usage msgtool s end lt type gt lt text gt max 255 characters WriteLn r eceive lt type gt C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc msgget 099 Writeln d elete WriteLn m ode lt decimal mode gt Halt 1 end function StrToInt S String LongInt var M LongInt C Integer begin Val S M C if C lt gt 0 then DoError StrTolnt S StrToInt M end var Key TKey ID LongInt Buf TMyMsgBuf const ipckey 0 begin if ParamCount lt 1 then Usage key Ftok ipckey 1 Ord M ID msgget key IPC_CREAT or 438 if ID lt 0 then DoError MsgGet case Upcase Paramstr 1 1 of S if ParamCount lt gt 3 then Usage else SendMessage id Buf StrToInt Paramstr 2 Paramstr 3 R if ParamCount lt gt 2
115. hl false und IPCerror wird gesetzt Siehe auch msgget msgrcv seefmsgctl Ein Beispiel befindet sich unterhalb zur Erkl rung zu msgctl SEMCTL function semct semid cint semnum cint cmd cint var arg TSEMun cint semctl f hrt verschiedene Operationen auf die Nachricht semnum im Signalsystem mit der ID semid aus Der Parameter arg wird je nach auszuf hrender Operation verschieden interpretiert Es gibt folgende Darstellungen des varianten Records C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc semct 0101 type TSEMun record case LongInt of 0 val LongInt 1 buf PSEMid_ds 2 arr PWord 3 padbuf PSeminfo 4 padpad Pointer end Welche Operation ausgef hrt wird h ngt vom Parameter cmd ab der einen der folgen den Werte annehmen kann IPC_STAT In diesem Fall sollte das Feld buf des Parameters arg gesetzt sein und die Adresse eines TSEMid_ds Records enthalten Der Befehl semctl f llt diese Struk es tur TSEMid_ds mit Informationen ber das Signalsystem eee IPC_SET In diesem Fall sollte wiederum das Feld buf von arg die Adresse eines TSE Mid_ds Records enthalten Die Zugriffsrechte des Signalsystems werden gem den Angaben im ipc_perm Record festgelegt GETALL In diesem Fall sollte das Feld arr von arg auf einen Speicherbereich verweisen in dem die Werte der Signale gespeichert werden Die Gr e dieses Speicher bereiches ist SizeOf Word
116. hmID shmget key segsize IPC_CREAT or IPC_EXCL or 438 if ShmID 1 then begin WriteLn Shared memory exists Opening as client ShmID shmget key segsize 0 if ShmID 1 then begin WriteLn shmget Error fpgeterrno Halt 1 end end else WriteLn Creating new shared memory segment SegPtr shmat ShmID NIL 0 if LongInt SegPtr 1 then begin WriteLn Shmat error fpgeterrno Halt 1 end case Upcase ParamStr 1 1 of W writeshm ShmID SegPtr ParamStr 2 Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0108 Kapitel 4 Referenz der ATL Online Daten R ReadSHM ShmID SegPtr D RemoveSHM ShmID M ChangeMode ShmID ParamStr 2 else WriteLn ParamStr 1 Usage end end SHMDT function shmdt shmaddr Pointer cint shmdt trennt den Speicher der Adresse shmaddr vom Proze ab Dieser Speicherblock ist f r den aktuellen Proze nicht mehr zug nglich bis er durch einen shmat Befehl wieder angef gt wird Die Funktion liefert true falls der Speicherblock erfolgreich abgetrennt wurde sonst False Fehler Bei einem Fehler wird False zuriickgeliefert und IPCError wird gesetzt Siehe auch shmget shmat shmctl SHMGET function shmget key TKey size size_t flag cint cint shmget liefert die ID des gemeinsam nutzbaren Speicherblocks der durch key beschrieben wird Abh ngig von den Flags in flag wird ein neuer Speicherbl
117. ibt das Ergebnis in den Parameter sinus und cosinus zurtick Auf Intel Hardware ist diese Funktion schneller als die getrennte Berechnung von Sinus und Cosinus Siehe auch ArcSin und ArcCos program Example41 mathex ex41 pp Beispiel f r die Funktion SinCos uses Math procedure DoSinCos Angle Float var Sine Cosine Float Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O30 Kapitel 4 Referenz der RTL Online Daten begin SinCos Angle Sine Cosine Write Winkel Angle 8 6 Write Sinus Sine 8 6 Write Kosinus Cosine 8 6 end 6 begin DoSinCos pi DoSinCos pi DoSinCos pi DoSinCos pi DoSinCos pi end SS DPW PP on SINH function SinH x Float Float SinH liefert den Sinus Hyperbolicus fiir den Parameter x Siehe auch CosH ArsinH TanH und ArtanH program Example42 mathex ex42 pp Beispiel f r die Funktion Sinh uses Math begin WriteLn SinH 0 WriteLn SinH 1 WriteLn SinH 1 end STDDEV function StdDev const Data array of Extended Float function StdDev const Data PExtended const N Integer Float Stddev liefert die Standardabweichung ftir die Werte in Data Enthalt das Array nur einen Wert ist das Ergebnis Null Die zweite Version der Funktion tibernimmt einen Zeiger auf ein Array mit N Werten Siehe auch Mean MeanAndStdDev Variance und TotalVariance program Example40 mathex ex43 pp Beispiel
118. ie der berwa chungsmechanismus f r die Informationen reservieren soll Bei jedem Aufruf von Get Mem wird func ausgef hrt und liefert einen Zeiger auf den reservierten Speicher Wenn die Zusammenfassung der Speicherdaten angezeigt wird werden die Extra informationen als LongInt Werte mit ausgegeben Fehler SetExtraInfo kann nur dann aufgerufen werden wenn bisher noch kein Speicher zugewiesen wurde Falls schon vor SetExtraInfo Speicher zugewiesen wurde wird ein Fehler in der Standardfehlerausgabe angezeigt und DumpHeap ausgef hrt Siehe auch DumpHeap SetHeapTraceOutput program heapex heapex setinfo pp Beispiel f r die Unit HeapTrc uses HeapTrc var Pl LongInt P2 Pointer I LongInt Marker LongInt procedure SetMarker P Pointer type PLongInt LongInt begin PLongInt P Marker end procedure Partl begin Blocks allocated here are marked with FFAAFFAA 5570646 Marker FFAAFFAA New P1 New P1 Dispose P1 for I 1 to 10 do begin GetMem P2 128 if I mod 2 0 then FreeMem P2 128 end GetMem P2 128 end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 15 Unit Lineinfo SetHeapTraceQutput 043 procedure Part2 begin Blocks allocated here are marked with FAFAFAFA 84215046 Marker FAFAFAFA New P1 New P1 Dispose P1 for I 1 to 10 do begin GetMem P2 128 if I mod 2 0 then FreeMem P2 128 end GetMem P2 1
119. iel f r die Funktion GetKeyEvent uses keyboard var K TKeyEvent begin InitKeyBoard WriteLn Driicken Sie eine Taste q beendet das Beispiel repeat K GetKeyEvent K TranslateKeyEvent K Write Tastaturevent erhalten mit case GetKeyEventFlags K of kbASCII WriteLn ASCII Taste kbUniCode WriteLn Unicode Taste kbFnKey WriteLn Funktionstaste Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0142 Kapitel 4 Referenz der RTL Online Daten kbPhys WriteLn Physikalischer Taste kbReleased WriteLn Freigegebenem Tastaturevent end WriteLn Erhaltene Taste KeyEventToString K until GetKeyEventChar K q DoneKeyBoard end GETKEYEVENTCHAR function GetKeyEventChar KeyEvent TKeyEvent Char GetKeyEventChar liefert den Anteil des Tastencodes des angegebenen Records KeyEvent falls dieser einen tibersetzten Zeichencode in Keycode enthalt Der Zeichencode ist einfach nur der ASCII Code der gedriickten Zeichentaste Die Funktion ist nur bei Funktionstasten sinnvoll nicht bei alphanumerischen Tasten Ein Beispiel f r die Funktion ist bei GetKeyEvent abgebildet Siehe auch GetKeyEventUniCode GetKeyEventShiftState GetKeyEventFlags GetKeyE ventCode und GetKeyEvent GETKEYEVENTCODE function GetKeyEventCode KeyEvent TKeyEvent Word GetKeyEventCode gibt den bersetzten Funktionstastenanteil des bergebenen Records KeyEvents zur ck
120. iger auf einen Record vom Typ ipc_perm interpretiert und setzt die Rechte der Warteschlange entsprechend u a eee ee ee re ee eee IPC_RMID Die Botschafts Warteschlange wird aus dem System entfernt wenn IPC_RMDIR als Wert des Parameters bergeben wird buf enth lt die jeweils geforderten Daten Wenn die Warteschlange entfernt werden soll kann der Parameter NIL sein da keine zus tzlichen Daten ben tigt werden Die Funktion liefert true falls erfolgreich ansonsten false Fehler Bei einem Fehler wird false zur ckgegeben und IPCerror entsprechend gesetzt Siehe auch msgget msgsnd und msgrcv Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 093 Kapitel 4 Referenz der RTL Online Daten program msgtool ipcex msgtool pp uses ipc baseunix type PMyMsgBuf TMyMsgBuf TMyMsgBuf record mtype LongInt mtext String 255 end procedure DoError const Msg String begin WriteLn msg returned an error Halt 1 end fpgeterrno procedure SendMessage Id LongInt var Buf TMyMsgBuf MType LongInt const MText String begin WriteLn Sending message Buf mtype mtype Buf Mtext mtext if msgsnd Id PMsgBuf Buf 256 0 1 then DoError msgsnd end procedure ReadMessage ID LongInt var Buf TMyMsgBuf MType LongInt begin WriteLn Reading message Buf MType MType if msgrcv ID PMSGBuf Buf 256 mtype 0 lt gt 1 t
121. in der durch msgp angegebenen MSGbuf Struktur gespeichert Der Parameter msgflg kann zu Steuerung des Verhaltens des msgrcv Befehls herangezogen werden Der Parameter kann aus einer OR Verkn pfung der folgenden Werte bestehen g Botschaft gek rzt Normalerweise liefert der Befehl in solchen F llen einen Fehler E2BIG Die Funktion liefert true wenn die Botschaft korrekt empfangen wurde ansonsten false Fehler Bei einem Fehler wird false zur ckgegeben und IPCerror gesetzt Siehe auch msgget msgsnd msgctl Zum Beispiel siehe msgctl MSGSND function msgsnd msqid cint msgp PMSGbuf msgsz size_t msgflg cint cint msgsnd sendet eine Botschaft mit der ID msgid an die Botschaftswarteschlange msgp akzeptiert einen Zeiger auf einen Message Record der auf dem Typ TMsgBuf basieren sollte msgsiz ist die Gr e der Botschaft nicht des gesamten Message Records Die Variable msgflg kann aus folgenden Werten zusammengesetzt sein Verkn pfung mit OR 0 Hat keine spezielle Bedeutung Die Botschaft wird an die Warteschlange an geh ngt Falls die Warteschlange voll ist wird der aufrufende Proze blockiert nun die Warteschlange wieder Botschaften aufnehmen kann _ IPC_NOWAIT Falls die Warteschlange voll ist wird die Botschaft verworfen und der Befehl kehrt sofort zur ck Die Funktion liefert true falls die Meldung erfolgreich gesendet wurde ansonsten false Fehler Bei einem Fehler liefert der Befe
122. ine der ersten Units in das Programm eingebunden werden die restliche Arbeit erledigt au tomatisch der Initialisierungsbereich der Unit Wichtig Das Einbinden dieser Units f hrt in jedem Fall dazu da das Programm gegen die C Bibliothek des Betriebssystems gelinkt wird Weil es sinnlos ist diese Units auf einem Nicht POSIX Betriebssystem wie Windows OS 2 oder DOS einzubinden sollten sie immer mit einem ifdef Statement zur bedingten Kompilierung kombiniert werden program myprogram uses ifdef unix UNITNAME endif classes sysutils 4 10 1 Der Locale Manager clocale clocale initialisiert die 118N Einstellungen der Unit SysUtils mit den in der C Bibliothek des Systems vorgefundenen Werten Die Unit braucht daf r nur in die Uses Anweisung des Programms eingef gt zu werden die Arbeiten werden in ihrem Initialisierungsteil durchgef hrt Das Einbinden mu wie bei allen vier Manager Units ber ein ifdef Unix gesteuert werden clocale exportiert keine Prozeduren Funktionen oder Datentypen 4 10 2 Der Memory Manager cmem Der Speichermanager in der Unic cmem setzt die Speicherverwaltung auf einen C basierte Version Alle Speicherverwaltungsaufrufe werden tiber Malloc Free und ReAlloc an den C Speichermanager weitergeleitet Aus diesem Grund muf auch die Unit cmem als erste in der Uses Anweisung des Programms eingetragen werden Die Unit bietet auch das direkte Aufrufen der C Speicherbefehle als externe Deklaratio nen aus de
123. info ist f r das Handling von Botschafts Warteschlangen implemen tiert und sollte nie direkt benutzt werden TMSQid_ds record msg_perm TIPC_Perm msg first PMSG msg_last PMSG msg_stime time_t msg_rtime time_t msg_ctime time_t msg_cbytes Word msg_qnum Word msg_qbytes Word msg_lIspid ipc_pid t msg_Irpid ipc_pid t end Der Record TMSQid_ds wird von der Routine msgctl zur ckgegeben und enth lt alle Daten ber die Botschafts Warteschlange Er sollte nie direkt aufgerufen werden da es ein interner Kernel Record ist dessen Felder jederzeit ge ndert werden k nnen TSEMbuf record sem num cushort sem op cshort sem _flg cshort end TSEMbuf wird im Befehl semop ben tigt und gibt die auszuf hrenden Operationen an TSEMid_ds record sem_perm TIPC_Perm sem _otime time t sem_ctime time t sem_base Pointer sem _pending Pointer sem pending last Pointer undo Pointer sem_nsems cushort end Der Record TSEMid_ds wird vom Befehl semctl zur ckgeliefert und enth lt alle Daten die sich auf die Signal bertragung Semaphore beziehen Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O96 Kapitel 4 Referenz der RTL Online Daten TSEMinfo semmap semmni semmns semmnu semms1 semopm semume semusz semvmx semaem end record cint cint eint cinti cint eine cint eint cint cinti Der TSE
124. ion einen zus tzlichen Parameter enth lt diese Variable nach einem Auf ruf von GetLongOpts beziehungsweise GetOpt dessen Wert OptErr Boolean Die Variable bestimmt ob getopt Fehlermeldungen ausgibt oder nicht C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 13 Unit GetOpts GetLongOpts O37 OptInd LongInt Der Index des aktuellen Paramstr Wenn alle Optionen verarbeitet worden sind ist Optind der Index des ersten Parameters der keine Option ist Die Variable ist kann nur gelesen werden und kann den Wert ParamCount 1 annehmen OptOpt Char Die Variable enth lt beim Auftreten eines Fehlers das Zeichen das den Fehler ausl ste 4 13 2 Prozeduren und Funktionen GETLONGOPTS function GetLongOpts ShortOpts String LongOpts POption var Longind LongInt Char Die Funktion gibt die nachste Option die auf der Kommandozeile gefunden wurde unter Ber cksichtigung von langen Optionen zur ck Werden keine weiteren Optio nen gefunden wird EndOfOptions zur ckgeliefert Besitzt die Option einen Parameter wird dieser in der Variable OptArg abgelegt ShortOpts ist eine Zeichenfolge mit allen m glichen Ein Buchstabenoptionen siehe Getopt f r Beschreibung und Gebrauch LongOpts ist ein Zeiger auf das erste Element eines Arrays von TOption Records des sen letzter Record ein Namensfeld mit leerem String enthalten mu Die Funktion versucht Namen teilweise anzupassen liegt beispielsweise eine Funktion name
125. ionen aus der normalen Funktion Connect und anschlie enden Aufrufen der Funktionen Sock2Text beziehungsweise Sock2File Diese erweiterten Funktionen liefern bei erfolgreicher Ausf hrung ein True und sonst den Wert False Fehler Bei einem Fehler der normalen Funktion wird 1 zur ckgeliefert und ein Fehler code in SocketError gespeichert Siehe auch Listen Bind und Accept program Client sockex sockcli pp Program to test Sockets unit by Michael van Canneyt and Peter Vreman Client Version First Run sock_svr to let it create a socket and then sock_cli to connect to that socket uses Sockets procedure PError const S String begin WriteLn S SocketError Halt 100 end var SAddr TInetSpckAddr Buffer String 255 5 LongInt Sin Sout Text i Integer Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O80 Kapitel 4 Referenz der RTL Online Daten begin S Socket AF_UNIX SOCK_STREAM 0 if SocketError lt gt 0 then Perror Client Socket SAddr Sin_family AF_INET port 50000 in network order SAddr Sin_port htons 50000 localhost 127 0 0 1 in network order SAddr Sin_addr s_addr HostToNet 127 shl 24 or 1 if not Connect S SAddr Sin Sout then PError Client Connect Reset Sin ReWrite Sout Buffer This is a textstring sent by the Client for i 1 to 10 do WriteLn Sout Buffer Flush Sout Rea
126. iteLn Pfad dir WriteLn Name name WriteLn Endung ext end GETCBREAK procedure GetCBreak var breakvalue Boolean GetCBreak ermittelt den Status der Strg Pause Pr fung unter DOS Wenn BreakValue False ist wird nur wahrend E A Operationen auf die Eingabe von Strg Pause getestet Falls BreakValue True ist findet eine solche berpr fung bei jedem Systemaufruf statt Auf allen anderen Plattformen ergibt BreakValue immer den Wert True Siehe auch SetCBreak GETDATE procedure GetDate var year Word var month Word var mday Word var wday Word GetDate liest das Systemdatum aus Year ist eine Zahl im Bereich von 1980 bis 2099 Month gibt die Zahl des Monats an w hrend mday den Tag im Monat beschreibt Der Wochentag des aktuellen Datums wird in wday zur ckgegeben wobei der Sonntag als Tag 0 Montag als Tag 1 und so weiter z hlen Siehe auch GetTime und SetDate program Example2 dosex ex2 pp Beispiel f r die Funktion GetDate uses Dos const DayStr array 0 6 of String 3 Son Mon Die Mit Don Fre Sam MonthStr array 1 12 of String 3 Jan Feb Mrz Apr Mai Jun Jul Aug s Sep Okt Nov Dez var Year Month Day WDay Word begin GetDate Year Month Day WDay WriteLn Aktuelles Datum WriteLn DayStr WDay Day MonthStr Month Year end GETENV function GetEnv envvar String String
127. itel 4 19 Unit Sockets Shutdown 091 SHUTDOWN Shutdown Sock LongInt How LongInt LongInt Shutdown beendet eine bidirektionale Verbindung die durch Sock beschrieben wird How legt fest wie die Verbindung beendet wird 2 Weder Senden noch Empfangen sind erlaubt War die Funktion erfolgreich wird 0 bei einem Fehler 1 zur ckgeliefert Fehler SocketError zur Fehlermeldung enth lt das folgende SYS_EBADF Der Socketdeskriptor ist ungiltig SYS_ENOTSOCK Der Deskriptor ist kein Socket Siehe auch Socket und Connect SOCK2FILE procedure Sock2File Sock LongInt var SockIn File var SockOut File Sock2File wandelt den Socket Sock in zwei Pascal Dateideskriptoren des Typs File um einen zum Lesen SockIn und einen f r das Schreiben in den Socket SockOut Siehe auch Socket und Sock2Text SOCK2TEXT procedure Sock2Text Sock LongInt var SockIn Text var SockOut Text Sock2Text wandelt den Socket Sock in zwei Pascal Dateideskriptoren des Typs Text um ei nen zum Lesen aus dem Socket SockIn und einen zum Schreiben in den Socket SockOut Siehe auch Socket und Sock2File SOCKET function Socket Domain LongInt SocketType LongInt Protocol LongInt LongInt Hinweis Diese Funktion ist veraltet Socket erstellt einen neuen Socket in der Domain Domain vom Typ SocketType anhand des Protokolls Protocol Die Domain der Sockettyp und das Protokoll k nnen anhand der vorgegebenen Konstante
128. iterverbreitung der Daten ist nicht gestattet O32 Kapitel 4 Referenz der RTL Online Daten I lt 14 1005 ExArray array 1 100 of Float S SS Float begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 SumsAndSquares ExArray S SS WriteLn Sum Er WriteLn Sum squares cote SSA SumsAndSquares ExArray 1 100 S SS WriteLn Sum b 1 828340 WriteLn Sum squares b SS 8 4 end TAN function Tan x Float Float Tan berechnet den Tangens von x Fehler Falls x normalisiert 1 2 oder 37 2 ergibt kommt es zum Uberlauf Siehe auch TanH ArcSin SinCos und ArcCos program Example47 mathex ex47 pp Beispiel fiir die Funktion Tan uses Math procedure DoTan Angle Float begin Write Angle RadToDeg Angle 8 6 WriteLn Tangent Tan Angle 8 6 end begin DoTan 0 DoTan Pi DoTan Pi 3 DoTAn Pi 4 DoTan Pi 6 end TANH function TanH x Float Float TanH berechnet den Tangens Hyperbolicus von x Siehe auch ArcSin SincCos und ArcCos program Example48 mathex ex48 pp Beispiel fiir die Funktion TanH uses Maths begin WriteLn TanH 0 WriteLn TanH 1 WriteLn TanH 1 end TOTALV ARIANCE function TotalVariance const Data array of Extended Float function TotalVariance const Data PExtended const N Integer
129. ition der Konstante leicht abwei chen unter Windows sieht sie beispielsweise so aus NilHandle 0 Die Definition erfolgt in der den Betriebssystemen zugeordneten dynlibs inc Dateien SharedSuffix so Die Endung f r Shared Objects Sie h ngt von der Plattform ab auf der die Dokumentati on erzeugt wurde Die komplette Definition in der Datei dynlibs pas sieht so aus const ifdef Windows SharedSuffix dll else ifdef Darwin Darwin gilt genauso f r OS X SharedSuffix dylib else ifdef 052 SharedSuffix dll else SharedSuffix so endif endif endif Typdeklarationen HModule TLibHandle Ein Alias fur den Datentyp TLibHandle TLibHandle PtrInt TLibHandle sollte ein opaker Datentypen sein er ist auf den verschiedenen Plattformen unterschiedlich definiert Die hier gezeigte Definition hangt davon ab auf welcher Platt form die englische Dokumentation generiert wurde Die jeweils fiir die Plattform giiltige Definition befindet sich in der Datei dynlibs inc die es fiir folgende Plattformen Ver zeichnisse gibt netwlibc TLibHandle Pointer wince TLibHandle Longlnt C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 12 Unit dynlibs FreeLibrary O35 4 12 2 Prozeduren und Funktionen FREELIBRARY function FreeLibrary Lib TLibHandle Boolean FreeLibrary stellt die selbe Funktionalit t wie die Funktion UnloadLibrary zur Verf gung und ist we
130. kbLeftShift or Modifizierer der Shifttaste mn KbRightShiftisnnnnnnnn OCA mmm Mann MOdifizierer der Steverungstaste Strg eee kbAlt 8 Modifizierer der Alt Taste Die Konstanten f r die Tasten des Cursor und Ziffernblocks Konstante Code Taste kbdhlome SERZO ee POS ar _kbdUp FF21 t _kbdleft _kbdRight FF25 gt _kbdDown FF27 4 kbainsen ie N nn kbdDelete FF2A Entf Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0138 Kapitel 4 Referenz der RTL Online Daten Die Konstanten f r das Dr cken der Funktionstasten Konstante Code Taste F1 wurde gedr ckt F2 wurde gedr ckt F4 wurde gedr ckt kbdF6 FFO6 F6 wurde gedr ckt kbdF8 FFO8 F8 wurde gedr ckt kbdF10 FFOA F10 wurde gedr ckt kbdF12 FFOC F12 wurde gedr ckt kbdF14 FFOE F14 wurde gedr ckt kbdF16 F16 wurde gedr ckt kbdF18 F18 wurde gedr ckt kbdF20 FF14 F20 wurde gedr ckt Die Windows Tasten Konstante Code Taste kbdApps FF17 Die Anwendungstaste Popup Men wurde gedr ckt Kennungen f r die Flags von TKeyCode Konstante Wert Beschreibung kbASCII 00 Events f r ASCII Code Funktionstaste wurde gedr ckt kbReleased 04 Event beim Loslassen der Taste Strings f r die Tastenbeschreibungen in den Routinen zur Beschreibung der Tastatur Events SAnd String AND
131. ktion Floor uses Math begin WriteLn Ceil 3 7 sollte 4 sein WriteLn Ceil 3 7 sollte 3 sein WriteLn Ceil 4 0 sollte 4 sein end FREXP procedure Frexp X Float var Mantissa Float var Exponent Integer Frexp gibt Mantisse und Exponent von x in den Parametern Mantissa und Exponent zu r ck program Examplel4 mathex ex14 pp Beispiel f r die Prozedur Frexp uses Math procedure dofrexp const X Extended var man Extended Exp LongInt begin man 0 Exp 0 Frexp x man Exp Write x has WriteLn Mantisse man und Exponent Exp end begin dofrexp 1 00 dofrexp 1 02e 1 dofrexp 1 03e 2 dofrexp 1 02e1 dofrexp 1 03e2 end GETEXCEPTIONM ASK function GetExceptionMask TFPUExceptionMask Lesen der Exception Maske der Gleitkommaeinheit Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 018 Kapitel 4 Referenz der RTL Online Daten GETPRECISIONMODE function GetPrecisionMode TFPUPrecisionMode Lesen des Genauigkeitsmodus der Gleitkommeinheit GETROUNDMODE function GetRoundMode TFPURoundingMode Lesen des Rundungsmodus der Gleitkommeinheit GRADTODEG function GradToDeg grad Float Float GradToDeg wandelt den Parameter grad einen Winkel in Gon in normale Gradangaben um 100 Gon sind 90 Grad Siehe auch CycleToRad DegToGrad RadToDeg RadToGrad RadToCycle und GradToRad program Examplel5 math
132. l f12 cl ch 713 f14 di dhs Byte 2 eax ebx ecx edx ebp esi edi LongInt end ENDIF HAS REGISTERS ENDIF CPUI386 Der Typ DateTime wird in PackTime und UnPackTime benutzt um das Dateidatum mit GetFTime und SetFTime setzen oder ermitteln zu k nnen DateTime record Year Word Month Word Day Word Hour Word Min Word Sec Word end Variablen DosError Integer In der Variable DosError wird von den Prozeduren in der Unit DOS ein Fehler gespei chert DosError kann die folgenden Werte annehmen Wert Bedeutung een DOEI Nicht gefunden nun 3 Pfad nicht gefunden 6 Ungilltig es Handle 8 Nicht gen gend Speicher 18 Zu viele Dateien Tabelle 04 8 Fehlerkennungen in der Unit DOS Andere Werte sind m glich aber nicht dokumentiert Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 048 Kapitel 4 Referenz der RTL Online Daten 4 17 2 Prozeduren und Funktionen ADDDISK function AddDisk const path String Byte AddDisk f gt einen Dateinamen path zur internen Laufwerksliste hinzu und ist nur unter Linux implementiert Die Laufwerksliste bestimmt welches Laufwerk in den Befehlen Disk Free und DiskSize benutzt wird DiskFree und DiskSize ben tigen eine Datei auf dem ausge w hlten Laufwerk es wird beim Aufruf der Systemfunktion statfs ben tigt Die Namen wer den aufeinanderfolgend hinzugef gt Die vier ersten Eintr ge
133. l des Voll Duplex Sockets herunterfahren nn n SHUTWR oo Schreibanteil des Voll Duplex Sockets herunterfahren SHUT_RDWR 2 Lese und Schreibanteil des Voll Duplex Sockets herunterfahren C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Konstanten Typen Variablen O73 Die folgenden Konstanten identifizieren verschiedene Socket Typen wie sie f r die Rou tine Socket benotigt werden Konstante Wert Beschreibung SOCK_STREAM 1 Socket Typ Stream Verbindungs Sockettyp TCP Socket Typ Roh Socket SOCK SEQPACKET 5 Socket Typ Sequentieller Packet Socket _ SOCK_MAXADDRLEN 255 Maximale Socketadre l nge f r den Aufruf von Bind Die folgenden Konstanten sind Werte f r die Socket Optionen Konstante Wert Beschreibung Undokumentiert Socketebenen Werte f r IPv6 IPV6 SOL_ICMPV6 Socketebenen Werte f r IPv6 ICMPV6 Die folgende Konstante beschreibt ein System Limit Konstante Wert Beschreibung SOMAXCONN 128 Maximum queue length specifiable by listen Die folgenden Konstanten beschreiben Socket Optionen Konstante Wert Beschreibung SIN 0 Eingabesocket im Socket Pag ________ S OUT 1 Ausgabesocket im Socket Paar Socket Option Adresse wiederverwenden Socket Option Socket Option Broadcast Socket Option Puffer empfangen Socket Option 2 Socket Option Socket Option
134. lche Cursorzeilen sichtbar sind oder ausgeblendet werden Jedes Bit steht f r eine Zeile des Cursors Diese Variable ist nicht auf allen Plattformen vorhanden und sollte deshalb mit Bedacht angewandt werden CursorX Word Die aktuelle horizontale Position auf dem Bildschirm an die die Daten geschrieben werden Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0118 Kapitel 4 Referenz der RTL Online Daten OldVideoBuf PVideoBuf Das Array OldVideoBuf enth lt den Inhalt des Bildschirms nach seiner letzten Aktualisierung Die Funktion UpdateScreen pr ft dieses Array und entscheidet dann welche Zeichen auf dem Bild schirm aktualisiert werden m ssen und welche nicht Es ist zu beachten da das Array OldVideoBuf unter Umst nden von einigen Bildschirmtreibern bergangen wird und deshalb m glichst vom Anwendungsentwickler nicht genutzt werden sollte Das Array befindet sich haupts chlich im Interface Bereich der Unit Video damit es beim Schreiben von Treibern zur Verf gung steht VideoBuf PVideoBuf Diese Variable stellt das Herz der Unit Video dar und das Array ist der physikalische Bildschirm Das Schreiben in das Array und anschlie ende Aufrufen von UpdateScreen zeigt die aktuellen Zeichen auf dem Monitor an VideoBufSize LongInt Die aktuelle Gr e des Bildschirmpuffers auf den VideoBuf zeigt Die beiden folgenden Variablen sind nur f r internen Gebrauc
135. le oder Property definiert werden es darf aber unter keinen Umst nden erwartet werden da NoExtendedFra me geschrieben werden oder die Adresse geholt werden kann Bildschirmdaten ScreenHeight Word 0 Die aktuelle Bildschirmh he mit O vorbelegt FVMaxWidth 132 Die gr tm gliche Bildschirmpufferbreite in Zeichen Typdeklarationen PVideoBuf TVideoBuf Zeiger auf TVideoBuf PVideoCell TVideoCell Zeiger auf TVideoCell Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0116 Kapitel 4 Referenz der RTL Online Daten PVideoMode TVideoMode Zeiger auf den Record TVideoMode TEncoding cp437 cp850 cp852 cp866 koi8r iso01 iso02 iso03 iso04 iso05 iso06 iso07 iso08 iso09 isol0 isol3 isol4 isol5 Dieser Datentyp ist nur auf unixartigen Betriebssystemen verf gbar Wert Beschreibung 2 lt p437 Codepage 437 Englisch US amerikanischer Standard mn cp850 Codepage 850 Westeuropa Eingabeaufforderungen bei deutscher Windows Version cp866 Codepage 866 Russisch iso02 ISO 8859 2 Latin 2 Mitteleuropa beispielsweise Polen iso09 ISO 8859 9 Latin 5 T rkisch ISO 8859 13 Latin 7 Baltikum ISO 8859 15 Latin 9 ISO 8859 1 mit Euro Symbol Mitteleuropa Codepage KOI8 R Tabelle 04 9 Aufz hlungswerte f r den Datentyp TEncoding Meil 2 von 2 TErrorHandler function Code LongInt In
136. lt den Parameter func mit dem Namen der Funktion in der sich die Adresse befindet Der Parameter source enthalt den Namen der Datei in der die Funktion implementiert wurde und line die Zeilennummer in der Datei von addr Fehler Wurden keine Debuginformationen gefunden gibt die Funktion den Wert False zur ck Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 044 Kapitel 4 Referenz der RTL Online Daten 4 16 Unit Lnfodwrf Die Unit LnfoDwrf stellt eine Routine zur Verf gung die die Debuginformationen aus einer ausf hrbaren Datei ausliest falls diese Debuginformationen enth lt und Quelltext informationen zu dieser Adresse zur ckgibt Sie arbeitet mit DWARF Debuginfor mationen F r Debuginformationen vom Typ Stabs mu die Unit lineinfo eingebunden werden 4 16 1 Prozeduren und Funktionen GETLINEINFO function GetLineInfo addr ptruint var func String var source String var line LongInt Boolean GetLineInfo gibt die Quellzeileninformationen zur Adresse addr zur ck Die Funktion sucht diese Information in den DWARF Debuginformationen in der Bin rdatei Falls die Datei ohne Debuginformationen kompiliert wurde wird nichts zur ckgegeben Nach dem erfolgreichen Ermitteln der Debuginformationen wird True zur ckgegeben und der Parameter func meldet den Namen der Funktion die zur Adresse geh rt Der Parameter source enthalt den Namen der Datei in der die Funktion implementiert wurd
137. m Socket Sock in den Puffer Buf mit der Maximall nge BufLen Der Empfang wird mit den Optionen in Flags kontrolliert In Addr wird die Adresse des Senders eingetragen die die L nge AddrLen haben darf Die Funktion gibt die Zahl der empfangenen Byte oder bei einem Fehler den Wert 1 zur ck Siehe auch Socket recv und Send SEND Send sendet AddrLen Byte beginnend bei der Adresse Addr an den Socket Sock Es mu eine Verbindung zum Socket bestehen Die Funktion liefert die Anzahl der gesendeten Byte oder 1 falls ein Fehler bemerkt wurde Flags kann folgende Werte annehmen 2222 Daten au erhalb des Bandes verarbeiten Process out of band data 4 Routing umgehen und eine direkte Schnittstelle verwenden Fehler Fehler werden im SocketError gespeichert Es gibt folgende Fehler Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O90 Kapitel 4 Referenz der RTL Online Daten SYS_EBADF Der Socketdeskriptor ist ungiltig SYS ENOTCONN Der Socket ist nicht verbunden Die Meldung kann nicht atomar atomically sein SYS_ENOBUFS Dem System steht nicht genug freier Pufferspeicher zur Verf gung Siehe auch recv SENDTO function SendTo Sock LongInt const Buf BufLen LongInt Flags LongInt var Addr AddrLen LongInt LongInt SendTo sendet Data aus dem Puffer Buf mit der L nge BufLen durch den Socket Sock mit den Optionen Flags Die Daten werden an die Adresse Addr ges
138. n besitzen diese einen vollen Funkti onsumfang auf der Linux Konsole Es mu sich aber um eine nackte Konsole handeln ein SSH in eine andere Maschine zerst rt die volle Funktionalit t Andernfalls liegt ein einge schr nkter Funktionsumfang vor Einige Bemerkungen zum vollen Funktionsumgang bei Linux Wird die Tastatur umprogrammiert und aus irgendeinem Grund nicht in ihren Ori ginalzustand zur ckversetzt mu die Tastaturbelegung mit dem Kommandozeilen befehl reset neu geladen werden um sie zu reinitialisieren Alt in Kombination mit Funktionstasten erzeugt Steuercodes f r diese Tasten Um zwischen virtuellen Konsolen umzuschalten mu mit der Tastenkombination Strg Alt Fxx gearbeitet werden Im Gegensatz zu anderer Unix Software erzeugt Esc eine Tastaturcode f r Esc ohne Wartezeit Die eingeschr nkte Funktionalit t hat die systembedingten Probleme Schw chen Die Esc Taste mu damit sie wirksam ist zweimal gedr ckt werden Wird auf der Linux Konsole mit einem Programm gearbeitet mit dem auf eine ande re Maschine eingeloggt ist Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0132 Kapitel 4 Referenz der RTL Online Daten Shift F1 und Shift F12 erzeugen die Tastaturcodes f r F11 und F12 Shift Pfeiltasten Shift Einfg Shift Entf Shift Pos1 und Shift Ende funktionieren nicht Dies trifft auch f r die Kombinatio
139. n siehe Abschnitt zu den Konstanten um geeignete Konstanten zu finden festgelegt werden War die Funktion erfolgreich liefert sie einen Socket deskriptor der an einen nachfolgenden Bind Befehl bermittelt werden kann Falls die Funktion fehlgeschlagen ist wird 1 zur ckgeliefert Fehler Fehler werden in SocketError gemeldet Es gibt die folgenden Fehlermeldungen SYS_EPROTONOSUPPORT Der Protokolltyp oder das festgelegte Protokoll wird von dieser Dom ne nicht unterst tzt Die Deskriptortabelle dieses Prozesses ist voll SYS_EACCESS Es fehlen die Zugriffsrechte um einen neuen Socket des festge SEHEN ER EEE legten Typs und oder Protokolls zu anzulegen SYS_ENOBUFS Nicht gen gend Pufferspeicher Der Socket kann nicht erstellt werden bis gen gend Ressourcen vorhanden sind Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 092 Kapitel 4 Referenz der RTL Online Daten Siehe auch SocketPair Socket Unix Handbuch Zum Beispiel siehe Accept SOCKETERROR function socketerror cint SocketError enth lt den Fehlercode der letzten Socket Operation Fr gt den letzten Sok ket Fehler ab SOCKETPAIR function SocketPair Domain LongInt SocketType LongInt Protocol LongInt var Pair TSockArray LongInt Hinweis Diese Funktion ist veraltet Socket Pair erstellt zwei Sockets in der Dom ne Domain vom Typ SocketType und ver wendet das Protokoll Protocol Die beiden werd
140. n wenn mit absoluten Pfadnamen gearbeitet werden kann Fehler Beim Auftreten eines Fehlers wird die Konstante NilHandle gemeldet Siehe auch UnloadLibrary GetProcedureAddress SAFELOADLIBRARY function SafeLoadLibrary const Name AnsiString TLibHandle SafeLoadLibary sichert das FPU Steuerwort und ruft dann LoadLibrary mit dem Biblio theksnamen Name auf Nachdem die Funktion zur ckgekehrt ist wird das FPU Steuerwort wieder gesichert Diese Funktion gibt es nur auf CPUs der Intel i386 Familie Siehe auch LoadLibrary UNLOADLIBRARY function UnloadLibrary Lib TLibHandle Boolean UnloadLibrary entfernt eine vorher geladene Bibliothek deren Handle in Lib angegeben ist wieder aus dem Speicher Der Aufruf ergibt True wenn diese Arbeit erfolgreich durchgef hrt werden konnte Fehler Tritt beim Entfernen der Bibliothek aus dem Speicher ein Fehler auf wird False zur ckgemeldet Siehe auch LoadLibrary GetProcedureAddress Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O36 Kapitel 4 Referenz der RTL Online Daten 4 13 Unit GetOpts Die Unit Getopts von Free Pascal wurde urspr nglich f r Linux entwickelt und ist f r alle unterst tzten Plattformen verf gbar Sie stellt einen zu GNU getopts vergleichbaren Me chanismus f r die strukturierte Verarbeitung von Kommandozeilenoptionen zur Verf gung Er erlaubt die Definition g ltiger Optionen extrahiert diese aus der Parameterliste
141. n CPU Flags werden nicht verwendet und sind nur auf Kompa tibilit tsgr nden zu alten 16 Bit Programmen definiert Konstante Wert Bedeutung Flag auxiliary _________OO10h__Awiliary Flag nun 0001h Carry Flag fparity 0004h Parity Flag nn e aO 1O AS A fzero 0040h Zero Flag Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O46 Kapitel 4 Referenz der RTL Online Daten Typdeklarationen Die folgenden Stringtypen sind fir die Vereinfachung des Umgangs mit Dateinamen deklariert Bei den modernen Betriebssystemen mit langen Dateinamen sind in der Datei dos h inc die Langenangaben auf die Konstante FileNameLen gesetzt die auf 255 im Hea der der Datei festgelegt ist Damit wird die alte Deklaration von Free Pascal 1 x und Turbo Pascal berschrieben ComStr String 127 F r Befehlszeilen PathStr String 79 F r komplette Pfade von Dateinamen DirStr String 67 F r Verzeichnisse und DOS Laufwerksbezeichnungen NameStr String 8 F r Dateinamen ExtStr String 4 F r Dateierweiterungen Werden Dateien auf der Festplatte gesucht wird der folgende Record mit Daten gef llt SearchRec packed record SearchPos TOff SearchNum LongInt DirPtr Pointer SearchType Byte SearchAttr Byte Mode Word Fill array 1 1 of Byte Attr Byte Time LongInt Size LongInt Reserved Word Name String SearchSpec String Nam
142. n NIL ist und SHM_RND in shmflg angegeben ist wird shmaddr auf SHMLBA abgerundet Falls SHM_RND nicht angegeben wurde mu shmaddr an Seitengrenzen ausgerichtet sein Der Parameter shmflg kann das Verhaltens von shmat steuern und folgende Werte an nehmen Verkn pfung mit OR F SHM RND Die angegebene Adresse in shmaddr wird zu SHMLBA abgerundet SHM_RDONLY Es besteht nur Lesezugriff auf den Speicherblock wenn diese Option ange geben wurde ansonsten wird der Speicher f r Lesen und Schreiben hinzuge f gt Die Applikation braucht Lese und Schreibzugriff um den geteilten Speicher zu verwalten Fehler Bei einem Fehler wird 1 zur ckgeliefert und IPCError wird gesetzt Siehe auch shmget shmdt shmctl Zum Beispiel siehe shmctl SHMCTL function ShmCt1 ShmID cint cmd cint buf PShmid_DS cint shmctl f hrt verschiedene Operationen auf den gemeinsam nutzbaren Speicherblock aus der durch die ID shmid identifiziert wird Der Parameter buf zeigt auf einen TSHMid_ds Record der f r die Operation verwendet werden soll Der Parameter cmd bestimmt welche Operation ausgef hrt werden soll Folgende Werte sind m glich IPC_STAT shmctl f llt den TSHMid_ds Record auf den buf verweist mit Informationen ber den gemeinsam genutzten Speicherblock IPC_RMID shmctl entfernt den Speicherblock aus dem System nachdem alle Prozesse sich von ihm abgekoppelt haben Falls erfolgreich liefert die Funktion True anson
143. n angegebenen KeyEvent in die Eingabewarteschlange ein Es mu beachtet werden da abh ngig von der aktuellen Implementation diese Warteschlange immer nur einen Wert aufnehmen kann das hei t da wenn PutKeyEvent mehrfach aufgerufen wird immer nur die letzte gedr ckte Taste erhalten bleibt Siehe auch PollKeyEvent GetKeyEvent Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0146 Kapitel 4 Referenz der RTL Online Daten program example5 kbdex ex5 pp Beispiel f r die Prozedur PutKeyEvent uses keyboard var K K2 TKeyEvent begin InitKeyBoard WriteLn Driicken Sie eine Taste q beendet das Programm K2 0 repeat K GetKeyEvent if k lt gt 0 then begin if k2 mod 2 0 then K2 K 1 else K2 0 K TranslateKeyEvent K WriteLn Taste erhalten if K2 lt gt 0 then begin PutKeyEvent k2 K2 TranslateKeyEVent K2 WriteLn Taste gesandt KeyEventToString K2 end end until GetKeyEventChar K q DoneKeyBoard end KeyEventToString K RAWREADKEY function RawReadKey Char keine Beschreibung verf gbar RAWREADSTRING function RawReadString String keine Beschreibung verf gbar RESTORESTARTMODE procedure RestoreStartMode keine Beschreibung verf gbar SETKEYBOARDDRIVER function SetKeyboardDriver const Driver TKeyboardDriver Boolean SetKeyBoardDriver setzt dem Tastaturtreiber auf Driver falls der ak
144. n getsemval ID Member LongInt LongInt var S TSEMun begin GetSemVal SemCtl id Member SEM GETVAL S end procedure DispVal ID Member LongInt begin WriteLn Value for Member Member is GetSemVal ID Member end function GetMemberCount ID LongInt LongInt var opts TSEMun semds TSEMid ds begin opts buf semds if semctl Id 0 IPC_STAT opts lt gt 1 then GetMemberCount semds sem_nsems else GetMemberCount 1 end function OpenSem Key TKey LongInt begin OpenSem semget Key 0 438 if OpenSem 1 then DoError OpenSem end function CreateSem Key TKey Members LongInt LongInt var Count LongInt Semopts TSemun begin the semmsl constant seems kernel specific if Members gt semms then DoError Sorry maximum number of semaphores in set exceeded WriteLn Trying to create a new semaphore set with Members Members CreateSem semget key Members IPC_CREAT or IPC_Excl or 438 if CreateSem 1 then DoError Semaphore set already exists Semopts Val MaxSemValue Initial value of semaphores for Count 0 to Members 1 do semct CreateSem count SEM_SETVAL semopts end procedure lockSem ID Member LongInt var lock TSEMbuf begin with lock do begin sem num 0 sem op 1 sem flg IPC_NOWAIT end if Member lt 0 or Member gt GetMemberCount ID 1 then DoError semaphore Member out of range if ge
145. nd POPNV ARIANCE function PopnVariance const data PExtended const N Integer Float function PopnVariance const data array of Extended Float PopNVariance ergibt die Verteilungsvarianz der Werte im Array Data und ergibt 0 wenn sich nur ein Wert im Array befindet Die zweite Form der Funktion nimmt einen Zeiger auf ein Array mit N Werten entgegen Siehe auch PopNStdDev Mean MeanAndStdDev Stddev und MomentSkewkurtosis program Example36 mathex ex36 pp Beispiel f r PopNVariance uses math var I Integer ExArray array 1 100 of Float begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 WriteLn Pop var PopnVariance ExArray 8 4 Writeln Pop var b PopnVariance ExArray 1 100 8 4 end POWER function Power Base Float Exponent Float Float Power ergibt Base hoch Exponent Diese Funktion ist identisch zur Berechnung von Exp Power Ln base Aus diesem Grund darf base nicht negativ sein Siehe auch IntPower program Example34 mathex ex34 pp Beispiel fiir die Funktion Power uses Math C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math RadToCycle 027 procedure DoPower x y Float begin WriteLn x 8 6 y 8 6 Power x y 8 6 end begin DoPower 2 2 DoPower 2 2 DoPower 2 0
146. nen mit Alt und Strg zu Alt in Kombination mit den Funktionstasten schaltet zwischen den Konsolen um liefert nicht die richtigen Tastatursequenzen Strg in Verbindung mit den Funktionstasten liefert die Steuercodes f r die Funktionstasten ohne Strg In Xterm Shift Einfg f gt die Daten des X Clipboards ein es wird kein Tastaturcode erzeugt Auf der KDE Konsole Shift Einfg f gt die Daten aus dem X Clipboard ein es wird kein Tastatur code generiert Shift in Verbindung mit den Pfeiltasten funktioniert ebensowenig wie die Pfeil tasten in Verbindung mit der Strg Taste Ist eine Nicht Standardtastatur angeschlossen kann es sein da auch einige andere Ta sten nicht funktionieren Befindet man sich im Modus mit der eingeschr nkten Funktio nalit t kann aber mit dem blichen Workaround um die Funktionstasten und deren ESC Pr fix herumgearbeitet werden Esc 1 F1 Esc 2 F2 und so weiter Esc vor der Eingabe einer anderen Taste ist gleichwertig mit der Alt Taste In solchen F llen und wenn das Terminal eine Ausgabe der ESC Sequenzen f r diese Tasten zur Verf gung stellt bitten die Free Pascal Entwickler um einen Bugreport damit das Terminal hinzugef gt werden kann 4 23 2 Tastaturtreiber schreiben Beim Schreiben eines Tastaturtreibers m ssen f r die meisten der Funktionen der Unit Keyboards Hooks erzeugt werden Der Record TKeyBoardDriver enth lt ein Feld f r jeden
147. ng begin Str Index 2 S Inc Index TextOut 1 Index Daten f r den Modus S if M Color then TextOut 19 Index Farbe else TextOut 19 Index Keine Farbe Str M Row 3 S TextOut 28 Index S Zeilen Str M Cel 3 S TextOut 36 Index S Spalten end var i Count Integer m TVideoMode begin InitVideo InitKeyboard Count GetVideoModeCount for I 1 to Count do begin GetVideoModeData I 1 M DumpMode M I 1 end TextOut 1 Count 1 Weiter mit beliebiger Taste UpdateScreen False GetKeyEvent DoneKeyboard DoneVideo end GETVIDEOMODEDATA function GetVideoModeData Index Word var Data TVideoMode Boolean GetVideoModeData liefert die Charakteristika des in Index ausgewahlten Bildschirmmo dus in Data zur ck Index ist nullbasiert und besitzt einen h chstm glichen Wert von GetVideoModeCount 1 Unterst tzt der aktuelle Treiber die Modus Umschaltung nicht GetVideoModeCount 1 und ist damit der Index automatisch 0 werden die Daten des aktuellen Modus zur ckgegeben Die Funktion meldet als Ergebnis True falls die Modus daten erfolgreich abgefragt werden konnten sonst False Fehler Falls f r Index ein ung ltiger Wert bergeben wird ergibt die Funktion False Siehe auch GetVideoModeCount SetVideoMode und GetVideoMode Ein Beispiel f r diese Funktion ist bei GetVideoModeCount auf der letzten Seite gezeigt C 2012 C amp L Computer und Lite
148. ng in IP in eine IPv6 Netzwerkadresse um und gibt diese zur ck Fehler Bei einem Fehler wird die Netzwerkadresse mit Nullen gef llt Siehe auch NetAddrToStr6 HostAddrToStr6 und StrToHostAddro C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc Konstanten Typen Variablen 093 4 20 Unit ipc Die Interproze kommunikations Unit IPC stellt die komplette Funktionalit t der Inter proze kommunikation von Unix System V zur Verf gung Shared Memory gemeinsam genutzter Speicher Semaphoren Signal bermittlung und Messages Nachrichten Diese Unit funktioniert nur auf Linux Eine gro e Zahl von Konstanten sind in diesem Buch nur der Vollst ndigkeit halber aufgef hrt und sollten unter normalen Umst nden vom Programmierer nicht ben tigt werden Die Unit ipc ruft die folgenden Units auf BaseUnix UnixType 4 20 1 Konstanten Typen Variablen Variablen IPCerror LongInt Die IPCerror Variable wird f r die Fehlermeldung aller Befehle herangezogen Konstanten Diese Konstanten sind f r das Erstellen von IPC Nachrichten vorhanden Erstellt wenn der Schl ssel nicht existiert u EXCL hl here wenn der Schl ssel existiert gt l IPC_NOWAIT Fehler melden wenn gewartet werden mu Diese Konstanten werden f r die verschiedenartigen xxxget Befehle benutzt Ressource entfernen IPC_RMID IPC SET n IPC_STAT IPC_INFO IPCs anzeigen Diese Kon
149. ngabe mit anderen Werten zu kombinieren nena nohalt Ist dieser String gesetzt wird die Variable HaltOnError auf False gesetzt was dazu f hrt da das Programm auch beim Auftreten eines Heapfehlers nn gesetzt wird ae log filename Ist dieser String definiert wird die Ausgabe von HeapTrc in die anschlie Bend angegebene Datei geschrieben siehe auch SetHeapTraceOutput Die folgenden Werte sind f r die Variable HEAPTRC g ltig HEAPTRC disabled HEAPTRC keepreleased log heap log HEAPTRC log myheap log nohalt Zu beachten ist da sowohl der Name der Variable wie auch die Definitionen die Gro Kleinschreibung beachtet Prinzipiell ist die einzige nderung des Quelltextes zur Aktivie rung der Fehlersuche das Einf gen der Unit Heaptrc in den uses Abschnitt des Programms Es mu sichergestellt werden da Heaptrc die erste Unit im uses Abschnitt ist weil sonst Speicherreservierungen in den Initialisierungsabschnitten von vorangehenden Units nicht registriert werden k nnen und damit zu fehlerhaften Ergebnissen f hren Wird der Compiler mit dem Schalter gh aufgerufen f gt er die Unit selbst ndig ein sie mu gar nicht erst in die Uses Anweisung aufgenommen werden Als Ergebnis des Test programms das auf Seite 042 abgedruckt ist wird der folgende Speicherinhalt ausgegeben Marked memory at 0040FA50 invalid Wrong size 128 allocated 64 freed 0x00408708 0x0040CB49 0x0040C481 Call trace for block Ox0040FA50 size 128 0x0
150. ns Append vor wird app als ihr K rzel interpretiert wird aber bei Zweideutigkeiten einen Fehler melden Falls die Option einen Parameter verlangt setzen Sie das Feld Has_arg des jeweiligen TOption Records auf Required_argument falls die Option op tionalen Parameter besitzen soll setzen Sie Has_arg auf Optional_argument Falls die Option keine Parameter ben tigt setzen Sie Has_arg auf Null Auf der Kommandozeile k nnen Optionen die einen Parameter erwarten in zweierlei Schreibweisen angegeben werden Durch Gleichzeichen an die Option angef gt option value Als gesonderter Parameter option value Optionale Parameter k nnen nur durch die erste Methode beschrieben werden Fehler siehe Getopt getopt Siehe auch Getopt GETOPT function GetOpt ShortOpts String Char Getopt gibt die n chste Option zur ck die auf der Kommandozeile gefunden wurde Wenn keine weiteren Optionen gefunden werden wird EndOfOptions zur ckgegeben Falls mit der Option ein Parameter bergeben wurde wird dieser in der OptArg Variablen abgelegt ShortOptions ist eine Zeichenkette mit allen g ltigen Ein Buchstabenoptionen Steht hinter einem Zeichen ein Doppelpunkt erwartet die Option einen Parameter Stehen hinter einem Zeichen zwei Doppelpunkte besitzt die Option einen optionalen Parameter Falls das erste Zeichen des Shortopts Strings ein ist werden alle Optionen die auf eine Option folgen die nicht in Shortopts enthalten ist
151. nsole unter Linux oder eine Telnet Sitzung den Modus nicht immer set zen Es mu also berpr ft werden ob der Fehlerwert den die Funktion zur ckgibt ei nen Fehler signalisiert C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 22 Unit Mouse UnlockScreenUpdate O125 Der Modus kann bereits festgelegt werden wenn der Bildschirmtreiber noch gar nicht initialisiert wurde das hei t wenn InitVideo noch gar nicht aufgerufen wurde In diesem Fall wird der gew hlte Modus nach dem Initialisieren des Treibers mit InitVideo einge schaltet Der Aufruf von SetVideoMode vor dem Aufruf von InitVideo l scht den vorein gestellten Bildschirmmodus Um zu erfahren welche Modi berhaupt g ltig sind m ssen die Funktionen GetVideoModeCount und GetVideoModeData aufgerufen werden der aktuelle Bildschirmmodus wird mit GetVideoMode ermittelt Fehler Kann der gew nschte Bildschirmmodus nicht gesetzt werden wird in ErrorCode der Wert errVioNoSuchMode gesetzt Siehe auch GetVideoModeCount GetVideoModeData GetVideoMode UNLOCKSCREENUPDATE procedure UnlockScreenUpdate UnlockScreenUpdate verringert den Sperrz hler um Eins wenn er gr er Null ist Erreicht der Z hler den Wert 0 aktualisiert ein Aufruf von UpdateScreen den Bildschirminhalt wieder Solange der Z hler gr er Null ist wird der Bildschirm nicht aktualisiert Mit Hilfe dieses Mechanismus wird die Geschwindigkeit bei zahlreichen Bildschirmaus gaben deutlich er
152. nt TKey ist der durch die schliisselerzeugende Funktion ftok zuriickgegebene Typ key_t TKey Alias f r den Datentyp TKey msglen_t culong Typ f r die L ngendefinition von Nachrichten msgqnum t culong Typ f r die Numerierung von Message Queues PSHMinfo TSHMinfos TIPC_Perm record key TKey uid uid _t gid gid _t cuid uid_t cgid gid t mode mode_t seq cushort end Die Struktur TIPC_Perm legt in allen IPC Systemen Zugriffsrechte fest Sie darf niemals direkt aufgerufen werden TMSG record msg _next PMSG msg_type LongInt msg_spot PChar msg stime LongInt msg_ts lt Integer end Der TMSG Record ist fiir das Handling von Botschafts Warteschlangen implementiert Der Programmierer ben tigt nie Zugriff auf diese Daten C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc Konstanten Typen Variablen O95 TMSGbuf record mtype clong mtext array 0 0 of Char end Der Record TMSGbuf enth lt Daten ber eine Botschaft Dieser Record sollte niemals direkt angewandt werden stattdessen besser ein eigener Record der die Struktur des Records TMSGbuf aufweist und gro genug ist um die Botschaft aufzunehmen Das Feld mtype sollte immer vorhanden sein und einen g ltigen Wert enthalten TMSGinfo record msgpool cint msgmap cint msgmax cint msgmnb cint msgmni cint msgssz cint msgtql cint msgseg cushort end Der Record TMSG
153. nt8 1 sin_family sa_family_t sin_port cushort sin_addr in_addr sin_zero packed array 0 7 of cuint8 end In sockaddr ist eine allgemeine Socketadresse f r Bind Recv und Send gespeichert sockaddr_in packed record case boolean of false ifdef SOCK_HAS_SINLEN sin_len cuchar endif sin_family sa_family t sin_port cushort sin_addr in_addr xpad array 0 7 of Char to get to the size of sockaddr true ifdef SOCK _HAS SINLEN len cuchar endif family sa_family t port cushort addr cardinal pad array 0 7 of Char to get to the size of sockaddr J end sockaddr_in speichert eine INET Socket Adresse f r die Aufrufe Bind Recv und Send sockaddr_in6 packed record Sin6_family sa_family_t Sin6_port ouint i6 Sin6_flowinfo cuint32 Sin6_addr in6_addr Sin6 scope id cuint32 end Ein Alias f r sockaddr_in6 sockaddr_un packed record sun_family sa_family_t sun_path array 0 107 of Char end sockaddr_un speichert eine Unix Socket Adresse f r die Aufrufe Bind Recv und Send TIn6Addr in6_addr Alias f r den Datentyp in6_addr Tin6_addr in6_addr Alias f r den Datentyp sockaddr_in6 TInAddr in_addr Alias f r den Record Datentyp in_addr TInetSockAddr sockaddr_in Alias f r den Datentyp sockaddr_in C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Accept O77 TInetSockAddr6 sockad
154. ock erstellt flag kann einen oder mehreren der folgenden Werte annehmen Kombination mit OR N IPC_CREAT Die Warteschlange wird angelegt falls sie nicht schon vorhanden ist IPC_EXCL Kann nur in Kombination mit IPC_CREAT angegeben werden und f hrt zu einem Fehler falls der Speicherblock bereits vorhanden ist Optional k nnen die Flags noch mit Zugriffsrechten verkn pft werden deren Werte den Zugriffsrechten von Dateien entsprechen Wird ein neuer Speicherblock erstellt hat er die Gr e Size Fehler Bei einem Fehler wird 1 zur ckgegeben und IPCError gesetzt Siehe auch shmat shmdt shmctl 4 21 Unit Video Die Unit Video stellte eine systemunabhangige Zwischenschicht f r den Zugriff auf den Bildschirm zur Verfiigung weshalb auf allen Plattformen ftir die die Unit zur Verfiigung gestellt ist einheitlich auf den Textbildschirm geschrieben werden kann Die Arbeitsweise der Bildschirmroutinen ist sehr einfach Nach dem Aufruf von InitVideo enth lt das Array VideoBuf eine Zwischenspeicherung des Bildschirms der Gr e ScreenWidth ScreenHeight und zwar von links nach recht und oben nach unten wenn man die Elemente des Arrays durchl uft VideoBuf 0 enth lt damit das Zeichen und den Farb code der obersten linken Ecke des Bildschirms und VideoBuf ScreenWidth die Daten f r die Zeichen in der ersten Spalte in der zweiten Reihe auf dem Bildschirm und so weiter Um in diesen Bildschirm zu schreiben mu der T
155. ollKeyEvent aufgerufen und mu die n chste Taste wenn ein Event anliegt zur ckgeben Darf die Tasten nicht speichern Wird von PollShiftStateEvent aufgerufen und mu den aktuellen Status der Strg Alt und Shift Taste Shiftstate zur ckgeben TranslateKeyEvent bersetzt einen rohen Tastaturevent in ein richtiges Tastaturereignis das hei t mu den Shiftstate eintragen und die Funktionstasten Scancodes in Funktionstasten Steuercodes umwandeln Ist TranslateKeyEvent nicht eingetragen wird eine voreingestellte berset TranslateKeyEvent bersetzt ein Tastaturereignis in ein Unicode Gegenst ck UniCode Tabelle 04 11 Die Hooks im Record TKeyBoardDriver Teil 2 von 2 unit logkeys interface procedure StartKeyLogging procedure StopKeyLogging function IsKeyLogging Boolean procedure SetKeyLogFileName FileName String implementation uses SysUtils Keyboard var NewKeyBoardDriver OldKeyBoardDriver TKeyboardDriver Active Logging Boolean LogFileName String KeyLog Text function TimeStamp String begin TimeStamp FormatDateTime hh nn ss Time end procedure StartKeyLogging begin Logging True Writeln KeyLog Start logging keystrokes at TimeStamp end procedure StopKeyLogging begin Writeln KeyLog Stop logging keystrokes at TimeStamp Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0134 Kapitel 4
156. om und RandomFrom ROUNDTO function RoundTo const AVAlue Extended const Digits TRoundToRange Extended RoundTo rundet den angegebenen Gleitkommawert A VAlue auf die angegebene Zahl von Stellen und gibt das Ergebnis zur ck das auf 10Pi8 genau ist Es wird dazu die Standard routine Round aufgerufen Siehe auch TRoundToRange und SimpleRoundTo SAMEVALUE function SameValue const A Extended const B Extended Boolean Overload function SameValue const A Single const B Single Boolean Overload function SameValue const A Extended const B Extended Epsilon Extended Boolean Overload function SameValue const A Single const B Single Epsilon Single Boolean Overload SameValue gibt True zur ck wenn die Gleitkommawerte A und B identisch sind das hei t wenn ihre absoluten Werte kleiner als Epsilon sind Ist der Unterschied gr er wird False zur ckgegeben Die Voreinstellung von Epsilon h ngt vom Datentyp der Pa rameter ab und ist beim Gleitkommatyp Float auf MinFloat voreingestellt Siehe auch MinFloat und IsZero C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math Sec 029 SEC Function Sec x Float Float Sec ist ein Alias f r die Funktion Secant Siehe auch Secant SECANT function Secant x Float Float Secant berechnet die Sekante 1 cos x f r den Parameter x Fehler Bei Angabe eines Werts von 90 oder 270 wird eine Ausnahme ausgel st Siehe auch
157. onen des Compilers angepa t Der Autor ist Belgier professioneller Software Entwickler und lebt mit seiner Familie in Leuven In seiner knapp bemessenen Freizeit schreibt er au er Software auch Fachbeitr ge f r die Zeitschrift freeX und widmet sich Buchprojekten Er versteht au er Fl misch Franz sisch Englisch und Russisch auch ausgezeichnet Deutsch Free Pascal 2 2 aktualisierte Ausgabe Online Daten Michael Van Canneyt bersetzung aus dem Englischen von g J rg Braun Michael Ke ler Florian Kl mpfl Christopher Ozbek und Rosa Riebl Bibliographische Information der Deutschen Nationalbibliothek Die Deutsche Nationalbibliothek verzeichnet diese Publikation in der Deutschen Nationalbibliografie detaillierte bibliographische Daten sind im Internet ber http dnb d nb de abrufbar Alle Rechte vorbehalten Ohne ausdr ckliche schriftliche Genehmigung des Herausgebers ist es nicht gestattet das Buch oder Teile daraus in irgendeiner Form durch Fotokopie Mikrofilm oder ein anderes Verfahren zu vervielf ltigen oder zu verbreiten Dasselbe gilt f r das Recht der ffentlichen Wiedergabe Der Verlag macht darauf aufmerksam da die genannten Firmen und Markenzeichen sowie Produktbezeichnungen in der Regel marken patent oder warenzeichenrechtlichem Schutz unterliegen Die Herausgeber bernehmen keine Gew hr f r die Funktions f higkeit beschriebener Verfahren Programme oder Schaltungen 1 Auflage 2012
158. optlen festgelegt Weitere Informationen zu diesem Aufruf erhalt man in der Unix Magepage zu setsockopt Fehler werden in SocketError gespeichert C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets fpShutDown O85 Es sind folgende Fehlercodes vorgesehen SYS_EBADF Der Socket Deskriptor ist ung ltig SYS_EFAULT Die Adresse ist au erhalb des eigenen Adre bereichs Siehe auch fpGetSockOpt FPSHUTDOWN function fpShutDown s cint how cint cint fpShutDown schlie t das eine Ende der zweiseitigen Verbindung in s Der Parameter how beschreibt wie die Verbindung heruntergefahren wird und kann einer der folgenden Werte sein 0 Weiterer Empfang ist nicht erlaubt 2 Senden und Empfangen ist verboten Bei Erfolg gibt die Funktion den Wert 0 zuriick bei einem Fehler 1 Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen R SYS_EBADF Der Socket Deskriptor ist ung ltig E SYS_ENOTCONN Der Socket ist nicht verbunden SYS_ENOTSOCK Der Deskriptor ist kein Socket Siehe auch fpSocket und fpConnect FPSOCKET function fpSocket domain cint xtype cint protocol cint cint fpSocket erzeugt einen neuen Socket vom Typ xType mit dem Protokoll Protocol in der Domain domain Domain Socket Typ und Protokoll k nnen mit vordefinierten Konstan ten belegt werden siehe dazu den Abschnitt ber Konstanten in diesem Kapitel ab Seite 066 Wird
159. orgesehen SYS_EBADF_________Der Socket Deskriptor ist ung ltig nn SYS_ENOTCONN Der Socket ist nicht verbunden Die Adresse ist au erhalb des eigenen Adre bereichs _SYS_EWOULDBLOCK Die angeforderte Operation w rde den Proze blockieren SYS_ENOBUFS Das System besitzt nicht genug freie Puffer um die Operation durch f hren zu k nnen Siehe auch Send FPRECVFROM function fpRecvFrom s cint buf Pointer len size_t flags cint from PSockaddr Fromlen PSocklen ssize_t fpRecvFrom empf ngt aus dem Socket s Daten mit der maximalen L nge Len in den Puffer Buf Der Empfang wird von den Optionen in Flags gesteuert Der Speicherplatz auf den from zeigt wird mit der Adresse vom Sender gef llt und die L nge in Fromlen Die Funk tion gibt die Zahl der empfangenen Byte aus Fehler Tritt ein Fehler auf wird 1 zur ckgegeben Siehe auch fpSocket und fprecv Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O84 Kapitel 4 Referenz der RTL Online Daten FPSEND function fpSend s cint msg pointer len size_t flags cint ssize t fpSend sendet Len Byte ab der Adresse Msg an den Socket s s mu dazu verbunden sein Optionen k nnen der Verbindung in Flags bergeben werden Die Funktion gibt die Zahl der gesendeten Byte zur ck und 1 wenn ein erkennbarer Fehler auftrat flags kann einer der folgenden Werte sein 1 Daten au erhalb des Bandes verarbeit
160. p Beispiel f r die Funktion ArSinH uses Math begin WriteLn ArSinH 0 WriteLn ArSinH 1 end ARTANH function ArTanH x Float Float ArTanH ergibt den inversen Tangens Hyperbolicus von x wobei x zwischen 1 und 1 sein mu Die Variante ArcTanH dieser Funktion ist aus Gr nden der Delphi Kompatibilitat verfiigbar und funktional identisch Fehler Ist x au erhalb des g ltigen Bereichs von 1 bis 1 wird eine Ausnahme des Typs EInvalidArgument ausgel st Siehe auch ArcosH ArcCos ArcSin und ArTanH program Example5 mathex ex5 pp Beispiel f r die Funktion ArTanH uses Math begin WriteLn ArTanH 0 WriteLn ArTanH 0 5 end CEIL function Ceil x Float Integer Ceil ergibt die niedrigste ganze Zahl die gr er oder gleich x ist Der absolute Wert von x mu kleiner als MaxInt sein Fehler Falls der absolute Wert von x gr er als MaxInt ist tritt ein berlauffehler auf Siehe auch Floor program Example7 mathex ex7 pp Beispiel f r die Funktion Ceil uses Math begin WriteLn Ceil 3 7 sollte 3 sein WriteLn Ceil 3 7 sollte 4 sein WriteLn Ceil 4 0 sollte 4 sein end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 11 Unit Math ClearExceptions O15 CLEAREXCEPTIONS procedure ClearExceptions RaisePending Boolean L scht noch ausstehende Ausnahmen der Gleitkommaeinheit Wenn RaisePending den Wert True besitzt werden diese Ausnahmen nicht
161. p TPaymenttime Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 012 Kapitel 4 Referenz der RTL Online Daten TRoundToRange 37 37 TRoundToRange ist der Bereich der g ltigen Ziffern in der Funktion RoundTo TValueRelationship 1 1 Der Typ beschreibt die relative Reihenfolge kleiner als gleich gr er als von Werten TValueSign 1 1 Der Typ beschreibt das Vorzeichen eines Werts 4 11 2 Prozeduren und Funktionen ARCCOS function ArcCos x Float Float ArcCos liefert den inversen Cosinus f r den Parameter x x sollte zwischen 1 und 1 sein Grenzen eingeschlossen Fehler Ist der Parameter nicht im erlaubten Bereich wird eine Ausnahme des Typs EIn validArgument ausgel st Siehe auch ArcSin ArcosH ArSinH und ArTanH program Examplel mathex exl pp Beispiel f r die Funktion arccos uses Math procedure WriteRadDeg X Float begin WriteLn X 8 5 rad RadToDeg x 8 5 degrees end begin WriteRadDeg ArcCos 1 WriteRadDeg ArcCos Sqrt 3 WriteRadDeg ArcCos Sqrt 2 WriteRadDeg ArcCos 1 2 WriteRadDeg ArcCos 0 WriteRadDeg ArcCos 1 end 2 s 2 s ARCCosH function ArcCosH x Float Float ArcCosH liefert den inversen Cosinus Hyberbolicus fiir den Parameter x Diese Funktion ist ein Alias f r die Funktion ArcosH und f r die Delphi Kompatibilit t vorhanden Siehe auch ArcosH ARCOSH function ArcosH x Float
162. p1 Log10 und Log2 program Example23 mathex ex23 pp Beispiel fiir die Funktion LogN uses Math begin WriteLn LogN 3 4 8 WriteLn LogN 2 4 8 WriteLn LogN 6 9 8 WriteLn LogN Exp 1 ill WriteLn LogN 0 5 1 8 4 WriteLn LogN 0 25 3 8 4 WriteLn LogN 0 125 5 8 4 end MAX function Max a Integer b Integer Integer Overload function Max a Int64 b Int64 Int64 Overload function Max a Extended b Extended Extended Overload Max ergibt das Maximum von Intl und Int2 Siehe auch Min MaxIntValue und MaxValue program Example24 mathex ex24 pp Beispiel f r die Funktion Max uses Math var A B Cardinal begin A 1 B 23 WriteLn Max a b end MAXINTV ALUE function MaxIntValue const Data array of Integer Integer MaxIntValue liefert den gr ten Integerwert aus dem Array Data Diese Funktion ist nur aus Gr nden der Delphi Kompatibilit t verf gbar besser ist an stelle dieser Funktion das flexiblere MaxValue siehe unten Siehe auch MaxValue MinValue und MinIntValue Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O22 Kapitel 4 Referenz der RTL Online Daten program Example25 mathex ex25 pp Beispiel fiir die Funktion MaxIntValue Sicherstellen daB Integer Werte 32 Bit groB sind mode objfpc uses Math type TExArray array 1 100 of Integer var I Integer ExArray TExArray begin Randomiz
163. pp Beispiel f r die Funktion GetKeyEvent uses keyboard var K TKeyEvent begin InitKeyBoard WriteLn Press keys press q to end repeat K GetKeyEvent K TranslateKeyEvent K if IsFunctionKey K then WriteLn Got function key KeyEventToString K else WriteLn not a function key until GetKeyEventChar K q DoneKeyBoard end KEYEVENTTOSTRING function KeyEventToString KeyEvent TKeyEvent String KeyEventToString bersetzt das Tastaturereignis in KeyEvent in die lesbare Beschreibung der gedriickten Taste dazu werden die Konstanten im Konstantenabschnitt ausgegeben Fehler Wird eine unbekannte Taste gedriickt wird der Scancode mit vorangestelltem Konstantenstring SScanCode zurtickgegeben Siehe auch FunctionKeyName ShiftStateToString Ein Beispiel ist bei den meisten anderen Funktionen abgebildet KEYPRESSED function KeyPressed Boolean KeyPressed pr ft die Tastatur Eventqueue darauf ob ein Tastenevent anliegt und ergibt True falls das der Fall ist Die Funktion ruft dazu nur PollKeyEvent auf und pr ft auf ein g ltiges Ergebnis Siehe auch PollKeyEvent GetKeyEvent POLLKEYEVENT function PollKeyEvent TKeyEvent PollKeyEvent pr ft ob ein Tastaturereignis anliegt und gibt es zur ck wenn eines gefun den wird Liegt kein Ereignis an gibt die Funktion den Wert 0 zur ck Es mu beachtet werden da die Funktion den Tastendruck nicht aus der Liste nimmt er steht also in der Even
164. program Example7 mouseex ex7 pp Beispiel f r die Funktion SetMouseXY uses Mouse begin InitMouse Writeln Rechte Maustaste beendet das Programm SetMouseXY 40 12 repeat Writeln GetMouseX GetMouseY if GetMouseX gt 70 then SetMouseXY 10 GetMouseY if GetMouseY gt 20 then SetMouseXY GetMouseX 5 until GetMouseButtons MouseRightButton DoneMouse end SHOWMOUSE procedure ShowMouse ShowMouse zeigt einen bisher ausgeblendeten Mauszeiger Die M glichkeit ob das Aus und Einblenden m glich ist h ngt von den F higkeiten des Treibers ab Ein Beispiel f r diese Prozedur ist bei HideMouse gezeigt Siehe auch HideMouse C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard Allgemeines 0131 4 23 Unit Keyboard Die Unit Keyboard stellt eine systemunabh ngige Zugriffsschicht f r die Tastatur zur Verf gung Mit ihr k nnen der Tastaturstatus abgefragt und auch diverse Ereignisse ge wartet werden Die Funktion GetKeyEvent wartet auf ein Tastaturereignis und liefert ein treiberabh ngiges Tastenereignis Dieser Event kann dann mit der Funktion Translate KeyEvent in ein interpretierbares Ereignis umgewandelt werden Das Ergebnis dieses Aufrufs kann dann in den anderen Untersuchungsfunktionen f r Tastaturereignisse ver arbeitet werden Ein eigener Tastaturtreiber wird mit der Funktion SetKeyboardDriver installiert den ak tuellen ermittelt GetKeyboardDriver Im letzten
165. r ck Der Exit Code kann durch die Funktion DosExitCode bestimmt werden Fehler Fehler werden in DosError ausgegeben Ein Beispiel ist bei der Erl uterung zu DosExitCode gezeigt Siehe auch DosExitCode FEXPAND function FExpand const path PathStr PathStr Beschreibung FExpand erweitert den Parameter path zu einer absoluten Pfadangabe bestehend aus Laufwerksbuchstabe unter DOS Windows OS 2 Pfadangabe und Datei name Auf Dateisystemen die zwischen Gro und Kleinschreibung unterscheiden wie Linux und Unix bleiben die Dateinamen unver ndert sonst werden sie in Gro buchsta ben konvertiert Siehe auch FSplit C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS FindClose O51 program Examplell dosex exll pp Beispiel f r die Funktion FExpand uses Dos begin WriteLn Der vollst ndige Name dieses Programms ist FExpand ParamStr 0 end FINDCLOSE procedure FindClose var f SearchRec FindClose gibt alle zum Suchrecord f geh renden Ressourcen frei Der Aufruf gibt die von den Aufrufen FindFirst und oder FindNext belegten Ressourcen wieder frei wozu die Unix Implementation der Unit DOS eine Tabelle mit offenen Verzeichnissen bereitstellt Wenn die Tabelle voll ist wird eines der Verzeichnisse geschlossen und ein weiteres ge ffnet Dieses System funktioniert gut und ist im Grund vergleichbar mit der urspr ngli chen DOS Implementation ist aber verh ltnism ig l
166. r umt und die Konsole oder das Terminal in seinen Ursprungszustand versetzt wird also in den Status vor dem Aufruf von InitKeyboard Diese Prozedur sollte beim Verlassen des Programms aufgerufen werden Erfolgt der Aufruf nicht oder schl gt fehl wird das Terminal oder die Konsole in einem Zustand belassen in dem sie nicht mehr brauchbar ist Wie das genau aussieht h ngt von der Plattform ab unter der das Programm l uft Unter Unix restauriert der voreingestellte Tastaturtreiber die Zeilenenden au erdem von System Output nach 10 Ein Beispiel f r den Aufruf dieser Prozedur wird bei den meisten anderen Funktionen gezeigt Siehe auch InitKeyBoard FUNCTIONKEYNAME function FunctionKeyName KeyCode Word String FunctionKeyName gibt einen String mit dem Namen der Funktionstaste f r den Code Key Code zur ck Dabei kann es sich um eine Fxx Taste oder eine der Cursortasten handeln Fehler In F llen in denen KeyCode keinen Code einer Funktionstaste enth lt wird der String SUnknownFunctionKey mit dem angeh ngten KeyCode zur ckgegeben Siehe auch ShiftStateToString und KeyEventToString program Example8 kbdex ex8 pp Beispiel f r die Funktion FunctionKeyName uses Keyboard C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard GetKeyboardDriver 0141 var K TKeyEvent begin InitKeyboard WriteLn Dr cken Sie eine Funktionstaste oder q um zu beenden repeat K GetKeyE
167. r C Bibliothek an es wird allerdings dringend empfohlen die normalen Free Pascal Routinen zu nutzen Konstanten LibName c LibName ist der Name der aktuell eingebunden Bibliothek auf den meisten Systemen wird das libc so sein Prozeduren und Funktionen CALLOC function CAlloc UnitSize PtrUInt UnitCount PtrUInt Pointer CAlloc belegt Speicher um UnitCount Einheiten von jeweils der Gr e UnitSize aufzu nehmen Der Speicher ist insgesamt ein Block Die Funktion gibt den Zeiger auf den neu angelegten Speicherblock zur ck Siehe auch Malloc Free und ReAlloc FREE procedure Free P Pointer Free gibt den Speicherblock auf den P zeigt dem System zur ck Nach dem Aufruf von Free ist der Zeiger P nicht mehr g ltig Siehe auch Malloc und ReAlloc C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 10 Die Manager Units Malloc 09 MALLOC function Malloc Size PtrUInt Pointer Malloc ist die externe Deklaration des malloc Aufrufs der C Bibliothek Die Funktion besitzt einen Parameter zum bermittlung der gew nschten Gr e und gibt einen Zeiger auf einen Zeiger auf einen Speicherbereich der gew nschten Gr e oder NIL zur ck wenn kein Speicher belegt werden konnte Siehe auch Free und ReAlloc REALLOC function ReAlloc P Pointer Size PtrUInt Pointer ReAlloc fordert einen Speicherbereich auf den P zeigt erneut an Der neue Bereich wird die Gr e Size haben und so viele
168. r ab wenn er aktiv ist Ist er bereits abgeschaltet oder noch nicht initialisiert kehrt die Prozedur sofort zur ck Beim Abschalten des Bild schirmtreibers werden alle belegten Ressourcen freigegeben und falls m glich der Bildschirm wird in den Status versetzt den er vor dem Aufruf von InitVideo hatte Zu s tzlich sind die beiden Speicherbereiche VideoBuf und OldVideoBuf nach dem DoneVi deo nicht mehr g ltig DoneVideo sollte nach einem Aufruf von InitVideo immer die Arbeit abschlie en Schl gt der Aufruf fehl oder beim Programmende vergessen wird der Bildschirm nach dem Be enden des Programms in einem unbrauchbaren Zustand hinterlassen Ein Beispiel f r die Prozedur ist bei den meisten anderen Funktionen zu finden Fehler Normalerweise sollten keine Fehler auftreten Der Treiber meldet Fehler ber die Variable ErrorCode Siehe auch InitVideo GETCAPABILITIES function GetCapabilities Word GetCapabilities gibt die F higkeiten des aktuellen Treibers zur ck wobei es sich eine mit OR verkn pfte Kombination der folgenden Konstanten handelt _cpUnderLine Der Bildschirmtreiber unterst tzt das Attribut f r Unterstreichen _cpColor Der Bildschirmtreiber unterst tzt Farbausgaben cpChangeCursor Der Bildschirmtreiber erlaubt das Andern des Cursors Siehe auch GetCursorType und GetVideoDriver program Example4 videoex ex4 pp Beispiel fiir die Funktion GetCapabilities uses Video var W Word
169. r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0140 Kapitel 4 Referenz der RTL Online Daten Der TKeyRecord ist die Umsetzung des TKeyEvents Die Bedeutung der einzelnen Felder ist in Tabelle 04 14 erl utert Feld Bedeutung KeyCode Abh ngig von den Flags entweder die physikalische Darstellung einer Taste unter DOS der Scancode ein Paar von ASCII Codes oder das bersetzte Flags Die Definition wie KeyCode zu interpretieren ist Tabelle 04 14 Die Struktur des Records TKeyRecord Der ShiftState wird mit den verschiedenen daf r vorgesehenen Konstanten gepr ft und die Flags im letzten Byte mit den Konstanten kbASCII kbUniCode kbFnKey kbPhys und kbReleased Liefern zwei Tasten den selben Zeichencode zur ck gibt es keine M glichkeit festzustel len welche gedr ckt wurde zum Beispiel die normale oder graue Taste Wenn man solche Unterschiede herausfinden m chte mu mit den un bersetzten Tastencodes gear beitet werden die jedoch systemabh ngig sind F r diese Aufgabe k nnen systemabh n gige Konstanten definiert werden die m glicherweise den selben Namen oder unter schiedliche Werte besitzen 4 23 4 Prozeduren und Funktionen DONEKEYBOARD procedure DoneKeyboard Wenn der Tastaturtreiber aktiv ist entfernt DoneKeyboard die Tastaturschnittstelle Ist sie nicht initialisiert macht die Prozedur nichts Der Aufruf f hrt dazu da jeglicher belegter Speicher aufge
170. rSinH und wegen der Delphi Kompatibilitat vorhanden Siehe auch ArSinH ARCTAN2 function ArcTan2 y Float x Float Float ArcTan2 berechnet arctan y x und gibt einen Winkel im richtigen Quadraten zur ck Der zur ckgegebene Winkel bewegt sich im Bereich n bis n rad Die Werte von x m ssen zwischen 2 und 2 liegen weiterhin mu x ungleich 0 sein Auf Intel Systemen ist diese Funktion mit der nativen Intel Funktion fpatan implementiert Fehler Wird f r x der Wert 0 angeben kommt es zu einem berlauf Siehe auch ArcCos ArCosH ArSinH und ArTanH program Example6 mathex ex6 pp Beispiel f r die Funktion ArcTan2 uses Math procedure WriteRadDeg X Float begin WriteLn X 8 5 Rad RadToDeg x 8 5 Grad end begin WriteRadDeg ArcTan2 1 1 end Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O14 Kapitel 4 Referenz der RTL Online Daten ARCTANH function ArcTanH x Float Float ArcSinH gibt den inversen Tangens Hyperbolicus fiir den Parameter x zuriick Diese Funktion ist ein Alias fir ArTanH und wird wegen der Delphi Kompatibilitat bereitge stellt Siehe auch ArTanH ARSINH function ArSinH x Float Float ArSinH ergibt den inversen Sinus Hyperbolicus f r den Parameter x Die Variante Arc SinH ist aus Gr nden der Delphi Kompatibilit t implementiert Siehe auch ArcosH ArcCos ArcSin und ArTanH program Example4 mathex ex4 p
171. ram Example3 stringex ex3 pp Beispiel f r die Funktion StrPas uses Strings const P PChar Das ist ein PChar String var S String begin S StrPas P WriteLn S S end STRPCoPY function StrPCopy d PChar const s String PChar Konvertiert den Pascal String in s in einen nullterminierten String und kopiert ihn nach d d mu gro genug sein um den String aufnehmen zu k nnen das hei t eine Gr e von Length s 1 besitzen Fehler Es wird keine L ngenpr fung durchgef hrt Siehe auch StrPas und SysUtils StrPCopy program Example2 stringex ex2 pp Beispiel f r die Funktion StrPCopy uses Strings const S das ist ein normaler String var Pe PChar begin P StrAlloc Length S 1 if StrPCopy P S lt gt P then WriteLn Das ist unm glich else WriteLn P StrDispose P end STRPOS function StrPos Strl PChar Str2 PChar PChar Gibt einen Zeiger auf das erste Vorkommen von Str2 in Strl zur ck Enth lt Str1 den gesuchten Teilstring nicht wird NIL zur ckgegeben Siehe auch StrScan StrRScan und SysUtils StrPos program Examplel5 stringex ex15 pp Beispiel f r die Funktion StrPos uses Strings oder SysUtils Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O66 Kapitel 4 Referenz der RTL Online Daten const P PChar Das ist ein PChar String S PChar ist begin WriteLn Position von is
172. raturverlag GmbH Kapitel 4 21 Unit Video InitVideo 0123 INITVIDEO procedure InitVideo InitVideo initialisiert das Video Subsystem War es bereits eingeschaltet macht die Pro zedur nichts und kehrt sofort zur ck Nach dem Initialisieren des Treibers werden die beiden Zeiger VideoBuf und OldVideoBuf belegt basierend auf den beiden Variablen ScreenWidth und ScreenHeight Danach wird der Bildschirm gel scht Fehler Kann der Treiber nicht initialisiert werden wird die Variable ErrorCode gesetzt Siehe auch DoneVideo Ein Beispiel f r diese Prozedur ist bei den meisten anderen Funktionen gezeigt LOCKSCREENUPDATE procedure LockScreenUpdate LockScreenUpdate erh ht die Sperrstufe f r die Bildschirmaktualisierung um den Wert 1 Solange dieser Zahler ungleich 0 ist wird der Bildschirm nicht aktualisiert Mit dieser Funktion kann die Aktualisierung des Bildschirms optimiert werden Insbe sondere bei einer gro en Zahl von Schreiboperationen auf den Bildschirm m glicherwei se von unbekannten Funktionen f hrt der Aufruf von LockScreenUpdate vor dem Zeich nen und UnlockScreenUpdate nach dem Zeichnen gefolgt von einem UpdateScreen dazu da alle Schreibarbeiten auf den Bildschirm auf einen Schlag durchgef hrt werden Siehe auch UpdateScreen UnlockScreenUpdate und GetLockScreenCount Ein Beispiel ist bei der Funktion GetLockScreenCount gezeigt SETCURSORPOS procedure SetCursorPos NewCursorX Word NewCursorY Word
173. s P2 noch einmal anh ngen WriteLn P2 P2 StrDispose P2 end STRCOMP function StrComp Str1 PChar Str2 PChar SizeInt Vergleicht die beiden nullterminierten Strings Str1 und Str2 Das Ergebnis ist ein negativer SizeInt wenn Str1 kleiner als Str2 ist 0 wenn Str1 und Str2 identisch sind Ein positiver SizeInt wenn Str1 gr er als Str2 ist Ein Beispiel ist bei der Funktion StrLComp gezeigt Siehe auch StrLComp StrIComp und StrLIComp STRCOPY function StrCopy Dest PChar Source PChar PChar Kopiert den nullterminierten String in Source nach Dest und gibt einen Zeiger auf Dest zur ck Dest mu genug freien Speicher reserviert haben um Source aufnehmen zu k n nen mindestens aber StrLen Source 1 Byte Fehler Es wird keine L ngen berpr fung durchgef hrt Siehe auch StrPCopy StrLCopy StrECopy und SysUtils StrCopy program Example4 stringex ex4 pp Beispiel f r die Funktion StrCopy uses Strings const P PChar Das ist ein PChar String var PP PChar begin PP StrAlloc StrLen P 1 StrCopy PP P if StrComp PP P lt gt 0 then WriteLn Oh oh Probleme else WriteLn Alles funktioniert PP PP StrDispose PP end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 18 Unit Strings StrDispose O61 STRDISPOSE procedure StrDispose P PChar Entfernt den String auf den P zeigt vom Heap und gibt den Speicher wieder frei
174. s 2 do begin name append has_arg 0 flag NIL value 0 end with theopts 3 do begin name delete has_arg 1 flag NIL value 0 end with theopts 4 do begin name verbose has_arg 0 flag NIL value 0 end with theopts 5 do begin name create has_arg 1 flag s NIL value c end with theopts 6 do begin name file has_arg 1 flag NIL value 0 C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 14 Unit HeapTrc GetOpt 039 end with theopts 7 do begin name ge Nts has_arg 0 flag NIL end c 0 repeat c GetLongOpts abc d 012 theopts 1 OptionIndex case c of ipi FA ic AM HA By igi pis ng g s begin WriteLn Erhalten Optind c end 0 begin Write Lange Option theopts optionindex name if theopts optionindex has_arg gt 0 then WriteLn Mit Wert optarg else WriteLn end a WriteLn Option a b WriteLn Option b cet c WriteLn Option x optarg d WriteLn Option d optarg WriteLn Fehler bei Option Optopt until c EndOfOptions if optind lt ParamCount then begin Write Keine Optionen while Optind lt ParamCount do begin Write ParamStr optind Inc Optind end WriteLn end end 4 14 Unit HeapTrc Die Unit Heaptrc ist systemunabh ngig und hilft bei der Fehlersuche bei Speicherzuwei sungen und freigaben
175. s const Data array of Extended Float function SumOfSquares const Data PExtended const N Integer Float SumOfSquares berechnet die Summe der Quadrate der Werte im Array Data Die zweite Version der Funktion bernimmt einen Zeiger auf ein Array mit N Werten Siehe auch Sum SumsAndSquares TotalVariance und Variance program Example45 mathex ex45 pp Beispiel f r die Funktion SumOfSquares uses Math var I 1 100 ExArray array 1 100 of Float begin Randomize for I Low ExArray to High ExArray do ExArray i Random Random 100 WriteLn Max MaxValue ExArray 8 4 WriteLn Min MinValue ExArray 8 4 WriteLn Sum squares SumOfSquares ExArray 8 4 WriteLn Sum squares b SumOfSquares ExArray 1 100 8 4 end SUMSANDSQUARES procedure SumsAndSquares const Data array of Extended var sum Float var SumOfSquares Float procedure SumsAndSquares const Data PExtended const N Integer var sum Float var SumOfSquares Float SumsAndSquares berechnet die Summe der Werte und die Summe der Quadrate der Werte im Array Data und gibt die Ergebnisse in den Parametern sum und SumOfSquares zur ck Die zweite Version der Funktion bernimmt einen Zeiger auf ein Array mit N Werten Siehe auch Sum SumOfSquares TotalVariance und Variance program Example45 mathex ex46 pp Beispiel f r die Funktion SumOfSquares uses Math Download nur f r den Eigenbedarf die We
176. s vorgese hen SYS_EFAULT OptVal zeigt auf einen Bereich au erhalb des eigenen Adre bereichs Siehe auch fpSetSockOpt C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets fpListen 083 FPLISTEN function fpListen s cint backlog cint cint fpListen lauscht auf bis zu backlog Verbindungen von Socket s Der Socket s mu entwe der vom Typ SOCK_STREAM oder vom Typ Sock_SEQPACKET sein Die Funktion gibt 0 zur ck wenn eine Verbindung angenommen wurde 1 beim Auftre ten eines Fehlers Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen SYS_EBADF Der Socket Deskriptor ist ung ltig SYS_EOPNOTSUPP Der Socket unterst tzt die Operation Listen nicht Siehe auch fpSocket fpBind und fpConnect FPRECV function fpRecv s cint buf Pointer len size_t Flags cint ssize_t fpRecv liest maximal len Byte aus dem Socket s an die Adresse buf Der Socket mu in einem verbundenen Status sein Flags kann einer der folgenden Werte sein 7 1 Daten au erhalb des Bands verarbeiten Out of band Data 4 Das Routing soll umgangen und eine direkte Schnittstelle verwendet ee werden e 22 Warte auf die vollstandige Anfrage oder generiere eine Fehlermeldung Die Funktion gibt die Zahl der aktuell aus dem Socket gelesenen Byte aus oder 1 wenn ein erkennbarer Fehler auftrat Fehler werden in SocketError gespeichert Folgende Fehlercodes sind v
177. se Funktionen neu implementiert werden notwendig ist nur UpdateScreen Die allgemeinen Funktionen in der Unit Video pr fen welche Funktionalit t der Treiber zur Verf gung stellt Die Funktionalit t dieser Aufrufe ist die selbe wie bei den in diesem Kapitel beschriebenen Aufrufen der Unit Video womit das erwartete Verhalten aus den Beschreibungen in diesem Abschnitt erschlossen werden kann Einige der Aufrufe ben tigen allerdings ein paar zus tzliche Hinweise InitDriver Diese Prozedur wird von InitVideo aufgerufen Sie sollte alle Daten strukturen die f r die Funktionsf higkeit des Treibers ben tigt werden bereitstellen und m glicherweise auch die Bildschirminitialisierungen Es mu daf r gesorgt sein da die Prozedur garantiert nur einmal aufgerufen wird ein erneuter Aufruf darf nur nach einem DoneVideo erfolgen Die Variablen ScreenWidth und ScreenHeight sollten nach einem Aufruf dieser Prozedur richtig initialisiert sein da InitVideo die beiden Bildschirmpuffer VideoBuf und OldVideoBuf auf den Werten an a ESG Variablen initialisiert 0 0 DoneDriver Diese Prozedur sollte alle von InitDriver aufgebauten Strukturen wieder freigeben Au erdem sollte m glichst auch der Bildschirm auf die Werte vor der Initialisierung des Treibers zur ckgesetzt werden Die beiden Arrays VideoBuf und OldVideoBuf werden vom allgemeinen BEE E Aufruf DoneVideo wieder freigegeben _ UpdateScreen Die einzige unbedingt notwendige Funktion des Trei
178. sein Die Attribute k n nen eine Summe der folgenden Konstanten sein Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O58 Kapitel 4 Referenz der RTL Online Daten ReadOnly 01h Hidden 02h SysFile 04h VolumeId 08h Directory 10h Archive 20h AnyFile 3fh Bei unixartigen Dateisystemen wie Linux ist die Prozedur zwar implementiert bewirkt aber nichts Fehler Fehler werden in DosError gemeldet Siehe auch GetFAttr SETFTIME procedure SetFTime var f Time LongInt SetFTime stellt die Zeit der letzten nderung der Datei f auf Time ein Die Zeit mu im gepackten Zeitformat von DOS vorliegen das durch PackTime erzeugt werden kann F mu zugewiesen aber darf nicht ge ffnet sein Bei unixartigen Dateisystemen wie Linux ist die Prozedur zwar implementiert macht aber nichts Fehler Fehler werden in DosError gemeldet Siehe auch GetFTime PackTime und UnPackTime SETINTVEC procedure SetIntVec intno Byte vector Pointer SetIntVec setzt den Interruptvektor IntNo auf die Interrupt Prozedur auf die Vector ver weist Diese Prozedur ist zwar aus Gr nden der Abw rtskompatibilit t implementiert sie ist aber wirkungslos Siehe auch GetIntVec SETTIME procedure SetTime hour Word minute Word second Word sec100 Word SetTime setzt die Zeit der internen Systemuhr Der Parameter hour wird im 24 Stunden System ausgelesen minute second un
179. sind vordefiniert f r das aktuelle Laufwerk fd0 f r das erste Floppy Laufwerk fd1 f r das zweite Floppy Laufwerk f r die erste Festplatte Der erste Aufruf von AddDisk f gt deshalb einen Namen f r die zweite Festplatte der Liste hinzu der zweite Aufruf f r das dritte Laufwerk und so weiter bis 23 Laufwerke hinzugef gt wurden entsprechend Laufwerke D bis Z Siehe auch DiskFree DiskSize DISKFREE function DiskFree drive Byte Int64 DiskFree liefert die Anzahl der freien Byte auf dem Laufwerk Der Parameter Drive gibt an welches Laufwerk untersucht werden soll Dieser Parameter entspricht 1 f r Laufwerk a 2 f r Laufwerk b und so weiter Der Wert 0 als Parameter bergeben gibt den freien Speicher des aktuellen Laufwerks zur ck Normalerweise ist der freie Speicher die Gr e der Festplattenbl cke multipliziert mit der Anzahl der freien Bl cke auf der Fest platte Nur f r Linux DiskFree und DiskSize ben tigen eine Datei auf dem ausgew hlten Laufwerk dies verlangt die Systemfunktion statfs Vier Dateinamen werden von der Unit DOS vorinitialisiert f r das aktuelle Laufwerk fd0 f r das erste Floppy Laufwerk fd1 f r das zweite Floppy Laufwerk f r die erste Festplatte Es k nnen jedoch bis zu 26 verschiedene Laufwerke angegeben werden Ein weiteres nicht vordefiniertes Laufwerk f gt die Prozedur AdaDisk hinzu
180. sollte auf die Gr e des an dieser Stelle vor dem Aufruf befindlichen freien Speichers gesetzt werden Fehler Bei einem Fehler werden 1 und der Fehler in SocketError zur ckgegeben Die folgenden Fehlerwerte k nnen auftreten SYS EBADE Der Socket Deskriptor ist ung ltig nn _SYS_ENOTSOCK Der Deskriptor ist kein Socket _SYS_EFAULT Addr zeigt aus dem g ltigen Adre bereich heraus SYS_EWOULDBLOCK Die angeforderte Operation w rde den Proze blockieren Siehe auch fpListen fpConnect und fpBind F r ein Listingbeispiel siehe sockex socksvr pp bei der Funktion Accept FPBIND function fpBind s cint Addrx PSockaddr Addrlen TSocklen cint fpBind bindet den Socket s an die Adresse Addrx Addrx besitzt die Gr e Addrlen Die Funktion meldet 0 wenn sie erfolgreich ausgef hrt wurde und 1 wenn nicht Fehler Fehler werden in SocketError zur ckgegeben und enthalten die folgenden Werte SYS_EACCESS Die Adresse ist gesch tzt und das Programm hat nicht das Recht sie zu ffnen Weitere m gliche Fehler stehen in den Unix Manpages Siehe auch Socket FPCONNECT function fpConnect s cint name PSockaddr Namelen TSocklen cint fpConnect ffnet eine Verbindung zu einer Gegenstelle deren Adresse in Name angege ben ist NameLen enth lt die L nge der Adresse Der Typ von Name h ngt von der Art der Verbindung die zu ffnen versucht wird ab und ist grunds tzlich entweder vom Typ TSockAddr oder T
181. st bei den meisten anderen Mausfunktionen gezeigt Siehe auch DetectMouse und InitMouse Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0128 Kapitel 4 Referenz der RTL Online Daten GETMOUSEBUTTONS function GetMouseButtons Word GetMouseButtons meldet den aktuellen Tastenstatus der Maus das hei t sie gibt eine mit OR verbundene Kombination der folgenden Konstanten zur ck _MouseLeftButton Die linke Maustaste ist gedr ckt MouseMiddleButton Die mittlere Maustaste ist gedr ckt Siehe auch GetMouseEvent GetMouseX GetMouseY program Example2 mouseex ex2 pp Beispiel f r die Funktion GetMouseButtons uses mouse begin InitMouse WriteLn Rechte Maustaste beendet das Programm while GetMouseButtons lt gt MouseRightButton do Dummy DoneMouse end GETMOUSEDRIVER procedure GetMouseDriver var Driver TMouseDriver GetMouseDriver ergibt den aktuell gesetzten Maustreiber Auf diese Weise kann der aktu elle Treiber ermittelt werden damit verschiedene Callback Routinen berschrieben wer den k nnen Siehe auch SetMouseDriver GETMOUSEEVENT procedure GetMouseEvent var MouseEvent TMouseEvent GetMouseEvent liefert das nachsten Mausereignis eine Bewegung einen Tastendruck oder eine Tastenfreigabe oder wartet auf das Ereignis wenn sich derzeit keines in der Warteschlange befindet Einige Maustreiber stellen eine Maus Event Warteschlange zur
182. stanten k nnen an die verschiedenen xxxctl Befehle bermittelt werden Dabei handelt es sich um interne Steuercodes die nicht verwendet werden sollten MSGMAX 4056 Interner Message Steuercode Nicht verwenden Interner Message Steuercode Nicht verwenden MSG_NOERROR 1 shl 12 Interner Message Steuercode Nicht verwenden Konstanten f r Semaphore E SEM_GETALL _ emaphor Operation Alle Semaphorenwerte lesen SEM_GETNCNT Semaphor Operation Zahl der Prozesse die auf die Res natn DUCE waren ermitteln nnn SEM_GETPID 11 Semaphor Operation Proze ID der letzten Operation mein SEM GETVAL 215 Samanlhor aaa a Wert der Ssmephors econ SEM_GETVAL Semaphor Operation Aktuellen Wert der Semophore lesen Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 094 Kapitel 4 Referenz der RTL Online Daten SEM_GETZCNT 15 Semaphor Operation Zahl der Prozesse ermitteln die darauf warten da die Semaphore den Wert 0 erreichen SEM_SEMMNS SEM_SEMMNI Semaphor Operation 2 Semaphor Operation Semaphor Operation Alle Semaphorenwerte setzen SEM_UNDO 1000 Konstante f r semop Die folgenden Konstanten f r den shmctl Befehl sind nicht weiter beschrieben SHM LOCK 11 SHM_R 4 shl 6 SHM RDONLY 1 shl 12 SHM REMAP 4 shl 12 SHM RND 2 shl 12 SHM UNLOCK 12 SHM_W 2 shl 6 Typdeklarationen TKey ci
183. sten False Fehler Bei einem Fehler wird false zur ckgeliefert und IPCError wird gesetzt Siehe auch shmget shmat und shmdt program shmtool ipcex shmtool pp uses ipc Strings Baseunix const SegSize 100 var key TKey ShmID cntr LongInt SegPtr PChar procedure Usage begin WriteLn Usage shmtool w rite text WriteLn r ead WriteLn d elete WriteLn m ode change mode Halt 1 end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc shmctl 0107 procedure Writeshm ID LongInt ptr PChar S String begin StrCopy ptr s end procedure ReadSHM ID LongInt ptr PChar begin WriteLn Read ptr end procedure RemoveSHM ID LongInt begin ShmCt1 ID IPC_RMID NIL WriteLn Shared memory marked for deletion end procedure ChangeMode ID LongInt mode String var m Word code Integer data TSHMid ds begin Val mode m code if code lt gt 0 then Usage if ShmCt1 ShmID IPC_STAT data 1 then begin WriteLn Error ShmCtl fpgeterrno Halt 1 end WriteLn Old permissions data shm_perm mode data shm_perm mode m if ShmCt ShmID IPC_SET data 1 then begin Writeln Error ShmCt fpgeterrno Halt 1 end WriteLn New permissions data shm_perm mode end const ftokpath 0 begin if ParamCount lt 1 then Usage key ftok PChar ftokpath 1 Ord S S
184. t GetPeerName liefert den Namen der Einheit die mit dem Socket Sock verbunden ist Damit dieser Aufruf gelingt mu der Socket verbunden sein Addr sollte auf gen gend Speicher verweisen um den Namen speichern zu k nnen Die Gr e des Speichers auf den Addr zeigt sollte von Addrlen festgelegt werden War die Funktion erfolgreich wird Addr mit dem Namen gef llt und Addrlen wird zur Lange von Addr gesetzt Fehler werden in SocketError gespeichert und k nnen die folgenden Werte annehmen ec y genug SYS_ENOTSOCK Der Deskriptor ist kein Socket Siehe auch Connect Socket und connect GETSOCKETNAME function GetSocketName Sock LongInt var Addr var Addrlen LongInt LongInt Hinweis Diese Funktion ist veraltet GetSockName liefert den aktuellen Namen des angegebenen Sockets Sock zur ck Addr sollte auf gen gend Speicher verweisen um den Namen aufnehmen zu k nnen Die Gr e des Speichers auf den verwiesen wird sollte in Addrlen angegeben werden Wenn die Funktion erfolgreich war wird Addr auf den Namen und Addrlen auf die L nge von Addr gesetzt Fehler Fehler werden in SocketError gespeichert und k nnen die folgenden Werte an nehmen SYS_EFAULT Addr zeigt auf einen Bereich au erhalb des Adre raums Siehe auch Bind C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets GetSocketOptions 087 GETSOCKETOPTIONS function GetSocketOptions Sock LongInt Lev
185. t Alt oder Strg zusammen mit der normalen Taste gedr ckt wurde Wurde keine der Sondertasten bet tigt wird 0 zur ckgegeben Diese Funktion zeitigt nicht immer das erwartete Ergebnis In einem X Terminal unter Unix ist nicht garantiert da die Modifizierertasten immer funktionieren Siehe auch GetKeyEventUniCode GetKeyEventFlags GetKeyEventCode GetKeyEvent Char und GetKeyEvent program Example3 kbdex ex3 pp Beispiel f r die Funktion GetKeyEventShiftState uses keyboard var K TKeyEvent S Byte begin InitKeyBoard Write Dr cken Sie eine Taste in Kombination mit Strg Shift Alt WriteLn oder beenden Sie mit q repeat K GetKeyEvent K TranslateKeyEvent K S GetKeyEventShiftState K if S 0 then WriteLn Keine Sondertaste gedriickt else begin WriteLn Ermittelte Sondertasten ShiftStateToString K False WriteLn Empfangene Taste KeyEventToString K end until GetKeyEventChar k q DoneKeyboard end GETKEYEVENTUNICODE function GetKeyEventUniCode KeyEvent TKeyEvent Word GetKeyEventUniCode liefert den Unicode Anteil des angegebenen TKeyEvent Records KeyEvent falls dieser ein bersetztes Unicode Zeichen enth lt Siehe auch GetKeyEventShiftState GetKeyEventFlags GetKeyEventCode GetKeyEvent Char und GetKeyEvent INITKEYBOARD procedure InitKeyboard InitKeyboard initialisiert den Tastaturtreiber Ist er schon aktiv kehrt die Prozedur sofort zur ck
186. t in P SizeInt StrPos P S SizeInt P end STRRSCAN function StrRScan p PChar c Char PChar Gibt einen Zeiger auf das letzte Vorkommen des Zeichens c im nullterminierten String p zur ck Wird c nicht gefunden liefert die Funktion den Wert NIL Ein Beispiel befindet sich bei der Funktion StrScan Siehe auch StrScan StrPos und SysUtils StrRScan STRSCAN function StrScan p PChar c Char PChar Gibt einen Zeiger auf das erste Vorkommen des Zeichens c im nullterminierten String p zur ck Falls c nicht gefunden wird liefert die Funktion den Wert NIL Siehe auch StrRScan StrPos und SysUtils StrScan program Examplel3 stringex ex13 pp Beispiel f r die Funktionen StrScan und StrRScan uses Strings const P PChar Das ist ein PChar String s Char s begin Writeln P ab dem ersten s StrScan P s Writeln P ab dem letzten s StrRScan P s end STRUPPER function StrUpper p PChar PChar Konvertiert p in Gro buchstaben Die Funktion gibt p zur ck Ein Beispiel ist bei der Funktion StrLower gezeigt Siehe auch StrLower und SysUtils StrUpper 4 19 Unit Sockets Die Unit Sockets ruft folgende Units auf baseunix UnixType 4 19 1 Konstanten Typen Variablen Konstanten Die folgenden Konstanten bestimmen die Socket Domain sie stehen im Aufruf von Socket Konstante Wert AdreBfamilie AF_UNSPEC 0 Nicht angegeben AFUNK k O 1 ____UnieDomain Sockese__
187. t SysUtils gewechselt werden In dieser Unit sind bei L ngenanga ben Definitionen des Datentyps SizeInt implementiert Dieser Datentyp der in der Unit System definiert ist ist auf 32 Bit Systemen ein Synonym f r LongInt auf 64 Bit Syste men f r Int64 Bei Strings sollte immer mit SizeInt gearbeitet werden 4 18 1 Prozeduren und Funktionen STRALLOC function StrAlloc L SizeInt PChar StrAlloc reserviert Speicher fiir den String mit der Lange Len auf dem Heap das abschlie Bende ASCII 0 ist in dieser L ngenangabe enthalten Dann wird ein Zeiger auf den Spei cherplatz zuriickgegeben Fehler Ist nicht genug Speicher f r die Operation auf dem Heap vorhanden wird ein Laufzeitfehler ausgel st Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O60 Kapitel 4 Referenz der RTL Online Daten Hinweis Strings StrAlloc und SysUtils StrAlloc siehe dort sind nicht kompatibel Siehe auch StrNew StrPCopy und SysUtils StrAlloc STRCAT function StrCat dest PChar source PChar PChar H ngt Source an Dest und gibt Dest zur ck Fehler Keine es findet keine L ngen berpr fung statt Siehe auch StrLCat und SysUtils StrCat program Examplell stringex exll pp Beispiel f r die Funktion StrCat uses Strings const Pl PChar Das ist ein PChar String var P2 PChar begin P2 StrAlloc StrLen Pl 2 1 StrMove P2 P1 StrLen P1 1 P2 Pl StrCat P2 Pi
188. t mit dem Datentyp Double dargestellt werden kann Siehe auch IsZero und IsInfinite ISZERO function IsZero const A Single Epsilon Single Boolean Overload function IsZero const A Single Boolean Overload function IsZero const A Extended Epsilon Extended Boolean Overload function IsZero const A Extended Boolean Overload IsZero pr ft ob der Gleitkommawert A Null ist wobei eine Genauigkeit bis zu Epsilon ber cksichtigt wird Die Funktion ergibt True wenn Abs A kleiner ist als Epsilon Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet O20 Kapitel 4 Referenz der RTL Online Daten Die Voreinstellung fiir Epsilon hangt vom Datentyp des Parameters ab und ist bei Gleit kommawerten des Datentyps Float auf MinFloat gesetzt Siehe auch IsNan IsInfinite und SameValue LDEXP function LdExp x Float const p Integer Float LdExp gibt 2 mal x zuriick Siehe auch Inxp1 Log10 Log2 und LogN program Examplel9 mathex ex19 pp Beispiel f r die Funktion LdExp uses Math begin WriteLn LdExp 2 4 8 4 WriteLn LdExp 0 5 3 8 4 end LNXP1 function Inxpl x Float Float Lnxp1 ergibt den nat rlichen Logarithmus von 1 X Das Ergebnis ist bei kleineren Wer ten von x genauer x mu gr er als 1 sein Fehler Falls f r x der Wert 1 angegeben ist wird eine Ausnahme des Typs Elnvalid Argument ausgel st Siehe auch Idexp Log10 Log2 und LogN pro
189. tSkewKurtosis O25 WriteLn Min Float b MinValue Pf_array 100 8 4 WriteLn Min Integer MinValue i_array 8 WriteLn Min Integer b MinValue Pi_array 100 8 end MOMENTSKEWKURTOSIS procedure MomentSkewKurtosis const Data Array of Extended out ml Float out m2 Float out m3 Float out m4 Float out skew Float out kurtosis Float procedure MomentSkewKurtosis const Data PExtended const N Integer out ml Float out m2 Float out m3 Float out m4 Float out skew Float out kurtosis Float MomentSkewKurtosis berechnet die ersten vier Momente der Verteilung der Werte in Data und gibt sie in ml m2 m3 und m4 zur ck und berechnet au erdem auch Skew Schiefe und Kurtosis Wolbung Siehe auch Mean und MeanAndStdDev program Example32 mathex ex32 pp Beispiel f r die Funktion MomentSkewKurtosis uses Maths var distarray array 1 1000 of Float I LongInt ml m2 m3 m4 skew kurtosis Float begin Randomize for I Lowtdistarray to High distarray do distarray i Random HonentSkewkurtosis DistArray ml m2 m3 m4 skew kurtosis WriteLn lst moment m1 8 6 WriteLn 2nd moment m2 8 6 WriteLn 3rd moment m3 8 6 WriteLn 4th moment m4 8 6 WriteLn Skew skew 8 6 WriteLn Kurtosis kurtosis 8 6 end NORM function Norm const Data array of Extended Float function Norm const Data PExtended const N Integer Float
190. tentyp beschreibt die Gleitkommaprozessor Exceptions Wert Fehler exDenormalizedexInvalidOp Ungiltige Operation mn exOverflow Gleitkomma berlauf exZeroDivide Division durch Null Tabelle 04 1 Die Werte des Aufz hlungstyps f r TFPUException TFPUExceptionMask set of exDenormalized exInvalidOp exOverflow exPrecision exUnderflow exZeroDivide Typ zum Setzen der Exception Maske der Gleitkommaeinheit TFPUPrecisionMode pmSingle pmReserved pmDouble pmExtended Dieser Datentyp legt die voreingestellte Genauigkeit des Gleitkommaprozessors fest Siehe auch Tabelle 04 2 Wert Datentyp Genauigkeit _pmDouble Double pmSingle Single Tabelle 04 2 Aufz hlungswerte f r den Datentyp TFPUPrecisionMode TFPURoundingMode rmNearest rmDown rmUp rmTruncate Der Datentyp beschreibt den Rundungsmodus der Gleitkommaeinheit Wert Beschreibung mDown Abrunden zum gr ten Integer der kleiner als der Wert iste us mNeare rest Runden un n chsten ganzzahligen Wert imTruncate OO Bruchteil u bschneid go ee rmUp Aufrunden zum kleinsten Integer der gr er als der Wert ist Tabelle 04 3 Aufz hlungswerte f r den Datentyp TFPURoundingMode TPaymentTime ptEndOfPeriod ptStartOfPeriod Datentyp f r monet re Zins Berechnungen Siehe auch Tabelle 04 4 Wert Enlautenung ptstartofperiod Beginn des ham Tabelle 04 4 Aufz hlungswerte f r den Datenty
191. then Usage else ReadMessage id buf StrToInt Paramstr 2 D if ParamCount lt gt 1 then Usage else RemoveQueue ID M if ParamCount lt gt 2 then Usage else ChangeQueueMode id StrToInt Paramstr 2 else Usage end end MSGGET function msgget key TKey msgflg cint cint msgget gibt die ID der Meldungswarteschlange zurtick die von TKey beschrieben wird Abh ngig von den Flags in msgflg wird eine neue Warteschleife erzeugt msgflg kann einen oder mehrere der folgenden Werte besitzen mit OR verkn pft enn das _ schlange schon vorhanden ist wird der Befehl abgebrochen Das Flag kann nicht f r sich allein stehen ag in verbindung mi Optional k nnen die Flags mit Zugriffsrechten ber OR verkn pft werden Die Zugriffs rechte kennen die gleichen Werte wie das Dateisystem Fehler Bei einem Fehler wird 1 zur ckgeliefert und IPCError wird gesetzt Siehe auch ftok msgsnd msgrcv msgctl semget Ein Beispiel ist bei msgctl gezeigt Download nur f r den Eigenbedarf die Weiterverbreitung der Daten ist nicht gestattet 0100 Kapitel 4 Referenz der RTL Online Daten MSGRCV function msgrcv msqid cint msgp PMSGbuf msgsz size_t msgtyp cint msgflg cint cint msgrcv ruft eine Botschaft des Typs msgtyp aus der Botschafts Warteschlange mit der ID msqid ab msgtyp enth lt den Typ den die Botschaft besitzen soll entspricht also dem mtype Feld des TMSGbuf Records Die Botschaft wird
192. tionen Konstante Wert Beschreibung a MEAST_EXCLUDE_ Oae Undokumentiet 0000 R MCAST INCLUDE 1 Undokumentiet 0000 MCAST_JOIN_GROUP Quellgruppe beitreten MCAST BLOCK SOURCE Block from given group MCAST LEAVE GROUP Quellgruppe verlassen 2 MCAST LEAVE SOURCE GROUP ___47____ Leave source spec group nn MCAST_MSFILTER Undokumentiert C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets Konstanten Typen Variablen 071 Die folgenden Konstanten sind Optionen f r das Senden und Empfangen von Messages mit Datagrammen Konstante Wert Beschreibung R MSG CONFIRM _______ 0800 ________Send flags Confirm connection e MSG_CTRUNC 0008 Receive flags Control Data was discarded buffer too small Receive flags Non blocking operation request Receive flags End of record Receive f Receive flags Suppress SIG_PIPE signal Receive f ags peek at data don t remove from Receive f MSGSYN 30400 ____Receive flags MSG_TRUNC 0020 Receive flags packet Data was discarded a 0 buffer too smoll l MSG_TRYHARD MSG_DONT Receive flags ne ROUTE MSG_WAITALL 0100 Receive flags Wait until operation completed Die folgenden typisierten Konstanten stellen besondere Internet Adressen dar Konstante Datentyp Vorbelegung Beschreibung NoAddress in_addr s_addr 0 Konstante die eine ung ltige keine Netzwerk san TESS Miei e
193. tliste immer noch f r die Funktion GetKeyEvent zur Verf gung C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard PollShiftStateEvent 0145 Siehe auch PutKeyEvent GetKeyEvent program example4 kbdex ex4 pp Beispiel f r die Funktion PollKeyEvent uses keyboard var K TKeyEvent begin InitKeyBoard WriteLn Driicken Sie eine Taste q beendet das Program repeat K PollKeyEvent if k lt gt 0 then begin K GetKeyEvent K TranslateKeyEvent K WriteLn WriteLn Taste erhalten KeyEventToString K end else Write until GetKeyEventChar K q DoneKeyBoard end POLLSHIFTSTATEEVENT function PollShiftStateEvent TKeyEvent PollShiftStateEvent gibt den aktuellen Shiftstatus in einem TKeyEvent zuriick Das Ergeb nis ist 0 wenn kein Tastaturereignis anliegt Siehe auch PollKeyEvent GetKeyEvent program example6 kbdex ex6 pp Beispiel fiir die Funktion PollShiftStateEvent uses keyboard var K TKeyEvent begin InitKeyBoard WriteLn Driicken Sie eine Taste q beendet das Program repeat K PollKeyEvent if k lt gt 0 then begin K PollShiftStateEvent WriteLn Sondertaste erhalten ShiftStateToString K False Consume the key K GetKeyEvent K TranslateKeyEvent K end else Write until GetKeyEventChar K q DoneKeyBoard end PUTKEYEVENT procedure PutKeyEvent KeyEvent TKeyEvent PutKeyEvent f gt de
194. tsemval ID Member 0 then DoError Semaphore resources exhausted no lock lock sem num Member C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 20 Unit ipc semct 0103 WriteLn Attempting to lock Member Member of semaphore ID if semop Id lock 1 1 then DoError Lock failed else WriteLn Semaphore resources decremented by one dispval ID Member end procedure UnlockSem ID Member LongInt var Unlock TSEMbuf begin with Unlock do begin sem num 0 sem op 1 sem_flg IPC_NOWAIT end if Member lt 0 or Member gt GetMemberCount ID 1 then DoError semaphore Member out of range if getsemval ID Member MaxSemValue then DoError Semaphore not locked Unlock sem num Member WriteLn Attempting to unlock Member Member of semaphore ID if semop Id unlock 1 1 then DoError Unlock failed else WriteLn Semaphore resources incremented by one dispval ID Member end procedure RemoveSem ID LongInt var S TSemun begin if semctl Id 0 IPC_RMID s lt gt 1 then WriteLn Semaphore removed else DoError Couldn t remove semaphore end procedure ChangeMode ID Mode LongInt var rc LongInt opts TSEMun semds TSEMid ds begin u opts buf semds if not semctl Id 0 IPC_STAT opts lt gt 1 then DoError Couldn t stat semaphore WriteLn Old permissions were semds sem_perm mode semds sem
195. tuelle Treiber noch nicht initialisiert ist Ist der aktuelle Tastaturtreiber bereits aktiv macht SetKeyboardDri ver nichts mehr Vor dem Setzen des Treibers sollte der aktuelle aktive Treiber mit dem Aufruf DoneKeyboard abgeschaltet werden Die Funktion meldet True wenn der Treiber gesetzt werden konnte False wenn nicht Weitere Informationen zum Setzen des Tastaturtreibers sind im Abschnitt ab Seite 0132 nachzulesen Siehe auch GetKeyboardDriver DoneKeyboard SHIFTSTATETOSTRING function ShiftStateToString KeyEvent TKeyEvent UseLeftRight Boolean String ShiftStateToString liefert einen String mit der Beschreibung des Shiftstatus der Taste in KeyEvent zur ck was auch ein leerer String sein kann Der Shiftstatus wird mit den Strings in der Konstante SShift beschrieben Ein Beispiel ist bei PollShiftStateEvent gezeigt C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 23 Unit Keyboard TranslateKeyEvent 0147 Siehe auch FunctionKeyName KeyEventToString TRANSLATEKEYEVENT function TranslateKeyEvent KeyEvent TKeyEvent TKeyEvent TranslateKeyEvent f hrt die ASCII bersetzung von KeyEvent durch Ein physikalischer Tastendruck wird in eine Funktionstastendefinition umgesetzt falls eine Funktionstaste gedr ckt wurde und die physikalische Taste in das ASCII Zeichen wenn es sich um eine normale Taste handelte Ein Beispiel f r die Funktion ist bei GetKeyEvent gezeigt Siehe auch TranslateKeyEventUniCo
196. tverzeichnis nuuuunununannnnnnunnnnnnn 149 KAPITEL 4 ERG NZUNG REFERENZ DER RTL ONLINE DATEN Die folgenden Abschnitte enthalten die Dokumentation der Units Math dynlibs Get Opts HeapTrc LineInfo Lnfodwarf clocale cmem cthreads cwstrings DOS Strings IPC Sockets Keyboard Video und Mouse von Free Pascal 2 x Dieses Dokument ist eine Erg nzung zu den Daten des gedruckten Buchs und wie dieses urheberrechtlich gesch tzt Die Datei wird als Probe und Referenzabschnitt vom C amp L Verlag exklusiv auf seinen Webseiten zur Verf gung gestellt und darf nicht an anderer Stelle ohne vorherige schrift liche Genehmigung des Verlags zur Verf gung gestellt werden Beschrieben werden zuerst jeweils die vordefinierten Konstanten und Variablen an schlie end die Funktionen und Prozeduren mit ihren jeweiligen Parametern und Beispie len Optionale Parameter stehen immer in eckigen Klammern Teilweise sind Beispielpro gramme gezeigt die in einem Editor eingegeben und mit Free Pascal kompiliert werden k nnen os Kapitel 4 Referenz der RTL Online Daten 4 10 Die Manager Units Die in diesem Abschnitt vorgestellten Units clocale cmem cthread und cwstring enthalten Verwaltungsroutinen und keine APIs Sie initialisieren die jeweilige POSIX kompatiblen Manager die von der C Bibliothek des unterliegenden POSIX kompatiblen Unix oder Linux Systems bereitgestellt werden Dazu braucht die jeweilige Unit nur manuell als e
197. tvordergrund gew hlt werden f r den Hintergrund sind nur die Konstanten mit den Werten 0 bis 7 m glich Die n chsten Konstanten dienen der Abfrage der M glichkeit des Bildschirmtreibers epUnderline 0001 Bildschirmtreiber erlaubt unterstrichenen Text 0002 Bildschirmtreiber erlaubt blinkenden Text cpBlink 0010 _Bildschirmtreiber erlaubt das ndern des Bildschirmmodus _ cpChangeCursor 0020 Bildschirmtreiber erlaubt das Andern des Aussehens des Textcursors Die folgenden Konstanten definieren das Aussehen des Text Eingabecursors crHidden 0 Cursor ausgeblendet crHalfBlock 3 Halber Blockcursor Fehlerkonstanten Kein Fehler ErrorCode LongInt ErrOK Der von der letzten Operation zur ckgemeldete Fehlercode i Der Fehlerhandler ErrorHandler TErrorHandler Die Variable ErrorHandler kann auf eine einige Fehlerbe DefaultErrorHandler handlungsroutine gesetzt werden Der Zeiger wird in der Voreinstellung auf die Funktion DefaultErrorHandler ge a E E e On noe nn enna Errorlnfo Pointer nil Zeiger auf die erweiterten Fehlerinformationen Allgemeine Fehlerkonstanten Der Grundwert f r Videofehler Bildschirmtreiber Initialisierung ist fehlgeschla errVioBase gen Nicht unterst tzte Bildschirmfunktion errVioNoSuchMode errVioBase 3 Ungiltiger Bildschirmmodus C 2012 C amp L Computer und Literaturverlag GmbH Kapitel
198. ugriff een 108 Blinkbit 3 Bogenma nach Gon ueee 27 Bogenma nach Winkel 27 Botschafts Warteschlange 95 Stichwortverzeichnis Online Daten Kommandozeilenparameter 37 Kommandozeilensortierung 36 Dateinamen L ngen s es 45 Date isuche ccccccscsscscssseeeseseseeees 46 51 Dateisystem 44 Datum te Debuginformationen auslesen 43 Dekadischer Logarithmus 20 DIS F Durchschnitt DWARF Debuginformationen 43 Dynamisches Laden von Bibliotheksroutinen ee 34 E Euklidische Norm 25 F Freie Byte auf Laufwerk 48 Funktionstasten 138 G Gesamtvarianz uneeeeeene Gleitkommaprozessor Genauigkeit Gleitkommawerte vergleichen Gleitkommeinheit Rundungsmodus GNU getopts X Gon nach Bogenma nee Gon nach Grad Grad nach Bogenma be Grad nach Gon Laufwerkgr e Locale Manager 2 Longini BEPRSESNERS REIS EIAE UL NON REINE TINAREENEERER M Mathematische Funktionen 12 Mausbewegungsevent 126 Mausposition 128 Maussteuerung 125 Maustreiber 128 Mauszeiger 130 Maximalwert will Meldungswarteschlange 99 Memory Manager e 8 Messages Modifizierer Tasten unene 137 N Nachrichten ss 93 Nat rlicher Logarithmus
199. ung sie zu ffnen C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 19 Unit Sockets CloseSocket 079 Weitere m gliche Fehler k nnen in den Unix Manpages nachgelesen werden Siehe auch Socket CLOSESOCKET function CloseSocket Sock LongInt LongInt CloseSocket schlie t ein Socket Handle Die Funktion liefert 0 zur ck wenn der Socket erfolgreich geschlossen wurde Fehler Bei einem Fehler wird der Wert 1 zur ckgegeben Siehe auch Socket CONNECT function Connect Sock LongInt const Addr Addrlen LongInt Boolean function Connect Sock LongInt const addr TInetSockAddr var SockIn Text var SockOut Text Boolean function Connect Sock LongInt const addr TInetSockAddr var SockIn File var SockOut File Boolean function Connect Sock LongInt const addr String var SockIn Text var SockOut Text Boolean function Connect Sock LongInt const addr String var SockIn File var SockOut File Boolean Connect ffnet eine Verbindung zu einem Peer dessen Adresse durch Addr beschrieben wird AddrLen enth lt die L nge der Adresse Der Typ von Addr h ngt von der Art der Verbinung ab die zu etablieren versucht wird Im allgemeinem ist der Typ jedoch TSok kAddr oder TUnixSockAddr Diese regul re Connect Funktion liefert einen Dateideskrip tor falls der Aufruf erfolgreich war Die anderen Varianten des Aufrufs von Connect mit den Text und File Parametern sind Kombinat
200. us des DOS Flags Verify Ist es True berpr ft DOS Daten die auf die Festplatte geschrieben werden indem sie nach jedem Schreibzugriff unmittelbar erneut gelesen und die Priifsummen verglichen werden Ist Verify False werden die Daten nicht berpr ft Hinweis Auf Nicht DOS Systemen ausgenommen OS 2 Anwendungen unter reinem DOS ist Verify immer True Siehe auch SetVerify INTR procedure Intr IntNo Byte var Regs Registers Intr f hrt einen Softwareinterrupt mit der Nummer IntNo zwischen 0 und 255 aus indem die Prozessorregister auf Regs gesetzt werden Der Inhalt der Register vor R ck kehr der Interruptprozedur wird in Regs gespeichert Hinweise Unten Nicht DOS System macht dieser Aufruf nichts Siehe auch MsDos MsDos procedure MSDos var Regs Registers MSDos f hrt einen Betriebssystemaufruf aus Die Prozedur entspricht einem Aufruf des Intr Befehls mit der Interruptnummer f r den Betriebssystemaufruf Hinweis Bei Nicht DOS Betriebssystemen macht dieser Aufruf gar nichts unter DOS wird der Interrupt 21h aufgerufen Siehe auch Intr C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS PackTime 057 PACKTIME procedure PackTime var t DateTime var p LongInt PackTime konvertiert das Datum und die Zeit die in T gespeichert sind in ein gepacktes Format das an die Datei SetFTime als Parameter bergeben werden kann Siehe auch SetFTime FindFirst FindNext und UnPack
201. var Attr Word T File begin Assign f ParamStr 1 GetFAttr f Attr WriteLn File ParamStr 1 besitzt die Attribute Attr if Attr and archive lt gt 0 then WriteLn Archive if Attr and directory lt gt 0 then WriteLn Directory if Attr and readonly lt gt 0 then WriteLn Read Only if Attr and sysfile lt gt 0 then WriteLn System if Attr and hidden lt gt 0 then WriteLn Hidden end GETFTIME procedure GetFTime var f var time LongInt GetFTime ermittelt die Uhrzeit der letzten Datei nderung Die Funktion UnPackTime entschl sselt die Zeit aus dem LongInt Format F mu eine Dateivariable sein die zuge wiesen und ge ffnet wurde Fehler Fehler werden in DosError gemeldet Siehe auch SetFTime PackTime und UnPackTime program Example9 dosex ex9 pp Beispiel f r die Funktion GetFTime uses Dos function LO w Word String var s String begin Str w s if w lt 10 then LO 0 s else LO s end C 2012 C amp L Computer und Literaturverlag GmbH Kapitel 4 17 Unit DOS GetIntVec O55 var f File Time LongInt DT DateTime begin if Paramcount gt 0 then Assign f ParamStr 1 else Assign f ex9 pp Reset f GetFTime f Time Close f UnPackTime Time DT Write Die Datei ParamStr 1 wurde letztmalig ge ndert am Writeln LO DT Month LO DT Day DT Year um y LO DT Hour LO DT Min end
202. vent K TranslateKeyEvent K if IsFunctionKey k then begin Write Funktionstaste erhalten WriteLn FunctionKeyName TKeyRecord K KeyCode end until GetKeyEventChar K q DoneKeyboard end GETKEYBOARDDRIVER procedure GetKeyboardDriver var Driver TKeyboardDriver GetKeyBoardDriver gibt in Driver den aktuell g ltigen Tastaturtreiber zur ck Mit dieser Funktion kann ein vorhandener Tastaturtreiber siehe Seite O132 erweitert werden Mehr Informationen zum Lesen und Setzen des Tastaturtreibers k nnen ab Seite 0132 nachgelesen werden Siehe auch SetKeyboardDriver GETKEYEVENT function GetKeyEvent TKeyEvent GetKeyEvent gibt das letzte Tastatur Ereignis zur ck oder wartet auf einen Event wenn gerade kein Ereignis anliegt Eine nicht blockierende Version dieses Aufrufs ist mit Poll KeyEvent verf gbar Die zur ckgegebene Taste wird als TKeyEvent Variable kodiert und ist normalerweise der Scancode der physikalischen Taste der Scancode ist treiberabh ngig Er kann mit den Funktionen TranslateKeyEvent oder TranslateKeyEventUniCode bersetzt werden Im Abschnitt zu den Typdeklarationen ab Seite O139 ist beschrieben wie die Tasten definiert sind Fehler Falls keine Taste gelesen werden konnte beispielsweise weil sie der Treiber nicht unterst tzt wird der Wert 0 zur ckgegeben Siehe auch PutKeyEvent PollKeyEvent TranslateKeyEvent und TranslateKeyEventUni Code program examplel kbdex exl pp Beisp
203. zur ck Name sollte auf einen Speicherplatz mit ausreichend viel Platz zeigen um den Namen aufnehmen zu k nnen die Gr e des freien Speicherplatzes sollte in Namelen angegeben werden Kehrt die Funktion erfolgreich zur ck enth lt Name den Namen und Namelen dessen L nge Fehler werden in SocketError gespeichert Es sind folgende Fehlercodes vorgesehen SYS_EBADF Der Socket Deskriptor ist ung ltig Das System besitzt nicht genug Puffer um die Operation durchf hren zu k nnen SYS_EFAULT Addr zeigt auf einen Bereich au erhalb des eigenen Adre bereichs Siehe auch fpBind FPGETSOCKOPT function fpGetSockOpt s cint Level cint Optname cint Optval Pointer Optlen PSocklen cint fpGetSockOpt erh lt die VerbindungoptionOptname f r den Socket S Der Socket kann auf unterschiedlichen Ebenen erlangt werden die durch den Parameter Level festgelegt werden der einen der folgendenWerte annehmen kann 7 SOL_SOCKET Vom Socket selbst nn XXX Setzt Level auf XXX die Protokollnummer des Protokolls das die Opti on interpretieren soll Die Optionen werden an der in Optval angegebenen Speicherstelle abgelegt Optlen sollte die urspr ngliche Lange von Optval enthalten und enth lt bei der R ckkehr der Funktion die tats chliche Gr e der abgelegten Daten Bei Erfolg gibt die Funktion 0 zur ck bei einem Fehler den Wert 1 Fehler Fehler werden in SocketError gespeichert Es sind folgende Fehlercode
Download Pdf Manuals
Related Search
Related Contents
GBC COLOURCOILS A4 12MM BLACK (100) Servidores de impresión de la serie TROY200 Solaris 7 - Oracle Documentation APW Wyott w/EZ-Lock User's Manual 取扱説明書ダウンロード Braun BS 5897 User's Manual Installation Manual Vivanco MP4735 flat panel wall mount Huawei B260 Network Router User Manual Copyright © All rights reserved.
Failed to retrieve file