Atari ST - 1988
Greifer (Der)
_0_2.png?v=1788874703)
- 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

- 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 ?
