Atarium: Neues von der Zwischenablage

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:

    /*
       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 &= Oxff;    /* 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



Aus: ST-Magazin 09 / 1989, Seite 68

Links

Copyright-Bestimmungen: siehe Über diese Seite