AtarimaniaAtarimania

Atari ST - 1988

Greifer (Der)

Greifer (Der) — screenshot 1
1 / 2
Genre
Word Processing
Year
1988
Language
[unknown]
Publisher
[no publisher]
Controls
Keyboard / Mouse
Distributor
Resolution
Medium / High / VGA
Developer
[n/a]
ST Type
ST, STe, TT, Falcon030 / 0.5MB
Licensed from
Programmer(s)
Rettberg, Ralf
Country
Germany
MIDI
Software
German
Version
0.2
Box/Instructions
German
Number of Disks
1 / Double Sided
License
PD / Freeware / Shareware
Dump
Download
Serial
Dump format
MSA
Protection

INSTRUCTIONS

******************************************************************
*                                                                *
*                   D E R    G R E I F E R                       *
*                                                                *
*         noch ein völlig überflüssiges PD - Programm            *
*                                                                *
******************************************************************


   Auf der Diskette befinden sich ( hoffentlich ) die Files

   G.PRG  G.RSC  G.DOC  und   C.REF  

   Letzteres wird nicht benötigt, es enthält als Beispiel ein 
   Suchmuster, das Sie mal mit Satzlänge = 1 auf Ihre C - Programme
   loslassen sollten.




1. Die Übliche Rechtfertigung - schließlich gibt kein halbwegs
   vernünftiger Mensch zu, nächtelang aus purem Jux vor einem 
   grauen Kasten zu hocken

   Der Greifer entstand aus der Notwendigkeit, aus einigen -zig
   Textfiles, Briefen und sonstigem Kram, für das ein Datei-
   system zu unflexibel ist, mal eben die herauszugreifen, die 
   Information zum selben Thema enthalten. Es sollte möglich 
   sein, beim Suchmuster sowie bei den Dateinamen mit Wildcards
   zu arbeiten und bei erfolgreicher Suche entweder interaktiv
   in der Datei vorwärts und rückwärts zu blättern oder aber das
   Programm als Filter zu verwenden und Datensätze frei wählbarer
   Länge in eine Datei zu schreiben. Auch im interaktiven Modus
   sollte es möglich sein, die gerade angezeigte Seite in eine
   'Schmierdatei' zu schreiben. Neben der Möglichkeit, eine Ein-
   zeldatei oder einen Dateibaum zu durchsuchen, sollte das Pro-
   gramm auch eine Liste von Pfadnamen aus einer Datei akzeptieren.
   Zuletzt wäre es noch schön, wenn man zwischendurch auch andere 
   Programme aufrufen könnte, Shell, Editor u. dergl.



2. Doppelte Arbeit schändet sicherlich

   Deshalb benutzt die HILFE - Funktion des Greifers den folgenden
   Text. Diese Datei G.DOC sollte sich daher im selben Ordner wie 
   G.PRG und G.RSC befinden.

   Das Programm ist zwar in erster Linie für Festplattenbesitzer
   interessant, wer aber unter chronischem Platzmangel leidet, kann
   ja aus diesem Text, das Gelaber rausschmeißen. Das Prozent -
   Zeichen am Anfang der Anleitung wird als Suchmarke benutzt und
   muß daher stehenbleiben.

   Ich wäre aber dankbar, wenn die Weitergabe des Greifers nur mit 
   der vollständigen Datei G.DOC erfolgen würde, einerseits aus 
   Eitelkeit, andererseits weil ich keine Lust habe, wütende Briefe
   zu bekommen, Bugs betreffend, die ich weiter unten beschrieben habe.



%
3. Anleitung

   Nach dem Programmstart sind die Buttons SUCHMUSTER und SUCHE IN
   selektiert. Tätigen Sie hier Ihre Eingaben und geben RETURN ein
   oder klicken SUCH an, so wird eine einzelne Datei durchsucht.
   Bei erfolgreicher Suche werden 20 Zeilen ausgegeben und zwar 
   ab der letzten durch 20 teilbaren Zeilennummer. ( Die Vorein-
   stellung von 20 Zeilen läßt sich beliebig ändern durch Selek-
   tieren von SATZLÄNGE und Eingabe eines anderen Wertes.) 
   Sie können jetzt in der Datei vor (V) und zurück (Z) blättern
   oder die angezeigte Seite in die Datei G.OUT schreiben (D), 
   falls die Datei bereits existiert, wird die Seite ans Ende 
   angehangen. (W) setz die Suche fort.






   Haben Sie den Button SCHWEINSGALOPP angeklickt, arbeitet das
   Programm als Filter. Die gefundenen Datensätze werden jetzt
   fortlaufend ausgegeben, ohne daß Sie die Möglichkeit zum Blät-
   tern haben ( Sie können die Ausgabe allerdings mit Control S
   anhalten und mit Control Q fortsetzen ). Dieser Modus ist auto-
   matisch gewählt bei  Umleitung der Ausgabe in eine Datei, hierzu
   AUSGABE anklicken und dahinter den Namen der Ausgabedatei an-
   geben. Außerdem können Sie durch ANHÄNGEN wählen, ob eine
   evtl. bestehende Datei gleichen Namens erweitert oder über-
   schrieben werden soll.

   Ist 1STWORD selektiert, werden in 1ST-Word Dateien Softspaces
   durch echte Blanks ersetzt ( natürlich nur in der Ausgabe ). 
   Wenn sie kein 1ST-Word besitzen, aber jede Menge mit 1ST-Word
   getippte Anleitungen für PD-Programme, können Sie mit diesem
   Modus lesbare Texte erzeugen, indem sie als Suchmuster einen
   einzelnen . angeben ( passt auf alles ) und die Ausgabe in
   eine Datei leiten.


   ZEILENNUMMERN gibt natürlich Zeilennummern aus, G/K IS WURSCHT
   sucht unabhängig von Groß- und Kleinschreibung, Umlaute werden
   korrekt berücksichtigt.
   Sowohl der 1ST-Word als auch der G/K-Modus bremsen die Such-
   geschwindigkeit etwas.

   INVERS ist nur sinnvoll bei SATZLÄNGE = 1. Es sorgt dafür, daß 
   nur die Zeilen ausgegeben werden, die das Muster nicht ent-
   halten, sehr wichtig, wenn Sie Ihrer Erbtante Textverarbeitung
   demonstrieren wollen und schnell eine gereinigte Version ihres
   Wörterbuchs benötigen.

   Statt das Suchmuster in der Dialogbox einzugeben, können Sie
   auch unter SUCHMUSTER AUS eine Datei angeben, die das Such-
   muster enthält. In dem Fall sind die einzelnen Zeilen Oder-
   verknüpft. Die beiden Zeilen für das Suchmuster in der Dialog-
   box gelten hingegen als eine Zeile.




   Soll ein Verzeichnis nebst Unterverzeichnissen durchsucht wer-
   den, BAUM DURCHSUCHEN anklicken, Startknoten angeben und bei 
   der Wahl des Dateimusters möglichst sicherstellen, daß nur
   Textfiles betroffen sind. 

   Sollen Unterverzeichnisse ignoriert werden, stattdessen
   ORDNER DURCHSUCHEN wählen.

   Um eine häufig benötigte Gruppe von Dateien zu durchsuchen, 
   wählen Sie SUCHPFADE AUS und geben dort den Namen einer Datei
   an, die eine Liste der zu durchsuchenden Dateien enthält.
   In jeder Zeile muß genau ein Pfadname angegeben stehen.








   Eine Hilfe dabei bietet SUCHPFADLISTE ERSTELLEN. Diese Funktion
   liefert vom Startknoten ausgehend eine Liste sämtlicher Dateien,
   auch der Unterverzeichnisse ( sofern ORDNER DURCHSUCHEN nicht
   selektiert ist ), die auf das Dateimuster passen.

   Die Ausgabe leiten Sie in eine Datei, widerholen das Ganze evtl.
   mehrmals ( ANHÄNGEN wählen ) mit anderen Ordnern und/oder Mustern
   und schmeißen mit einem Editor Überflüssiges raus.


   Den Editor können Sie unter EDIT aufrufen, vorausgesetzt, er 
   befindet sich im selben Ordner wie G.PRG und hört auf den Namen
   EDIT.PRG. Ebenso können Sie eine Shell COMMAND.PRG erreichen,
   andere Programme unter PROGRAMM.






   Folgende Zeichen können in Suchausdrücken benutzt werden:

   ^     Zeilenanfang
   §     Zeilenende
   \t    Tabulator         
   [ ]   Menge
   [^ ]  Ausschlußmenge   
   .     beliebiges Zeichen
   #     beliebig oft das vorhergehende Zeichen
   |     Oder - Verknüpfung

   Soll nach | ^ § [ ] . oder # selbst gesucht werden, muß ein 
   Backslash \ vorangestellt werden. Um einen Backslash zu suchen, 
   geben sie \\ ein.






   Beispiel:         sucht nach:


   Otto              'Otto'

   ^ #Otto           'Otto' am Zeilenanfang 
                            bzw nach 0 oder mehreren Leerzeichen

   \#Otto§           '#Otto' am Zeilenende

   Otto|Ottilie      'Otto' oder 'Ottilie'

   Otto #[0-9][0-9]# 'Otto' dem nach 0 oder mehreren Leerzeichen 
                     eine beliebige Ziffernkette folgt

   ^[^AEIOU]#§       einer Zeile die keine Vokale in Großbuchstaben enthält




   ^[a-zA-Z_][a-zA-Z_]#[ \t]#.#([^;]#)[^;]#§

   Dieses Beispiel sucht nicht nach einem keltischen Kraftausdruck
   im letzten Asterix, sondern
       
   nach einem oder mehreren Klein- oder Großbuchstaben incl.
   des Unterstrichs am Zeilenanfang, 
   gefolgt von einer beliebigen Anzahl (oder keinen) Tabs oder Leerzeichen,
   gefolgt von einer beliebigen Zeichenfolge (oder auch keinem) Zeichen,
   gefolgt von einem Ausdruck in runden Klammern, der jedes Zeichen, 
   mit Ausnahme des Semikolons enthalten darf, 
   gefolgt von einer beliebigen Zeichenfolge mit Ausnahme des Semikolons
   bis ans Zeilenende     

   also nach allen C-Funktionsdefinitionen





4. Wie's funktioniert und wann warum nicht

   Eine Zeile mit einem Suchausdruck darf maximal 132 Zeichen ent-
   halten, die Zeilen der zu durchsuchenden Dateien 256.

   Wird dem Programm eine Liste mit den zu durchsuchenden Dateien 
   übergeben, so darf jeder der angegebenen Pfadnamen maximal 80
   Zeichen umfassen.
   Wird diese Länge überschritten, wird entweder die Datei nicht 
   gefunden, oder aber Eine, die nicht gemeint war.


   Wichtig für STEVE Benutzer: STEVE benutzt kein Carriage-Return
   als Zeilentrenner. Aus dem unter Punkt 5. beschriebenem Grund  
   darf der Greifer auf keinen Fall auf STEVE - Files angewandt
   werden, Sie könnten unliebsame Überraschungen erleben !



   Um blättern zu können, führt das Programm eine Liste, in die bei
   jeder durch die Satzlänge teilbaren Zeilenzahl, der Stand des
   Filepointers eingetragen wird. Zeichenweises Rückwärtsgehen wäre
   viel zu langsam. Um den Speicherbedarf in Grenzen zu halten - 
   vielleicht bastele ich noch ein Accessory - beschränkt sich 
   diese Liste auf 8000 Einträge. Damit ergibt sich die maximale
   Länge einer einzelnen Datei in Abhängigkeit von der Satzlänge:
   bei einer Satzlänge von 1 mit 8000 Zeilen, bei einer Satzlänge
   von 20 mit 160000 Zeilen. Wird diese Länge überschritten, 
   passieren vermutlich seltsame Dinge. Im Allgemeinen dürfte der
   Platz aber reichlich bemessen sein, daher habe ich auf die 
   Fehlerüberprüfung verzichtet, um nicht unnötig zu bremsen, ganz
   zu schweigen von meiner Faulheit. Die nächste Version kriegt eh'
   eine zirkuläre Liste.
   





   Ebenfalls wegen Faulheit nicht implementiert wurde die Funktion
   NUR DATEINAMEN. Wer zum Henker braucht sowas ?
 
   Man könnte natürlich nochmal die oben erwähnte Erbtante bemühen.
   Sie wollen wissen, bei welchen Ihrer litererischen Versuche
   Sie das invisible - Bit setzen müssen ...















5. Eine unangenehme Geschichte

   Das Programm wurde mit dem MEGAMAX C-Compiler erstellt, den ich
   besonders seiner Geschwindigkeit wegen schätze.

   Eine seiner Eigenschaften bereitete mir aber doch einigen Ärger.
   Hat man eine Datei mit fopen() im read-only mode geöffnet und
   ist mit fgets() ans EOF gelangt, so führen weitere Aufrufe von
   fgets() nicht nur dazu, daß über das Dateiende hinaus gelesen
   wird, der neue Stand des Dateizeigers wird auch abgespeichert 
   und die nur zum Lesen geöffnete Datei ist plötzlich um einige 
   krumme Zeichen länger. 

   Der Fehler konnte mit einigen Verrenkungen umgangen werden, 
   tritt aber bei Überschreitung der Zeilenpufferlänge des Greifers
   von 256 Zeichen immer noch auf. Falls Sie den Greifer versehentlich
   auf *.PRG - Files anwenden macht das nix aus, bei STEVE - Files 
   kann es passieren, das STEVE die Datei nicht mehr korrekt behandelt.



   Nachdem ich auf diese Weise einem Freund und STEVE - Besitzer eine
   200 K Datei ( natürlich kein Backup vorhanden ) ruiniert hatte,
   hier für den Fall, daß das Elend schon passiert ist ( Anleitungen
   lesen zeugt von mangelndem Selbstvertrauen ), die Abhilfe:
   
   STEVE - Dateien enden mit 2 Null - Bytes. Stellen Sie mit einem
   Diskmonitor fest, an welcher Position das zweite Null - Byte
   steht und ändern Sie im Directory die Dateilänge entsprechend.



   Die mir bekannten Macken habe ich damit nach bestem Wissen und
   Gewissen dokumentiert, etwaige Schadenersatzforderungen lassen
   mich nur hohnlächeln.






   Kritik, Anregungen, Hinweise auf Fehler, aber auch Schulter-
   klopfen und Bemerkungen wie "Spitze", "Affengeil", "für mich 
   fing ein völlig neues Leben an" werden jederzeit gern entgegen-
   genommen.


            Ralf Rettberg
            Gahrenbergerstr. 7

            3512 Reinhardshagen



   P.S.: Kennt jemand ein GO - Programm, das mehr kann als das
         Brett zu malen oder Literatur, die Programmierung 
         betreffend ?