+--------------------------------------------------------------------+ | Verwaltung von Grafiken und anderer externer Resourcen mit allegro | +--------------------------------------------------------------------+ ---------------------------------------------------------------------------- NEU: Einsatz von Flips m”glich. Siehe dazu unter "Parametrierung des Grafikprogrammaufrufs" weiter unten ---------------------------------------------------------------------------- Es ist immer wieder der Wunsch an die allegro-Entwicklungsmannschaft herangetragen worden, ein M”glichkeit zu schaffen, mit allegro Grafiken zu verwalten. Hauptwunsch war dabei, zu einer Titelaufnahme eine Grafik zu speichern und anzeigen zu lassen. Es sind viele Anwendungen dieser Art denkbar:  Man k”nnte beispielsweise statt einer vollst„ndigen retrospektiver Erfassung der Altbest„nde zun„chst einmal alle Karteikarten scannen und als Grafikdateien ablegen. In der Datenbank wrde man eine Referenz auf die Grafikdatei und einige wichtige recherchierbare Begriffe, wie Verfasser und Titel o.„., ablegen. Der Benutzer k”nnte dann auf Knopfdruck sich die vollst„ndige Aufnahme anzeigen lassen.  Man k”nnte Bilder- oder Fotosammlungen mit allegro verwalten und dem Benutzer zug„nglich machen, ohne daá dieser immer gleich die Originale in die Hand bekommt. Bei wertvollen Sammlungen ist dies kein unwichtiger Aspekt.  Wer eine Datenbank fr Musikalien oder Handschriften aufbaut, m”chte vielleicht Bilder der Noten oder Schriften zeigen. Es gibt sicherlich noch viel mehr Anwendungsf„lle, in denen man Grafiken verwenden m”chte. Mit allegro ging das bisher nicht. Aber jetzt ist es m”glich, denn es wurde eine sehr flexible M”glichkeit gefunden, aus einer allegro-Datenbank heraus Grafiken anzuzeigen. Mit diesen neuen F„higkeiten lassen sich aber nicht nur Grafiken verwalten, sondern auch digital gespeicherte Musikstcke, Filme und anderes! Funktionsweise der neuen M”glichkeiten -------------------------------------- allegro kann von Haus aus nicht Grafikdateien in Kategorien speichern, denn es ist eine textorientierte Datenbank, und Grafikdateien sind bin„re Dateien. In solchen bin„ren Dateien k”nnen zuf„llig Zeichenkombinationen auftreten, von denen allegro annimmt, es seien fr die Datenbank wichtige Steuerzeichen. Ein gesichertes Erkennen des Datensatz- oder Kategorieendes w„re so nicht gew„hrleistet. Man máte sich eine v”llig neue Struktur der Datenbanken berlegen. Die w„re aber berhaupt nicht mit den bisherigen Strukturen in Einklang zu bringen. Es wrde zu ungewnschten Inkonsistenzen im Datenformat kommen. Ein anderer Punkt ist, daá es fr die unterschiedlichsten Anwendungen die unterschiedlichsten Formate gibt, Grafiken zu speichern. Pixelgrafiken sind etwas v”llig anderes als Vektorgrafiken. Im Bereich der Pixelgrafiken gibt es allein ca. 100 verschiedene Formate. Die Vielfalt der Formate wird auch auf absehbare Zeit bleiben. Man ben”tigt sie auch, denn unterschiedliche Anwendungsf„lle erfordern unterschiedliche Formate. Niemand kann eine Empfehlung geben, welches das fr alle Anwendungsf„lle am besten geeignete Format ist, denn das gibt es schlichtweg nicht. Wir haben uns daher entschlossen, die eben skizzierten Probleme zu umgehen: Die Grafikdateien, oder was man sonst so mit einer allegro-Datenbank verwalten m”chte, werden separat in ihrem eigenen Format und in eigenen Dateien gespeichert. Wie der Anwender die physikalische Ablage dieser Dateien organisiert, bleibt ihm berlassen. In der Datenbank legt man in einem Titelsatz oder in einem eigenen Stammsatz eine Referenz auf diese Dateien ab. In welcher Form man das macht, ist auch beliebig. Die einfachste M”glichkeit ist, man gibt Pfad und Namen einer Grafikdatei an. Man muá dann noch in einer Parameterdatei, die Parameterdatei fr die Bildschirmanzeige eignet sich dafr am besten, einen Abschnitt parametrieren, der als Ergebnis einen korrekten Aufruf eines Grafikanzeigeprogramms hat. Dieses Programm sorgt dann fr die Anzeige der Grafik. Welcher Abschnitt dafr vorgesehen ist, wird PRESTOG oder APACG mit einem neuen Konfigurationsbefehl mitgeteilt. (Wie man Hinweise auf Grafiken als Flips parametriert ist weiter unten beschrieben.) Fr den Programmbenutzer stellt sich das Verfahren dann so dar: In einer Titelanzeige bekommt er den Hinweis, daá zu diesem Eintrag eine oder mehrere Grafiken vorhanden sind. Er drckt dann die Tastenkombination und bekommt vom Grafikprogramm die entsprechende Grafik angezeigt. Nach Drcken einer oder mehrerer Tasten, die von Grafikprogramm zu Grafikrogramm unterschiedlich sein kann, landet man wieder in dem Titelsatz, von wo man ausgegangen war. Danach kann man mit PRESTOG bzw. APACG ganz normal weiterarbeiten. Man erkennt vielleicht, daá dieses Verfahren sich auch fr das Abspielen von digital gespeicherten Musikstcken oder Filmen eignet. Voraussetzung ist eine entsprechende technische Ausstattung des PCs, und die Programme mssen unter DOS laufen. Der Zugriff auf CD-ROM-Daten w„re so auch m”glich. Es k”nnen aber auch viel kompliziertere Prozesse programmiert werden. Man ist da keinen Beschr„nkungen unterworfen. Sie mssen nur darauf achten, daá fr den Datenbankbenutzer nicht der inhaltliche Zusammenhang zwischen dem, was in der Titelanzeige steht, und dem, was nach dem Start des Subprozesses passiert, verloren geht. Sonst tr„gt dieses Verfahren nicht zur Erkenntnis des Benutzers bei, sondern eher zu seiner Verwirrung. Einschr„nkungen des Verfahrens ------------------------------ Wenn das externe Programm aufgerufen wird, verl„át PRESTOG den Speicher. Ein kleiner Rest von ca. 300 Byte bleiben aus technischen Grnden brig. Es stehen fr externe Programm jetzt XX - 300 Bytes Arbeitsspeicher zur Verfgung. XX ist dabei die Gr”áe des Arbeitsspeichers VOR dem Start von PRESTOG. Dieser verbleibende Speicherplatz muá fr das externe Programm zum Arbeiten gengen. Je mehr Speicherplatz PRESTO bei seinem Start hatte, desto mehr bleibt auch fr das Anzeigeprogramm brig. Da die Grafikdateien auáerhalb der Datenbank gespeichert sind, muá man selbst fr eine korrekte Verwaltung dieser Daten sorgen. Schlamperei in diesem Bereich kann zu unerwnschten Fehlern fhren. Voraussetzungen fr den Einsatz des Verfahrens ---------------------------------------------- Diese Verfahren funktionieren nur mit den Programmen PRESTOG und APACG. Vom Kernprogramm her verfgen sie ber die F„higkeiten der Version 14b. Man kann sie also als Ersatz fr PRESTO und APAC nehmen. Ein Umbenennen der Programme ist selbstverst„ndlich m”glich. Wenn man also PRESTOG.EXE in PRESTO.EXE umbenennt, verliert man zwar das "normale" PRESTO, aber beim Benutzen einer Datenbank ber das CockPit, bekommt man im Schnellzugriff die Grafikf„higkeiten mitgeliefert. Dann ben”tigt man ein Anzeigeprogramm fr die Grafiken. Dieser Beispieldistribution haben wir PIXVIEW von Klaus Holtorf beigelegt, weil es die meisten Pixelgrafikformate automatisch erkennt, anzeigen und ineinander umwandeln kann. Es liegt in einer eingeschr„nkten Sharewareversion vor. Damit lassen sich nur Grafiken im Format 640x480 Pixel anzeigen. Wenn Sie es im harten Einsatz betreiben wollen, sollten Sie es erwerben. Dann werden auch Grafiken mit h”heren Aufl„sungen angezeigt. Genaueres dazu finden Sie in der Datei PIXVIEW.DOC. Es gibt aber noch andere, genauso geeignete Programme. Man findet massenhaft Programme in jeder Mailbox oder auf jedem FTP-Server. In der Konfigurationsdatei muá der neue Befehl bG eingefhrt werden. Allgemein hat er dieses Format: bGsL[swapdir] - bG ist der Befehl. Er wird nur von den neuen Programmen erkannt. Die alten ignorieren ihn. - s ist die Nummer der Parameterdatei, in der der Abschnit fr die Erzeugung des Programmaufrufs parametriert wird. Erlaubt ist hier nur 0 (Null) fr die Indexparameterdatei und 1 (Eins) fr die Bildschirmanzeigeparameterdatei. Wir empfehlen die 1, weil man w„hrend der Testphase die M”glichkeit hat, sich das Ergebnis der Parametrierei anzusehen. - L ist die Sprungmarke, die den erw„hnten Abschnitt markiert. Fr diese Sprungmarke ben”tigen Sie keinen ak-Befehl in der Parameterdatei, da sie nur intern vom Programm angesprungen wird. - [swapdir] ist eine Angabe, die entfallen kann (deshalb die []). Diese Angabe muá ein gltiges Verzeichnis sein, in das das Programm sich bei Bedarf auslagern kann. Es k”nnen mehrere Verzeichnisse, durch Semikolon voneinander getrennt, angegeben werden. Wenn hier etwas steht, lagert das Programm sich NUR auf Platte aus und nicht in den erweiterten Arbeitsspeicher (XMS oder EMS). Diese Option kann man benutzen, wenn das aufzurufende Grafikprogramm nur l„uft, wenn der EMS oder XMS frei ist. Zweite Voraussetzung: Sie ben”tigen eine Kategorie, in der Sie die Information speichern, mit deren Hilfe Sie die externe Datei ansprechen k”nnen. Im Standardschema ist dafr jetzt die #94 vorgesehen, die bisher noch von niemanden benutzt werden drfte. Diese Kategorie gab es bisher nicht, weshalb Sie sie in der Kategorieliste noch einfgen mssen. Parametrierung des Grafikprogrammaufrufs ---------------------------------------- Wenn der Benutzer in der Titelanzeige drckt, arbeitet das Programm zun„chst den Abschnitt L in der Parameterdatei s ab. Zu diesem Zeitpunkt steht Ihnen fr die Parametrierungszwecke der Datensatz zur Verfgung, aus dem die Titelanzeige parametriert wurde. Sie mssen jetzt aus den im Datensatz abgelegten Informationen ber die Grafikdatei und dem Wissen ber den korrekten Programmaufruf des Anzeigeprogramms einen DOS-Befehl parametrieren. Das Ergebnis muá der Aufruf des Anzeigeprogramms inklusive der gewnschten Grafikdatei. Mit allen notwendigen Startoptionen und Pfadangaben. Es muá derselbe Aufruf sein, den Sie von der DOS-Ebene benutzen wrden, um dieses Grafikdatei sofort anzeigen zu lassen. Das ist alles. Einschr„nkungen ergeben sich hierbei durch die begrenzte L„nge der DOS-Eingabezeile. Ihr Programmaufruf darf nicht l„nger als 128 Zeichen werden. In der Beispieldatenbank k”nnen Sie sehen wie es gemacht wird. Wir haben fr diesen Abschnitt die Sprungmarke è vorgesehen. Daá der Abschnitt so kurz ausfallen kann, liegt an den F„higkeiten des Programms PIXVIEW. Wer andere Programme einsetzt, hat u.U. mehr zu tun. Eine Besonderheit taucht hier auf. PIXVIEW kann aus Grafikdateien selbstablaufende Programme (.EXE) machen. PIXVIEW macht das fr alle Formate, die es untersttzt. So ein Programm erzeugt nur eine Grafik auf dem Bildschirm und l”scht sie wieder, wenn sie oder eine andere Taste drcken. Auáerdem haben wir der Einfachheit halber alle Grafiken in ein Verzeichnis unterhalb des Datenbankverzeichnisses gelegt. Man muá es aber nicht so machen. Bei umfangreichen Grafiksammlungen ist eine geordnete Speicherung in mehreren Verzeichnissen sicherlich sinnvoller, weil bersichtlicher. NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU NEU Aufruf von Grafiken ber Flips ------------------------------ Der Aufruf von externen Resourcen ist jetzt auch mit der neuen Flip-Methode (siehe news Nr. 40) m”glich. Der Vorteil hier: Sie ben”tigen den Befehl bG in der Konfigurationsdatei nicht, und Sie k”nnen pro Datensatz mehrere Grafiken angeben und den Benutzer ber entsprechend programmierte Flips die gewnschte Grafik anzeigen lassen. Prinzipiell gibt es zwei M”glichkeiten, Flips zu programmieren. Beide k”nnen Sie einsetzen. Fr beide Arten der Flips gilt grunds„tzlich, daá, wie bei der oben beschriebenen Methode, der komplette DOS-Befehl aus den Informationen in dem Datensatz programmiert werden muá. Zus„tzlich gilt: Das erste Zeichen des Flipbefehls MUSS die Tilde (~) sein, sonst wird der Flip nicht als Grafikaufruf erkannt. Flip-Methode 1: Fr eine Taste, die einen Grafikaufruf zu dem vorliegenden Titelsatz ausl”sen soll, programmieren Sie eine Anwendervariable #uZT. 'Z' muá immer sein, 'T' ist die Taste. Verwenden drfen Sie alle Buchstaben und Ziffern auáer denen, die in der Titelanzeige schon eine andere Aktion ausl”sen. So muá z.B. fr eine Reaktion auf Taste [5] eine Variable #uZ5 erzeugt werden, die den DOS-Befehl fr die Grafikanzeige enth„lt. Jetzt ben”tigen Sie nur noch einen Hinweis in der Titelanzeige, daá Taste sowieso eine Grafikanzeige ausl”st. Wie Sie den gestalten ist Ihnen berlassen. Mehr braucht nicht gemacht zu werden, denn den Rest erledigen die Programme. Flip-Methode 2: Die zweite Methode ist etwas komplizierter, weil hier drei Aktionen parametriert werden mssen, aber auch etwas flexibler und in einer Hinsicht sogar eleganter. NAchteil bei Methode 1 ist, daá Sie fr jede Taste, die eine Aktion ausl”sen soll, eine Anwendervariable ben”tigen. Da mssen unter Umst„nden viele Variablen berwacht werden. Diese Methode kommt nur mit einer aus, ben”tigt, dafr aber einen zus„tzlichen Abschnitt in der Parameterdatei fr die Bildschirmanzeige. 1. Aktion: Sie speichern alle zum vorliegenden Datensatz erlaubten Grafikaufrufe in einer Anwendervariablen. Der Name dieser Variablen ist egal. Alle Aufrufe sollten durch ein Trennzeichen voneinander getrennt sein und als ersten Buchstaben einen eindeutigen Kennbuchstaben haben. Welche Sie nehmen ist Ihnen freigestellt. Prinzipiell sieht der Aufbau der Anwendervariablen so aus: #uxx k~DOS-Befehlk~DOS-Befehlk~DOS-Be ... xx ist der Name der Variablen. ist ein beliebies Trennzeichen oder -zeichenfolge. k ist ein Kennbuchstabe oder eine Folge von Buchstaben, und DOS-Befehl ist der abzusetzende Befehl fr den Grafikaufruf. Vor diesem Aufruf kann an dieser Stelle schon die Tilde stehen, muá aber nicht. Aus praktischen Grnden schlagen wird folgendes vor: Nehmen Sie als Trennzeichen das Teilfeldtrennzeichen '', als Kennbuchstabenfolge k nur einen Buchstaben, vielleicht den der entsprechenden Taste, und setzen Sie immer schon die Tilde vor den Befehl. 2. Aktion: Anzeige der Aufrufm”glichkeiten in der Titelanzeige (wie bei Flip-Methode 1). 3. Aktion: Bereitstellung des ben”tigten DOS-Befehls durch Auswertung der gedrckten Taste. Dafr brauchen Sie in der Parameterdatei fr die Bildschirmanzeige einen Abschnitt #-` (` = ASCII 96). Diese Sprungmarke ist programmintern festgelegt und ab jetzt (V14b) reserviert. Sie ben”tigen keinen Sprungbefehl fr diese Marke. In dem Abschnitt mssen Sie die gedrckte Taste auswerten und aus der Anwendervariablen den dazu passenden DOS-Befehl extrahieren. Der Befehl soll das Ergebnis dieses Abschnittes sein. Dazu steht Ihnen die Sonderkategorie #u1 zur Verfgung. Sie enth„lt nur zwei Zeichen: Zuerst kommt die Taste, dann die Nummer der gerade aktiven Datenbank. Prinzipiell also: #u1 Tn T ist die Taste, die gedrckt wurde. n ist eine Ziffer von 0 - 2. (Sie k”nnen ja mit bis zu drei Datenbanken parallel arbeiten, die erste angegebene Datenbank hat die Nummer 0, die zweite die Nummer 1 usw.) Wenn Sie nur mit einer Datenbank arbeiten, ist n immer 0. Zum Beispiel: #u1 h0 Taste [h] gedrckt, aktiv ist Datenbank Nr. 0 Wie Sie aus dem Tastenwert und der Anwendervariable mit den DOS-Aufrufen den korrekten Aufruf extrahieren, ist Ihnen freigestellt. Ein Beispiel finden Sie in der Datei D-FLIP.APR. Wichtig ist nur, daá Sie dafr sorgen mssen, daá am Ende des Abschnittes entweder der zur Taste passende Grafikaufruf als Arbeitstext brig bleibt, oder nichts, wenn zu der Taste kein Aufruf paát. Daher schlagen wir als Grundgerst fr den Abschnitt #-` folgendes vor: #-` Flipeinsprung ... Tastenauswertungen ... #u1 e0 #zz 0 leeren Arbeitstext erzeugen, falls falsche Taste #+# Ende Gut einsetzbar ist diese Mimik, wenn man einem Datensatz mehrere externe Resourcen zuordnen will. Beispiel siehe unter Verfasser 'grafiken, alle auf einmal' im Register 1. Installation der Beispieldatenbank ---------------------------------- Die Datei ACGRAFIK.EXE ist ein selbstentpackendes Archiv und enth„lt alle notwendigen Dateien. Kopieren Sie das Programm in ein beliebiges Verzeichnis auf Laufwerk C: und starten Sie es. Es erzeugt auf der Platte die Verzeichnisse \ALLEGRO\DEMOGRAF und \ALLEGRO\DEMOGRAF\GRAFIKEN. Dorthinein werden alle Dateien kopiert. Die Batchdatei GRAF1.BAT startet die Datenbank mit PRESTOG und die Datei GRAF2.BAT mit APACG. Die Beispielgrafiken finden Sie unter den Verfassern 'Kirk, James T.', 'Mouse, Mickey', 'Solo, Han' und 'Grafiken, alle auf einmal'. Zus„tzliche Bonbons ------------------- Die F„higkeit, aus einem Programm heraus ein anderes zu starten und dabei sehr viel Speicherplatz zur Verfgung zu stellen, wirkt sich auch an anderen Stellen aus. Zun„chst PRESTOG: Wenn man ber zweimaligem Drcken von aus der Titelanzeige heraus in die Dateiauswahl fr Parameterdateien kommt, kann man die Datei, vor der gerade der Cursor steht mit in den Editor holen. Bisher wurde immer gnadenlos X.COM benutzt. Der war auch der einzige, der funktionierte, da er klein genug war. Jetzt k”nnen Sie eine Batchdatei X.BAT anlegen, von der aus Sie Ihren eigenen Editor aufrufen k”nnen. Das kann sogar ein groáer Editor wie beispielsweise AURORA (sch”nen Gruá an Herrn Lackhoff) sein. Es muá nur sichergestellt sein, daá die Datei X.BAT vor X.COM gefunden wird. Sonst funktioniert es nicht. (Man kann ja zur Not X.COM umbenennen) Im brigen kommt man ja aus der Titelanzeige auch mit auf die DOS-Ebene! Sie k”nnen dann alle m”glichen Zwischenaktionen starten. Vielleicht sogar mal schnell ein kleines Spielchen auf dem PC? (Natrlich nicht w„hrend der Arbeitszeit!) Mit 'MEM /C' z.B. erhalten Sie eine Statistik ber die momentane Speicherbelegung. Testen Sie das mal und staunen Sie. Auáerdem wurde versuchsweise im Datensatz-Editor ein Befehl 'B' eingefhrt. Er funktioniert analog zu 'b'. Nur daá statt des eingebauten Fenstereditors der Kategorieinhalt dem externen Editor, der mit dem Befehl X.BAT oder X.COM gestartet wird. Der Inhalt einer Kategorie wird einer tempor„ren Datei #nn.AC$ brgeben. 'nn' ist die Kategorienummer. Lange Kategorietexte werden umgebrochen (Zeilenl„nge ist 75). Das Zeichen  dient als Signal fr einen festen Zeilenumbruch: Im Editor fhrt es zu einer Leerzeile. Grund fr dieses Verhalten: Es gibt ASCII-Editoren, die ganze Paragraphen neu durchformatieren k”nnen. Fr die ist nach einem Text eine Leerzeile das Signal, daá ein Paragraph zu Ende ist. Wenn die Datei abgespeichert wird, werden alle Ersetzungen rckg„ngig gemacht. Auch der Zeilenumbruch wird zurckgenommen. Die Zwischendatei wird wieder gel”scht. CockPit wurde so modifiziert, daá man jetzt auch groáe Editoren einsetzen kann. Bisher gab es hier auch Grenzen: EDIT von DOS funktionierte zwar, konnte dann aber nur kleine Dateien bearbeiten. Der AURORA-Editor beispielsweise funktionierte gar nicht. Diese Einschr„nkungen gibt es jetzt ebenfalls nicht mehr. Technischer Hintergrund zum Aufruf von anderen Programmen --------------------------------------------------------- Die Programmteil, die in PRESTOG usw. dafr sorgen, daá das Programm fast vollst„ndig aus dem Speicher verschwindet, bevor das Fremdprogramm aufgerufen wird, arbeiten wie folgt: Zun„chst versuchen sie das Programm in den XMS- oder EMS-Speicher auszulagern. Diese Methode ist die schnellste. Wenn das nicht klappt, wird im Verzeichnis, von dem aus PRESTOG aufgerufen wurde, eine tempor„re Datei angelegt. Hier wird PRESTOG dann "zwischengelagert". Nachdem das Fremdprogramm beendet ist, wird der alte Zustand von PRESTOG wieder hergestellt und eine evtl. erzeugte tempor„re Datei gel”scht. Dieses Verfahren kann aber in Netzwerken zu Problemen fhren, wenn man die Programme von sogenannten Diskless-Stations aus startet. Man muá dann dafr sorgen, daá jedes Ger„t im Netz sein eigenen Startverzeichnis auf dem Server erh„lt, von wo aus dieses Programm aufgerufen wird. Im Novell-Netz kann so verfahren werden: Jedes Ger„t im Netz erh„lt eine eindeutige Verbindungsnummer. Diese Nummer bleibt bestehen, solange das Ger„t eingeloggt ist. Diese Verbindungsnummer muá man im Login-Script in eine Environmentvariable bertragen, da ein direkter Zugriff nur w„hrend des Abarbeitens des Scriptes m”glich ist. Z.B. schreibt man: set nummer ="%STATION" Der Ausdruck "%STATION" muá genauso geschrieben werden. In allen Batchdateien kann man dann diese Nummer mit %nummer% benutzen. In den Batchaufrufen fr die hier vorgestellten Programme programmiert man: md %nummer% cd %nummer% (Aufruf von PRESTOG oder so) cd .. rd %nummer% Bei anderen Netzwerkbetriebssystemen gibt es „hnliche M”glicheiten. Noch ein copyright-technischer Hinweis -------------------------------------- Diese neuen F„higkeiten sind nicht allein auf unserem Mist gewachsen, sondern Ralph Brown, ein As der MSDOS-Programmierung, hat einen nicht unwichtigen Teil beigesteuert. Hier sein Copyright-Vermerk: "This product uses the SPAWNO routines by Ralf Brown to minimize memory use while shelling to DOS and running other programs." Anregungen und Kritik --------------------- Falls Probleme auftauchen oder es Anregungen und Kritik zum Verfahren gibt, wenden Sie sich bitte an Dierk H”ppner (d.hoeppner@tu-bs.de), der diese Dinge verzapft hat. Braunschweig, 8.1.96