7-14 Datenstrukturen des MacOS Inhalt | 9. Weitere Libraries für Omikron Basic

 

Kapitel 8

Die Extension Library


Inhalt

Einleitung
Die Befehle im einzelnen
Funktionen zur Umwandlung von Fließkommazahlen in Strings und umgekehrt
Einleitung

Die ExtensionLibrary erweitert den Befehlssatz des Omikron Basics um solche Anweisungen, wie sie für die Erstellung von Programmen für das MacOS notwendig oder zumindest sehr nützlich, im Standard-Befehlssatz aber nicht enthalten sind. Um die ExtensionLibrary zu benutzen, müssen Sie diese im Editor mit dem Menüpunkt 'LIBRARY zuladen' in Ihr Programm einbinden. Vergessen Sie nicht, am Anfang Ihres Programms ein 'Extension_Init' und am Ende ein 'Extension_Exit' aufzurufen.

Hinweis: Alle Funktionen ohne Postfix sind von Typ Long-Integer (%L). Wenn Sie den Editor auf einen anderen Datentyp eingestellt haben, müssen Sie das Postfix explizit angeben.

Die Befehle im einzelnen

Extension_Init
Vor der Benutzung der anderen Befehle muß diese Prozedur einmal aufgerufen werden.

Extension_Exit
Rufen Sie diese Prozedur auf, wenn Sie keine Funktionen der Library mehr benutzen möchten.

Error_Messages F
Wenn in Ihrem Programm zur Laufzeit ein Fehler auftritt (z.B. wenn Sie versuchen, eine Datei zu öffnen, die gar nicht existiert), dann wird normalerweise vom Omikron Basic eine Fehlermeldung in einer Alertbox ausgegeben. Dieses Verhalten ist während der Programmentwicklungszeit sicherlich sehr nützlich, wirkt bei einem fertigen Programm aber eher störend. Darum können Sie mit dieser Prozedur die Fehlermeldungen abschalten.

F=0 : Fehlermeldungen aus, sonst Fehlermeldungen ein.

Wenn allerdings ein fataler Fehler auftritt (z.B. zu wenig BASIC-Speicher vorhanden), wodurch eine Programmfortsetzung unmöglich wird, dann gibt Omikron Basic in jedem Fall eine Meldung aus und beendet das Programm.

Set_Help(Tc)
Diese Prozedur definiert, welche Taste für ON HELP GOSUB verwendet werden soll. Für Tc muß der Tastaturcode eingesetzt werden. Die Voreinstellung ist $69, was der Funktionstaste 13 entspricht. Eine Übersicht über die Tastaturcodes finden Sie in "Inside Macintosh, Toolbox Essentials" und im Anhang 'Virtual Key Codes'.

Set_Sleep(S)
Diese Prozedur setzt den Sleep-Parameter, den Omikron Basic bei jedem WaitNextEvent-Aufruf an das MacOS übergibt (siehe auch 'Die Omikron Basic Ausgabefenster' und 'Neue Compilersteuerwörter'). Der Sleep-Parameter bestimmt, wieviel Rechenzeit anderen Programmen überlassen wird. Der Default-Wert ist 1, eine größere Zahl verlangsamt Ihr Programm, gibt dafür aber anderen parallel laufenden Programmen mehr Prozessorzeit.

Set_Tab(T)
Diese Prozedur setzt den Tabulator, der für PRINT und LPRINT benutzt wird. Die Voreinstellung ist 8.

Fill_Input_Buffer(F$,C)
Der INPUT-Buffer wird mit dem String F$ geladen, der Cursor wird an die Position C ab INPUT-Beginn gesetzt. Durch diesen Befehl ist es möglich, bei INPUT-Anweisungen schon einen Eingabewert vorzugeben, der dann gegebenenfalls nur noch mit [Return] bestätigt werden muß. Da der INPUT-Buffer auch noch für andere Zwecke benutzt wird, sollte diese Prozedur immer unmittelbar vor dem eigentlichen INPUT-Befehl aufgerufen werden.

FN Get_Created_Dirid
Wenn Sie mit MKDIR eine neue Directory erzeugen, so können Sie die Identifikationsnummer dieser Direktory erhalten, indem Sie gleich danach diese Funktion aufrufen.

Get_Def_Dir(R Vrefnum%,R Dirid,R Volname$,R Errnum)
Diese Prozedur liefert die Volume-Referenznummer, die Direktory-Identifikationsnummer und den Volume-Namen des voreingestellten Pfades zurück. Errnum enhält gegebenenfalls eine Fehlernummer.

Get_Cur_Dir(R Vrefnum,R Dirid)
Diese Prozedur liefert die Volume-Referenznummer und die Directory-Identifikationsnummer des aktuellen Pfades zurück. Wenn Sie eine Fileselectbox öffnen, wird gerade der Inhalt dieses Ordners in der Fileselectbox angezeigt.

Get_System_Folder(Type,R Vrefnum,R Dirid,R Os_Err)
Diese Prozedur dient dazu, die Volume-Referenznummer und die Directory-Identifikationsnummer des Systemordners und der Unterordner im Systemordner zu ermitteln.
In Type muß der Ordnertyp übergeben werden. Folgende Angaben sind möglich:

Type = CVIL("amnu") : Apple Menu Items
Type = CVIL("ctrl") : Control Panels
Type = CVIL("Desk") : Desktop Folders
Type = CVIL("extn") : Extensions
Type = CVIL("font") : Fonts Folder
Type = CVIL("pref") : Preferences Folder
Type = CVIL("prnt") : PrintMonitor Documents
Type = CVIL("strt") : Startup Items
Type = CVIL("macs") : System Folder
Type = CVIL("temp") : Temporary Items
Type = CVIL("trsh") : Single-User Trash
Type = CVIL("empt") : Shared Trash on Net

Os_Err kann nach der Rückkehr folgende Werte haben:

Os_Err=0 : Kein Fehler.
Os_Err=-43 : Der angegebene Typ wurde nicht gefunden.
Os_Err=-48 : Statt eines Ordner wurde eine Datei gefunden.

FN Get_Vrefnum(Fsspec$)
Diese Funktion gibt die Volume-Referenznummer zurück, wenn ein FileSpecificationRecord übergeben wird.

FN Get_Dirid(Fsspec$)
Diese Funktion gibt die Direktory-Identifikationsnummer zurück, wenn ein FileSpecificationRecord übergeben wird.

FN Get_Filename$(Fsspec$)
Diese Funktion gibt den Filenamen zurück, wenn ein FileSpecificationRecord übergeben wird.

FN Get_Font_Number(Name$)
Diese Funtion gibt die Nummer eines Fonts zurück, wenn Sie dessen Namen (z.B. Monaco, Courier, VT100) der Funktion übergeben.

FN Get_Fsspec$(Vrefnum,Dirid,Filename$)
Wenn Sie dieser Funktion eine Volume-Referenznummer, eine Directory-Identifikationsnummer und einen Dateinamen übergeben, so erhalten Sie einen FileSpecificationRecord zurück, wie Sie Ihn z.B. für OPEN brauchen. Vrefnum und Dirid können auch null sein. Dann kann Filename$ entweder einen vollständigen Pfad enthalten oder einen Teilpfad mit vorangestelltem Doppelpunkt oder nur einen Dateinamen ohne Doppelpunkt davor, wobei in den beiden letzten Fällen vom aktuellen Pfad ausgegangen wird. Wenn Sie also nur einen Teilpfad übergeben, müssen sie dies durch einen vorangestellten Doppelpunkt kennzeichnen.

FN Get_File_Count
Mit dieser Funktion können Sie herausfinden, wieviele Bytes z.B. bei PUT od. GET tatsächlich gelesen bzw. geschrieben wurden.

FN Get_File_Type(Fsspec$)
Diese Funktion liefert den Filetyp (z.B. "TEXT", "PICT" ...) des durch Fsspec$ bestimmten Files zurück. Das Ergebnis der Funktion ist eine Long-Integer-Zahl. Um einen String zu erhalten, müssen Sie noch die BASIC-Funktion MKIL$ darauf anwenden.

FN Get_File_Creator(Fsspec$)
Diese Funktion liefert den Filecreator (z.B. "OmBa" ...) des durch Fsspec$ bestimmten Files zurück. Das Ergebnis der Funktion ist eine Long-Integer-Zahl. Um einen String zu erhalten, müssen Sie noch die BASIC-Funktion MKIL$ darauf anwenden.

FN Get_Finder_Flags(Fsspec$)
Mit dieser Funktion können Sie erfragen, welche Finderflags des durch Fsspec$ definierten Files gesetzt sind. Die meisten Finderflags werden intern verwendet. Darum sind nachfolgend nur diejenigen Flags aufgeführt, die für den Anwender interessant sind und auch verändert werden dürfen. Wer etwas über die Bedeutung der übrigen Flags erfahren möchte, kann in "Inside Macintosh, Toolbox Essentials" nachlesen.

Bit 14 : Die Datei ist unsichtbar, wird also werder auf dem Desktop noch in der Fileselect-Box dargestellt.
Bit 13 : Die Datei hat eine "BNDL" Resource. Eine solche Resource brauchen Sie, um Ihren Dateien bestimmte Icons zuzuweisen.
Bit 12 : Weder das Icon noch der Name können vom Finder aus geändert werden.
Bit 11 : Die Datei ist ein sogenanntes "stationery pad". Eine Beschreibung dieses Begriffs würde hier zu weit führen. Eine genaue Beschreibung finden Sie in "Inside Macintosh, Toolbox Essentials".
Bit 10 : Die Datei hat ein "customized icon".
Bit 6 : Die Datei ist ein Programm, das von mehreren Anwendern in einem Netzwerk gleichzeitig genutzt werden kann.

Hinweis: Die Finderflags kann man auch auf Directories anwenden. Sofern sich dabei keine sinnvolle Bedeutung ergibt, sollten sie als reserviert betrachtet und deswegen nicht verändert werden.

Set_File_Type([Fsspec$,]Filetype)
Wenn ein neues File erzeugt wird (z.B. mit OPEN "O"), dann wird die zuvor mit dieser Prozedur eingestellte Filetyp-Nummer dem File zugewiesen. Set_File_Type(CVIL("TEXT") bewirkt zum Beispiel, daß alle nachfolgend erzeugten Files vom Typ 'TEXT', also reine ASCII-Files sind. Im Anhang finden Sie eine Liste der wichtigsten vordefinierten
Filetypen.
In der Syntax mit 2 Parametern kann man in Fsspec$ einen FileSpezificationRecord übergeben, wodurch dann der Typ des damit bestimmten Files geändert wird.
Eine genaue Beschreibung der zuvor verwendeten Bezeichnungen finden Sie in "InsideMacintosh, Files".

Set_File_Creator([Fsspec$,]Creator)
Wenn ein neues File erzeugt wird (z.B. mit OPEN "O"), dann wird die zuvor mit dieser Prozedur eingestellte Creator-Identifikationsnummer dem File zugewiesen.
In der Syntax mit 2 Parametern kann man in Fsspec$ einen FileSpezificationRecord übergeben, wodurch dann der Creator des damit bestimmten Files geändert wird.

Set_Finder_Flags(Fsspec$,Flags)
Diese Prozedur erlaubt es Ihnen, die sogenannten Finderflags zu verändern. Dazu müssen Sie in Fsspec$ einen FileSpecificationRecord übergeben, der das File, dessen Flags geändert werden sollen, genau bestimmt. Die Bedeutung der einzelnen Bits ist bei FN Get_Finder_Flags beschrieben.

FN Get_Quick_Draw
Diese Funktion liefert einen Zeiger auf die QuickDrawGlobals. Eine genaue Beschreibung dieser Struktur finden Sie in "Inside Macintosh, Imaging with QuickDraw".

FN Get_G_World_Ptr
Diese Funktion liefert einen Zeiger auf die Offscreen-Grafics-World, die für die Pufferung des obersten Omikron Basic Ausgabefensters benutzt wird. Die Struktur ist in "Inside Macintosh, Imaging with QuickDraw" beschrieben.

FN Get_G_World_Ptr(S)
Diese Funktion liefert einen Zeiger auf die Offscreen-Grafics-World, die für die Pufferung des mit SCREEN S geöffneten Omikron Basic Ausgabefensters benutzt wird. Die Struktur ist in "Inside Macintosh, Imaging with QuickDraw" beschrieben.

FN Get_Window_Ptr
Diese Funktion liefert einen Zeiger auf den Window-Pointer des obersten Omikron Basic Ausgabefensters. Die Struktur ist in "Inside Macintosh, Imaging with QuickDraw" beschrieben.

FN Get_Window_Ptr(S)
Diese Funktion liefert einen Zeiger auf den Window-Pointer des mit SCREEN S geöffneten Omikron Basic Ausgabefensters. Die Struktur ist in "Inside Macintosh, Imaging with QuickDraw" beschrieben.

Get_Window_Offset(Screen_Nr,R X_Offset,R Y_Offset)
Wenn Sie mit Omikron Basic Ausgabefenstern arbeiten und direkte Ausgaben in die realen Fenster machen wollen, müssen Sie wissen, welcher Teil des im Speicher gepufferten virtuellen Bildschirms gerade im Fenster angezeigt wird. Dies hängt nämlich von der Position der Fensterschieber ab.
Die Prozedur Get_Window_Offset errechnet aus der Position der Fensterschieber den Offset, den die linke, obere, innere Ecke des realen Fensters auf dem virtuellen Bildschirm hat und gibt diese Werte in X_Offset und Y_Offset zurück.

Flush_Window_Buffer(Screen_Nr[,X,Y,W,H])
Ab MacOS X werden die Fensterinhalte aller laufenden Programme vom Betriebssystem gepuffert. Dies hat zur Folge, dass Ausgaben (z.B durch PRINT oder DRAW Befehle) nicht sofort sichtbar werden. Ein automatischer Update des Fenster-Puffers erfolgt erst bei der nächsten EVENT-Abfrage (z.B. durch COMPILER "EVENT").
Mit dem Befehl Flush_Window_Buffer(Screen_Nr[,X,Y,W,H]) kann man nun jederzeit einen Update des Fenster-Puffers erzwingen und dadurch eine Ausgabe sofort sichtbar machen. Dabei wird in Screen_Nr die Nummer des OmikronBasic Ausgabefensters angegeben. Optional kann mit X,Y,W,H noch ein Rechteck bestimmt werden, für das der Fenster-Puffer upgedatet werden soll. Die führt zu einem erheblichen Geschwindigkeitsgewinn, wenn der zu aktualisierende Bereich wesentlich kleiner ist als das Fenster.

X-Note: Diese Prozeduren stehen nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird der Aufruf ignoriert.

Set_Window_Title(T$)
Diese Prozedur setzt den Titel des obersten Omikron Basic Ausgabefensters auf T$.

Get_Indexed_Color(Index,R Rot,R Grün,R Blau)
Diese Prozedur liefert den Rot-, Grün- und Blauanteil einer Farbe aus der internen Omikron Basic Farbtabelle zurück, deren Index Sie übergeben. Rot, Grün und Blau können Werte zwischen 0 und 65535 annehmen.

Set_Indexed_Color(Index,Rot,Grün,Blau)
Diese Prozedur setzt den Rot-, Grün- und Blauanteil einer Farbe in der internen Omikron Basic Farbtabelle, deren Index Sie übergeben. Rot,Grün und Blau müssen Werte zwischen 0 und 65535 haben.

Set_Pen_Size(Breite,Höhe)
Diese Prozedur setzt Breite und Höhe des Zeichenstiftes, wie er z.B. für DRAW oder BOX verwendet wird. Sie entspricht LINE WIDTH, nur daß hier Breite und Höhe unterschiedliche Werte annehmen können.

Set_Roundings(X,Y)
Diese Prozedur definiert die Rundung der Ecken bei Verwendung von RBOX und PRBOX. X und Y sind die Halbachsen einer Ellipse, die der Rundung angepaßt ist.

Set_Scroll_Parameter(X,Y)
Diese Prozedur definiert die Anzahl der Pixel, um die der Inhalt der Omikron Basic Ausgabefenster verschoben werden soll, wenn die Scroll-Pfeile angeklickt werden. X steht dabei für die horizontale Richtung und Y für die vertikale. Die Voreinstellung ist 8 Pixel für X und 16 Pixel für Y.

Set_Text_Mode(Modus)
Diese Prozedur setzt den Verknüpfungsmodus wie bei MODE, nur speziell für TEXT-Befehle.

Set_Text_Size(Size)
Diese Prozedur entspricht dem Befehl TEXT HEIGHT, stellt also die Größe der mit TEXT-Befehlen ausgegebenen Zeichen ein.

Set_Text_Font(Font_Nr)
Diese Prozedur wählt den Font aus, der für TEXT-Befehle benutzt werden soll.

Set_Text_Face(Face)
Diese Prozedur entspricht dem Befehl TEXT STYLE, stellt also den Schriftstil der mit TEXT-Befehlen ausgegebenen Zeichen ein.

Set_Text_Fore_Color(Index)
Diese Prozedur entspricht dem Befehl TEXT COLOR, setzt also die für TEXT-Befehle verwendete Vordergrund-Farbe auf die dem Index zugeordnete Farbe.

Set_Text_Back_Color(Index)
Diese Prozedur setzt die für TEXT-Befehle verwendete Hintergrund-Farbe auf die dem Index zugeordnete Farbe.

Set_Print_Mode(Modus)
Diese Prozedur setzt den Verknüpfungsmodus wie bei MODE, nur speziell für PRINT- und INPUT-Befehle.

Set_Print_Size(Size)
Diese Prozedur stellt die Größe der mit PRINT- und INPUT-Befehlen ausgegebenen Zeichen ein.

Set_Print_Font(Font_Nr)
Diese Prozedur wählt den Font aus, der für PRINT- und INPUT-Befehle benutzt werden soll.

Achtung: Der PRINT- und INPUT-Befehl funtionieren nur mit nichtproportionalen Fonts korrekt, also Fonts, bei denen alle Buchstaben gleich breit sind. Von den standardmäßig vorhandenen Fonts trifft das nur auf 'Monaco (Font_Nr=4)' und 'Courier (Font_Nr=22)' zu. Ab System 7.6 ist noch 'VT100' vorhanden.

Set_Print_Face(Face)
Diese Prozedur entspricht in etwa dem Befehl TEXT STYLE. Die Einstellung gilt aber nur für PRINT- und INPUT-Befehle.

Set_Print_Fore_Color(Index)
Diese Prozedur setzt die für PRINT- und INPUT-Befehle verwendete Vordergrund-Farbe auf die dem Index zugeordnete Farbe.

Set_Print_Back_Color(Index)
Diese Prozedur setzt die für PRINT- und INPUT-Befehle verwendete Hintergrund-Farbe auf die dem Index zugeordnete Farbe.
Hinweis: Mit diesem Befehl definieren Sie auch gleichzeitig die Hintergrundfarbe für Omikron Basic Ausgabefenster.

Set_Lprint_Mode(Modus)
Diese Prozedur setzt den Verknüpfungsmodus wie bei MODE, nur speziell für LPRINT-Befehle.

Set_Lprint_Size(Size)
Diese Prozedur stellt die Größe der mit LPRINT-Befehlen ausgegebenen Zeichen ein.

Set_Lprint_Font (Font_Nr)
Diese Prozedur wählt den Font aus, der für LPRINT-Befehle benutzt werden soll.

Achtung: Der LPRINT-Befehl funktioniert nur mit nichtproportionalen Fonts korrekt, also Fonts, bei denen alle Buchstaben gleich breit sind, wenn Tabulatorfunktionen benutzt werden. Von den standardmäßig vorhandenen Fonts trifft das nur auf 'Monaco (Font_Nr=4)' und 'Courier (Font_Nr=22)' zu. Ab System 7.6 ist noch 'VT100' vorhanden.

Set_Lprint_Face(Face)
Diese Prozedur entspricht in etwa dem Befehl TEXT STYLE, die Einstellung gilt aber nur für LPRINT-Befehle.

Set_Lprint_Fore_Color(Index)
Diese Prozedur setzt die für LPRINT-Befehle verwendete Vordergrund-Farbe auf die dem Index zugeordnete Farbe.

Set_Lprint_Back_Color(Index)
Diese Prozedur setzt die für LPRINT-Befehle verwendete Hintergrund-Farbe auf die dem Index zugeordnete Farbe.

Lprstldialog(R Button)
Diese Prozedur stellt die 'PrStlDialog' Dialogbox des Druckertreibers dar. Wurde die Box mit OK verlassen, so ist Button=1, sonst 0. Sie sollten in Ihr Programm eine Möglichkeit einbauen, diese Dialogbox aufzurufen, sonst werden beim nächsten Ausdruck nur die unspeziefischen Default-Werte verwendet.

Lprjobdialog(R Button)
Diese Prozedur stellt die 'PrJobDialog' Dialogbox des Druckertreibers dar. Wurde die Box mit OK verlassen, so ist Button=1, sonst 0. Diese Dialogbox sollte unbedingt vor jedem Ausdruck aufgerufen werden, da hier der Anwender noch wichtige Dinge einstellen kann. Zum Beispiel, welche Seiten überhaupt gedruckt werden sollen, ob ein Preview (nicht bei jedem Drucker möglich) gewünscht wird, in welcher Auflösung gedruckt werden soll, und noch einige weitere Einstellungen.

FN Get_Lprstl_Settings$
Mit dieser Funktion können Sie die aktuellen Einstellungen der 'PrStlDialog' Dialogbox des Druckertreibers abfragen. Die Daten werden als String zurückgeliefert, der dann für eine spätere Verwendung gespeichert oder an ein Dokument angehängt werden kann. Übergibt man einen solchen String an die Prozedur Set_Lprstl_Settings, so werden die darin enthaltenen Einstellungen in die Dialogbox übernommen.

X-Note: Diese Funktion steht nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird ein Nullstring zurückgeliefert.

FN Get_Lprjob_Settings$
Mit dieser Funktion können Sie die aktuellen Einstellungen der 'PrJobDialog' Dialogbox des Druckertreibers abfragen. Die Daten werden als String zurückgeliefert, der dann für eine spätere Verwendung gespeichert oder an ein Dokument angehängt werden kann. Übergibt man einen solchen String an die Prozedur Set_Lprjob_Settings, so werden die darin enthaltenen Einstellungen in die Dialogbox übernommen.

X-Note: Diese Funktion steht nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird ein Nullstring zurückgeliefert.

Set_Lprstl_Settings(Set$)
Mit dieser Prozedur können Sie die aktuellen Einstellungen der 'PrStlDialog' Dialogbox des Druckertreibers setzen. Dazu muss der Prozedur ein String übergeben werden, wie Sie ihn vorher von der Funktion FN Get_Lprstl_Settings$ erhalten haben.

X-Note: Diese Funktion steht nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird der Aufruf ignoriert.

Set_Lprjob_Settings(Set$)
Mit dieser Prozedur können Sie die aktuellen Einstellungen der 'PrJobDialog' Dialogbox des Druckertreibers setzen. Dazu muss der Prozedur ein String übergeben werden, wie Sie ihn vorher von der Funktion FN Get_Lprjob_Settings$ erhalten haben.

X-Note: Diese Funktion steht nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird der Aufruf ignoriert.

FN Get_Pmsession
FN Get_Pmpage_Format
FN Get_Pmprint_Settings
Diese Funktionen liefern Objekte zurück, die vom Betriebssystem verwaltet werden. Sie brauchen diese Nummern, wenn Sie selbst Funktionen des MacOS PrintingManagers über den MAC_OS Befehl aufrufen wollen. Informationen dazu finden Sie auf den Apple-Internetseiten (Inside Carbon, Supporting Printing in Your Carbon Application).

X-Note: Diese Funktionen stehen nur für Carbon-Anwendungen (COMPILER "Carbon") zur Verfügung. Bei Classic-Anwendungen wird Null zurückgeliefert.

Get_Lpr_Pagesize(R W,R H)
Mit dieser Prozedur können Sie die Breite und Höhe einer Seite auf dem ausgewählten Drucker ermitteln. Die Angaben sind in Pixel und hängen von den Einstellungen ab, die der Anwender mit Lprstldialog vorgenommen hat. Die Druckerauflösung ist standardmässig auf 72 dpi eingestellt. Dies entspricht einer durchschnittlichen Monitorauflösung. Wenn der Ausdruck eine höhere Auflösung erreichen soll, müssen Sie in der Lprstdialog eine Verkleinerung wählen (z.B. 20% für 360 dpi).
Get_Lpr_Pagesize gibt die Grösse der bedruckbaren Fläche zurück, nicht die Grösse des eingelegten Papiers. Sie können diese Funktion z.B. benutzen, um einen auszudruckenden Text jeweils so umzuformatieren, dass er gut auf das eingestellte Papierformat passt, oder eine Grafik so zu vergrössern, dass sie die ausgewählte Seitengrösse gerade ausfüllt. Siehe auch das Programm 'Lissajous.BAS' im DEMO-Ordner.

FN Get_Thprint
Diese Funktion liefert das Handle des von Omikron Basic verwendeten Print-Records zurück. Dieser enthält weitere Informationen über den Drucker und die gemachten Einstellungen. Sie benötigen dieses Handle auch, wenn Sie selbst Systemroutinen mit dem MAC_OS Befehl aufrufen wollen. Eine genaue Beschreibung des Print-Records und der zur Verfügung stehenden Systemroutinen finden Sie in "Inside Macintosh, Imaging with Quickdraw".


FN Microseconds#
Diese Funktion gibt die Zeit in Mikrosekunden zurück, die seit dem Einschalten des Computers vergangen ist. Beachten Sie, daß die Funktion vom Typ Double-Float ist. Sie entspricht in etwa der BASIC-Funktion
TIMER, ermöglicht aber viel genauere Zeitmessungen, da statt in 1/200 Sekunden in millionstel Sekunden gezählt wird.

FN Ser_Get_Buf (Channel)
Diese Funktion liefert die Anzahl der Zeichen zurück, die sich in dem Puffer der seriellen Schnittstelle befinden. Der Kanal muß vorher mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet worden sein.

Ser_Reset (Channel,In_Out,Baud,Parity,Data_Bits,Stop_Bits)
Diese Prozedur ermöglicht die Konfigurierung der seriellen Schnittstelle, die zuvor mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet wurde.

Mit In_Out können Sie bestimmen, ob die Einstellung für Eingabe oder Ausgabe gelten soll:
In_Out = 1 : Ausgabe
In_Out = 2 : Eingabe
In_Out = 3 : Ausgabe und Eingabe

Baud gibt an, mit welcher Übertragunsrate (Bits pro Sekunde) gearbeitet werden soll. Es können die Werte 300,600,1200,1800,2400,3600,4800,7200,9600,14400,19200,28800,38400 und 57600 für Baud eingesetzt werden.

Für Parity sind folgende Zahlen erlaubt:
0 = Keine Parität
1 = Ungerade Parität
2 = Gerade Parität

Data_Bits gibt an, wieviele Datenbits jeweils gesendet werden und darf Werte zwischen 5 und 8 annehmen.

Für Stop_Bits können die Zahlen 10,15 und 20 eingesetzt werden:
10 = 1 Stopbit
15 = 1.5 Stopbits
20 = 2 Stopbits

Weitere Informationen finden Sie in "Inside Macintosh, Devices".

Ser_Hshake(Channel,Fxon,Fcts,Xon,Xoff,Errs,Evts,Finx,Fdtr)
Diese Prozedur ermöglicht die Einstellung der Handshake-Parameter für die serielle Schnittstelle, die zuvor mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet wurde. Die einzelnen Parameter haben dabei die folgende Bedeutung:

Fxon <>0 aktiviert XON/XOFF für ausgehende Daten.

Fcts <>0 aktiviert CTS für ausgehende Daten.

Xon : Mit diesem Parameter können Sie den ASCII-Code des Zeichens festlegen, das für XON verwendet werden soll.

Xoff : Mit diesem Parameter können Sie den ASCII-Code des Zeichens festlegen, das für XOFF verwendet werden soll.

Errs : In diesem Parameter muss eine Bitmaske übergeben werden, mit der festgelegt wird, welche Fehler zur Beendigung einer Eingabeaufforderung führen. Die einzelnen Bits haben dabei die folgende Bedeutung:
Bit 4 : Parity-Fehler
Bit 5 : Hardware-Überlauf
Bit 6 : Framing-Fehler

Evts : In diesem Parameter muss ebenfalls eine Bitmaske übergeben werden. Sie legt fest, welche Ereignisse den Serial Driver veranlassen sollen, ein Device-Driver-Event zu senden. Die einzelnen Bits haben die folgende Bedeutung:
Bit 5 : Änderung im CTS-Signal
Bit 7 : Änderung im Break-Signal

Finx <>0 aktiviert XON/XOFF für eingehende Daten.

Fdtr <>0 aktiviert DTR für eingehende Daten.

Weitere Informationen finden Sie in "Inside Macintosh, Devices".

Ser_Status(Channel,R Cumerrs,R Xoffsend,R Rdpend,R Wrpend,R Ctshold,R Xoffhold)
Diese Prozedur liefert Informationen über den Zustand der seriellen Schnittstelle, die zuvor mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet wurde. Die einzelnen Parameter haben dabei die folgende Bedeutung:

Cumerrs : In dieser Variablen wird ein Bitfeld zurückgegeben, das die kumulierten Fehler anzeigt, die seit dem letzten Aufruf von Ser_Status aufgetreten sind. Nach dem Aufruf wird das Feld gelöscht. Die einzelnen Bits haben die folgende Bedeutung:
Bit 0 : Software-Überlauf
Bit 3 : Breaksignal gesetzt
Bit 4 : Parity-Fehler
Bit 5 : Hardware-Überlauf
Bit 6 : Framing-Fehler

Xoffsend : Diese Variable enthält ebenfalls ein Bitfeld mit folgender Bedeutung:
Bit 6 : DTR-Signal wurde negiert
Bit 7 : XOFF-Zeichen wurde gesendet

Rdpend <>0 bedeutet, dass eine Leseoperation noch offen ist.

Wrpend <>0 bedeutet, dass eine Schreiboperation noch offen ist.

Ctshold <>0 bedeutet, dass der Treiber die Ausgabe aufgrund eines CTS-Signals unterbrochen hat.

Xoffhold <>0 bedeutet, dass der Treiber die Ausgabe unterbrochen hat, weil er ein XOFF-Zeichen empfangen hat.

Bitte beachten Sie, dass die Werte von Ser_Status zurückgesetzt werden, so dass aufeinanderfolgende Aufrufe keineswegs die gleichen Werte liefern, auch wenn dazwischen nichts passiert ist.
Weitere Informationen finden Sie in
"Inside Macintosh, Devices".

Ser_Set_Brk(Channel)
Diese Prozedur sendet ein Break-Signal an die serielle Schnittstelle, die zuvor mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet wurde.

Ser_Clr_Brk(Channel)
Diese Prozedur löscht das Break-Signal, das zuvor mit Ser_Set_Brk gesetzt wurde. Die serielle Schnittstelle muss mit
OPEN "P",Channel bzw. OPEN "V",Channel geöffnet worden sein.

FN Get_Scrap$(Type)
Mit dieser Funktion kann man Daten vom Clipboard holen. In Type müssen Sie angeben, um welche Art von Daten es sich handelt. Z. B. würde Txt$= FN Get_Scrap$(CVIL("TEXT")) ein Textstück vom Clipboard holen, sofern sich dort Daten vom Typ "TEXT" befinden. Natürlich können Sie mit dieser Funktion nicht nur Texte holen, sondern auch beliebige andere Daten wie z.B. Bilder ("PICT"). Die Daten werden dabei immer in einem String zurückgegeben.
Falls die Daten in einem Speicherblock benötigt werden, können Sie diese mit der Prozedur
String_To_Memory(Txt$,Mem_Adr) in den Speicherblock übertragen.

Put_Scrap(Type,Txt$)
Dieser Prozedur ermöglicht es, beliebige Daten, die sich in dem String Txt$ befinden, auf dem Clipboard abzulegen. In Type müssen sie dabei angeben, um welche Art von Daten es sich handelt (z. B. einfache ASCII-Texte = "TEXT" oder Bilder im Apple-Picture-Format = "PICT"). Z. B. würde Put_Scrap(CVIL("TEXT"),"Beispieltext") den Beispieltext auf das Clipboard schreiben, von wo aus er von anderen Programmen wieder geladen werden könnte.
Falls sich die Daten in einem Speicherblock befinden, können Sie diese mit der Funktion Txt$=
FN Memory_To_String$(Mem_Adr,Lenght) in einen String übertragen.

FN Memory_To_String$(Mem_Adr,Length)
Diese Funktion kopiert Daten, die sich ab Mem_Adr im Speicher befinden und die Länge Length haben, in einen String und gibt diesen als Funktionswert zurück.

String_To_Memory(Txt$,Mem_Adr)
Diese Prozedur kopiert Daten, die sich in dem String Txt$ befinden, in den Speicher ab Mem_Adr.

Warnung: Sie müssen unbedingt sicherstellen, daß der Speicherblock ab Mem_Adr groß genug ist, um den ganzen String aufzunehmen, sonst sind schwerste Abstürze zu befürchten.

FN Get_Current_Process#
Es wird eine 8 Byte Zahl zurückgeliefert, die sogenannte ProcessSerialNumber. Diese Zahl identifiziert einen laufenden Prozess eindeutig. Beachten Sie bitte, daß die Funktion vom Typ Double-Float ist.
Wenn Sie diese Funktion gleich am Anfang Ihres Programms aufrufen, erhalten Sie die ProcessSerialNumber Ihres eigenen Programms zurück. Sie können diese Nummer z.B. benutzen, um mit
FN Get_Process_Path$(Psn#) den Pfad zu ermitteln, aus dem das Programm gestartet wurde. Diese Information ist wichtig, wenn man später bestimmte Dateien aus dem Programmpfad nachladen möchte. Zum Beispiel findet Omikron Basic auf diese Weise die NEWOMBAS.INF Datei.

FN Get_Front_Process#
Es wird eine 8 Byte Zahl zurückgeliefert, die sogenannte ProcessSerialNumber. Diese Zahl identifiziert einen laufenden Prozess eindeutig. Beachten Sie bitte, daß die Funktion vom Typ Double-Float ist.
Durch Vergleich der aktuellen Psn# mit der Ihres eigenen Programms können Sie jederzeit feststellen, ob sich Ihr Programm gerade im Vordergrund befindet und dann bestimmte Aktionen ein- bzw. abschalten (z. B. Cursorblinken, wenn das Programm im Hintergrund ist).

Set_Front_Process(Psn#)
Dieser Prozedur muß eine ProcessSerialNumber (Psn#) eines bereits laufenden Programms übergeben werden. Dieses Programm wird dann zum vordersten Prozess. Wenn das eigene Programm im Hintergrund läuft, weil es z.B. an einem längeren Problem rechnet und dabei ein Fehler auftritt, der eine Aktion des Anwenders erfordert, kann man diesen Befehl benutzen, um das eigene Programm zum vordersten Prozess zu machen.

FN Get_Process_Path$(Psn#)
Es wird ein FileSpecificationRecord zurückgeliefert, der angibt, wo sich das Programm mit der ProcessSerialNumber (Psn#) auf der Festplatte befindet. Man kann diese Information z. B. dazu verwenden, um gezielt Dateien aus dem Programmordner nachzuladen.

FN System_Version
Diese Funktion liefert die Versionsnummer des Betriebssystems zurück. Dabei ist das Ergebnis als Hexadezimalzahl kodiert. So bedeutet zum Beispiel der Wert $904, dass das Betriebssystem die Versionsnummer 9.0.4 hat. Eine Anwendung dieser Funktion finden Sie in dem Programm "FILESELECT.BAS" im Demo-Ordner.

Set_Rnd_Seed(S#)
Der BASIC-Befehl RND liefert ja bekanntlich eine sogenannte Pseudo-Zufallszahl. Diese wird nicht durch einen echten Zufallsgenerator ermittelt, sondern über eine bestimmte Iteration, die eine zufallsähnliche Zahlenverteilung liefert. Dabei ist der Startwert der Iteration bei jedem Programmstart anders, so dass Sie nicht immer die gleiche Folge von Zufallszahlen erhalten. Für manche Anwendungen ist es aber gerade wichtig, dass sich immer die gleiche Folge von Zahlen ergibt. Um das zu erreichen, können Sie jetzt mit dieser Funktion festlegen, wo die Iteration beginnen soll.
Für die Iteration wird die Formel X <- (75 * X) MOD (2^31-1) benutzt.

Funktionen zur Umwandlung von Fließkommazahlen in Strings und umgekehrt

Das Fließkommazahlenformat, das vom Omikron Basic für Atari-Computer benutzt wurde, unterscheidet sich von dem für den PowerPC verwendeten. Um nun eine ständige Formatkonvertierung mit entsprechendem Performance-Verlust zu vermeiden, wurde das neue Omikron Basic auf das PowerPC-Format umgestellt (siehe auch das Kapitel 'Unterschiede zur Atari-Version').

Damit Sie Ihre alten Programme leichter umstellen können, gibt es vier Funktionen in der ExtensionLibrary, die das Verhalten der alten Omikron Basic Funktionen nachbilden.

FN CVS#(Single$)
Diese Funktion wandelt einen 6-Byte-String im alten Format in eine Double-Float-Zahl.

Achtung: Da das neue Format einen kleineren Wertebereich hat, als das alte, kann es bei sehr kleinen bzw. sehr großen Zahlen zu Fehlern kommen.

FN CVD#(Double$)
Diese Funktion wandelt einen 10-Byte-String im alten Format in eine Double-Float-Zahl.

Achtung: Da das neue Format einen kleineren Wertebereich hat, als das alte, kann es bei sehr kleinen bzw. sehr großen Zahlen zu Fehlern kommen.

FN MKS$(Zahl)
Diese Funktion wandelt eine Zahl in einen 6-Byte langen String im alten Format um.

FN MKD$(Zahl)
Diese Funktion wandelt eine Zahl in einen 10-Byte langen String im alten Format um.

7-14 Datenstrukturen des MacOS Inhalt | 9. Weitere Libraries für Omikron Basic

Support | Bestellen | Start | Home: http://www.berkhan.de


© 1997-2004 Berkhan-Software