Digital Research korrigiert seine GEM-Dokumentation
Wie heißt es so schön? Irren ist menschlich. Und nun hat dieses um alte Prinzip auch in meiner Kolumne zugeschlagen. Vergessen Sie, was ich in [1,2] über das Clipboard (»Zwischenablage«) geschrieben habe - hier kommt die Korrektur. Umstritten war das exakte Format des Clipboard-Pfades, den man mit »scrp_write()« setzt und »scrp_read()« abfragt. Nach der GEM-Dokumentation von DRJ gehört die Namensmaske mit zum Pfad - demnach könnte ein Clipboard-Pfad beispielsweise
A:\SCRAPDIR\SCRAP.*
heißen. Recht plausibel übrigens, da man mit diesem Argument direkt mittels »Fsfirst()« die Dateien im Clipboard findet.
Weiteres
Ab GEM 2.0 gibt es die Funktion »scrp_clear()«,7em Format zurecht - und mit keinem anderen.
Nun geistern aber Testversionen von »1st Word Plus Version 3.x« durch die Weltgeschichte. Diese schreiben nur den Clipboard-Pfad, also
A:\CLIPBRD
und weigern sich auch, mit anderen Formaten zusammenzuarbeiten. Die PC-Version von 1st Word Plus vertreibt Digital Research höchstpersönlich - da ist es kaum verwunderlich, daß Digital Research München telefonisch Klarheit schaffen konnte. Die Auflösung: Der von GST benutzte Clipboard-Pfad ist korrekt, das Beispiel in der GEM-Dokumentation falsch. Die einfachste Anwendung des Clipboards ist natürlich die einfache Übergabe von Textblöcken. 1st Word Plus verwendet dazu zwei verschiedene Formate: das normale TXT-Format und das IWP-Format, in dem alle zusätzlichen Informationen über Schriftart und ähnliches enthalten sind. Welche Datei importiert wird, hängt von der aktuellen Einstellung des »WP-Modus« ab. Die Folge für uns Programmierer ist, daß wir nach Möglichkeit Daten in beiden Formaten schreiben sollten. Glücklicherweise ist das 1WP-Format sehr einfach aufgebaut, so daß es wenig Mühe bereitet (siehe Tabelle).
Als Demonstration des Clipboards finden Sie auch eine Beispiel-Funktion in Turbo-C, die nicht nur den kompletten Namen auf eine bestimmte Datei im Clipboard zurückliefert, sondern auch gegebenenfalls das Clipboard erst anlegt.
Nach dieser Vergangenheitsbewältigung ein Blick auf aktuelle Themen: Endlich hat mal wieder Atari Deutschland die Chance ergriffen, die Standardisierung voranzutreiben. Ende Juni einigten sich Atari und führende Anbieter von Netzwerken auf einen gemeinsamen Standard für die GEMDOS-Ansteuerung der Netzwerkerweiterungen. Damit hat Atari wenigstens etwas getan, um einen Softwarestandard zu schaffen. Nähere Informationen zum ST-Netzwerkstandard gibt es bei Atari Deutschland, PAM Software und selbstverständlich demnächst an dieser Stelle. Neues gibt es auch vom »GNU-Project« (vormals »Free Software Foundation«, siehe in [4]): Mittlerweile sind nicht nur GNU-CC Version 1.35, sondern auch der Source-Code-Debugger »GDB«, der Parsergenerator »Bison«, der Scanner-Generator »Flex« und weitere Utilities wie »Gnutar« verfügbar.
Das wär‘s für diesen Monat. Und wenn Atari Sunnyvale nicht im Juli dicht macht, dann können wir Ihnen demnächst den Atari-Standard für die erweiterte Kommandozeile vorstellen.
(uh)
PAM Software, Carl-Zuckmayer-Str. 28, 6500 Mainz 33
Quellennachweis:
[1] Julian F. Reschke, »Bedienungskomfort des Macintosh«, 68000er 2/1988
[2] Julian F. Reschke, »Die Ablagekästen entstauben«, ST-Magazin 3/1989
[3] Julian F. Reschke, »GEM 2.0 - ein Blick unter die Motorhaube«, ST-Magazin 8/1988
[4] Julian F. Reschke, »Im Zeichen des GNU«, ST-Magazin 3/1989
Eine TXT-Datei für das Clipboard sollte folgende Eigenschaften erfüllen:
- Zeilenlänge maximal 75 Zeichen
- Zeilenende durch CR/LF gekennzeichnet (Carriage Return/Line Feed)
- beim Lesen sollte auch ein einzelnes LF als Zeilenende erkannt werden
- »weiche« Zeilenumbrüche, also Zeilenenden, die keine Absatzenden sind, werden durch ein Leerzeichen am Zeilenende gekennzeichnet. Für das 1WP-Format muß man folgendes zusätzlich beachten:
- mit der Escape-Sequenz »ESC $80« wird auf normale Schriftart geschaltet (am Anfang der Datei einmal benutzen)
- »weiche« Leerzeichen, also solche, die beim Umformatieren als Zwischenraum zwischen Wörtern betrachtet werden, sind als ASCII-Code $1E abgelegt
- für die »weichen« Zeilenenden gilt das für das TXT-Format gesagte Listing: Diese Beispielroutine in Turbo-C legt das Clipboard an.
/*
Routinen zur Behandlung des Clipboards
Copyright (c) Julian F. Reschke 1989
Compiler: Turbo-C 1.1
*/
#include
#include
#include
#Include
#include
/*
FindClipFile
Rückgabewert : 0: Fehler
0: Erfolg
Extension : Namenserweiterung der gesuchten Datei
Filename : Zeiger auf Char-Array, in das der
vollständige Name eingetragen wird
*/
int FindClipFile (char *Extension, char *Filename)
{
char *EnvDir;
scrpread(Filename); /* Pfad lesen */
if (Filename[0] == 0) /* leerer Pfad */
{
EnvDir = getenv("CLIPBRD");
if (EnvDir) /* falls Env-Variable da */
{
strcpy(Filename, EnvDir);
}
else
{
long stack;
int bootdev;
char DefaultDir[]=“#:\CLIPBRD“;
stack = Super(0L);
bootdev = *((int *)(0x446));
bootdev &= 0xff; /* obere 8 Bits weg */
Super((void *)stack);
DefaultDir[0] = 'A‘-bootdev;
strcpy(Filename, DefaultDir);
}
scrp_write(Filename);
{
/* Verzeichnis anlegen */
int handle;
handle = Dereate(Filename);
if ((handle<0) && (handle != -36))
{
scrp_write("");
return 0; /* konnte nicht angelegt */
/* werden oder war nicht da */
}
}
}
strcat(Filename,"\SCRAP.");
strcat(Filename, Extension);
return 1;
}
int main (void)
{
char Name[128];
int a;
appl_init();
a = FindClipFile ("TXT", Name);
if(a)
puts(Name);
appl_exit();
return 0;
}
Julian Reschke