ĝ˙ĝŭ15.SUCHEN ^F/^Qfĝ˙ĝŭ >>1 ---------------- Die Suche kann durch 2 verschiedene Kommandos eingeleitet werden, da ^Qf etwas seltsam wirken mag fr viele Anwender. ĝ˙15.1.ĝ˙ Das META-Zeichen '\' >>2 Das Zeichen '\' (Backslash) dient als META-Zeichen, das eine bestimmte Option einleitet. Dieses Metazeichen und der folgende Buchstabe werden n”tigenfalls aus dem Suchstring entfernt. Die Bedeutung ist folgende: \\: Im Suchstring befindet sich wirklich ein \. Nur ein \ wird entfernt. \?: Schalte die Nachfrage beim Suchen AUS. Normal ist die Nachfrage bei jeder Fundstelle! \g: Unterscheide zwischen Gross- und Kleinschreibung. Normal ist die Nicht-Unterscheidung. Sie ist zwar langsamer, aber blicher. \<: Suche rckw„rts. Normal ist die Vorw„rtssuche. \w: Suche nach einem Wert, z.B. 12. Nach dem w darf ein '<' oder '>' folgen, wodurch sich ein Wertebereich ergibt, z.B. sucht '\w<10' alle Werte unterhalb von 10 heraus. Die Kombination '\w>69\w<81\?' findet alle Zeilen, die einen Wert zwischen 70 und 80 enthalten und h„lt mit der Suche nicht an. Die Liste der Zeilen befindet sich als 'History' im Block- Puffer. Nach HEX- und BIN-Zahlen kann ĝŭnichtĝŭ gesucht werden! \- verneint eine Bedingung. '\w>69\w<81\?\-' findet alle Zeilen, die einen Wert zwischen 0..69,81..oo enthalten. \n bedeutet 'Zeilenschaltung', die durch RETURN/ENTER erzeugt wird. 2 aufeinanderfolgende Leerzeilen lassen sich so mit '\n\n\n' finden. UNI_ED.PRG zerlegt den eingegebenen String in einzelne Zeilen. Maximal 10 solche Zeilen sind erlaubt. ĝ˙15.2.ĝ˙ Buchstabeneingabe >>2 Wollen Sie gezielt Zeichen und Buchstaben ersetzen, die sich nicht auf der Tastur finden, k”nnen Sie diese mit ALT+Ziffernblock oder einen Mausklick in die kleine Buchstabenbox eingeben. ĝ˙15.3.ĝ˙ Suchlauf >>2 Haben Sie dann den Suchbegriff eingegeben, f„ngt UNI_ED.PRG ab der Cursorposition mit seiner Suche an. Bei den Fundstellen wird angehalten und Sie k”nnen angeben, ob Sie WEITERSUCHEN wollen mit 'j' oder an der richtigen Stelle sind (irgendeine andere Taste!). Brechen Sie ab oder UNI_ED.PRG findet keine weitere Stelle, sind Sie wieder im normalen Arbeitsmodus. W„hrend der Suche wird das Fortschreiten durch eine Zeilenanzeige offenbart. Diee Fundstelle wird mit einem grožen K„stchen markiert, das zudem noch schwarz hinterlegt ist. Diese Funktion stammt vom TT. Auf dem Grožbildschirm ist ein kleiner blinkender Cursor in einer 'Textwste' von 9600 Buchstaben maximal nicht so leicht zu finden! ĝ˙15.4.ĝ˙ Verweis: Suche nur im Blockbereich >>2 Unter den USER-Functions ist schon eine vorhanden, die nur INNERHALB des markierten Blockes sucht. Gefunden werden nur Stellen, die IN diesem Block liegen. Dabei ist es gleichgltig, ob das ein Normal-Block oder ein Spaltenblock ist! Sie k”nnen z.B. nach einem Begriff suchen, der in den ersten 15 Spalten Ihres Textes vorkommt. Fundstellen weiter hinten in den Zeilen im Text werden aužer Acht gelassen. ĝ˙15.5.ĝ˙ Such-'History' im Blockpuffer >>2 Das Ende des Suchvorgangs wird n”tigenfalls mit einer ALERT-Box angezeigt, in der auch die Anzahl der gefundenen Stellen wiedergegeben wird. Im Blockpuffer, der als 'ungltig' markiert wurde, stehen die Fundstellen mit Zeilenangabe und dem Zeileninhalt. Den Blockpuffer k”nnen Sie dann immer noch auf Diskette schreiben oder auch in den Text bernehmen. ĝ˙ĝŭ16.ERSETZEN ^Qaĝ˙ĝŭ >>1 --------------- Genau wie beim Suchen beginnt der Ersetzvorgang erst ab der Cursor- Position! Die META-Zeichen gelten auch hier genauso wie unter SUCHEN beschrieben. Benutzen Sie aber die Kombination '\n', ist eine History der Ersetzvor~ g„nge nicht mehr m”glich. Da eine Funktion wie 'Ersetze alle [ durch \n\n[' recht schwierig zu programmieren ist und nicht immer wie gewnscht arbeitet, rate ich Ihnen, kein AUTOMATISCHES Ersetzen mit \? einzuschalten, sondern jeweils mit der Best„tigung zu arbeiten! Die Ersetzung ist jeweils mit E zu best„tigen. Das Weitersuchen wird erlaubt mit j. Auch wenn keine Nachfrage erfolgt, k”nnen Sie ber ^C noch das Ersetzen abbrechen! Das eben Gesagte gilt auch fr die USER-Function Ersetzen. Dabei ist das Ersetzen aber auf den markierten Blockbereich beschr„nkt. Ersetzt wird nur in diesem Normal- oder Spaltenblock. Die Umsetzung von Grož- in Kleinschrift und umgekehrt (auch mit den Umlauten!) ist auf einen markierten Block beschr„nkt. Dies finden Sie auch unter den USER-Functions. Nach Beendigung des Ersetzens wird mit einer ALERT-Box n”tigenfalls auf das Ende des Ersetzvorganges hingewiesen, wobei die Anzahl der Ersetzungen angezeigt werden. Im Blockpuffer, der 'ungltig' markiert wurde, stehen dann noch die Zeilen VOR dem Ersetzen mit Angabe der Zeilennummer. Mit ^Kp k”nnten Sie diesen Blockpuffer an das Ende des Textes 'schmieren' - oder in den 2.Textbereich - oder ihn auf Diskette/Platte sichern. Probleme gibt es, wenn Sie eine Zeichenkette durch eine Zeichenkette ersetzen, in der die zu ersetzende Zeichenkette selber vorkommt, also z.B. 'ae' durch 'aae'. In diesem Fall mssen Sie 2 Ersetzvorg„nge durchfhren, wobei im ersten der ursprngliche String durch ein unverd„chtiges Zeichen ersetzt wird. Wenn Sie die U_ser-Funktionen anw„hlen, wird Ihnen auch das L”schen aller 7 ESC-Sequenzen angeboten. ĝ˙16.1.ĝ˙ Such/Ersetz-Beispiele (\n) >>2 Die 'Meta'-Zeichen bedrfen einer Erl„uterung, insbesondere der Gebrauch des Zeilenschaltungs-Zeichens '\n'. Wichtig ist, daž selbst bei Fehleingaben die Analyse abgebrochen wird, wenn ein Timing-Fehler (Analyse dauert zu lange!) aufgetreten ist. Von daher k”nnen Sie nichts falsch machen. Dennoch ist zu empfehlen, Ersetzvorg„nge nie mit '\?' zu automatisieren, d.h. die Nachfrage auszuschalten - es sei denn, Sie seien sich GANZ sicher, daž die Ersetzung in Ihrem Sinne funktioniert. ************************************************** Ein (schwer zu lokalisierender)Fehlerin UNI_ED.PRG fhrt nach wiederholt durchgefhrten Ersetzvor~ g„ngen zu fehlerhaften Ergebnissen beim Gebrauch des '\n'. Sie k”nnen dann UNI_ED.PRG verlassen und neu starten. ************************************************** Die Zeichen '\\','\?','\g','\<','\w','\-' bieten keine Schwierigkeiten. Sie sind unter 'Suchen' erl„utert. Schwieriger ist der Platzhalter fr Zeilenschaltungen '\n' (vgl.C-Syntax!) Ich rate Ihnen, vor l„ngeren Ersetzvorg„ngen mit diesem Zeichen Ihre Datei vorher einmal abzusichern, damit Sie noch eine gute Ausgangs-Datei fr einen weiteren Versuch haben! Grunds„tzlich gilt, daž Sie soviele \n einsetzen, wie oft Sie die Taste RETURN oder ENTER drcken wrden. Eine Leerzeile erzeugen Sie, wenn Sie am Ende einer Zeile angekommen sind, durch 2maliges Drcken der RETURN-Taste. Entsprechend wird eine Leerzeile durch \n\n dargestellt. Als Beispiel nehme ich einen Fall aus meiner Praxis: Ein Datensuchprogramm erzeugte Texte, in denen die Kapitelnummer durch [n] dargestellt wurde, z.B. [2]. Diese Kapitelangaben standen aber MITTEN im Text, nicht am Anfang einer Zeile. Der 1.Vers nach der Kapitelangabe stand in der n„chsten Zeile und nicht - wie gewnscht - direkt nach der Kapitelangabe, also z.B. ..der Welt. [2] {1}Wenn wir aber unsere Snden bekennen... Daraus sollte werden: ..der Welt. [2]{1}Wenn wir aber... Aužerdem war die Zeilenl„nge h”chst unterschiedlich. Sie sollte auf 50 Zeichen beschr„nkt werden und der Text sollte im Blocksatz gehalten werden. UNI_ED.PRG ist fr diese komplexe Aufgabe geeignet: Zuerst wird '[' durch '\n\n[' ersetzt. Dadurch steht jetzt jede Kapitelangabe am Anfang einer Zeile nach einer Leerzeile und nicht mitten im Text. Als n„chstes wird die darauffolgende Zeile 'hochgeholt'. Alle ']\n{' werden durch ']{' ersetzt. Wenn nun durch O_ptionen B_locksatz der Blocksatz gew„hlt wurde, kann durch U_ser F_ormatieren der gesamte Text formatiert werden. Jedes Kapitel stellt dabei einen Block dar, der durch die Leerzeile markiert worden ist. Diese Leerzeilen lassen sich nun entfernen, am sichersten mit der Funktion 'L”sche alle Leerzeilen bis zur Marke' (Marke vorher setzen). Weniger sicher ist das Ersetzen von '\n\n' durch '\n' (Eventuell mssen Sie vorher einmal sichern. Dabei stellt UNI_ED.PRG wieder die Zeilenl„ngen fest, u.a. auch Leerzeilen mit der L„nge 0). Nun k”nnten Sie noch alle '[' durch ' [' ersetzen und Sie h„tten einen Einzug vor jedem Kapitel. (Besser w„re es allerdings, gleich am Anfang der Arbeit '[' durch '\n [' zu ersetzen. Dann brauchen Sie auch nicht die eigentlich berflssige Leerzeile und ein zweiter Durchgang mit dem Formatieren ist auch nicht n”tig!) Wenn Sie eine Sequenz wie '?\n\n[' durch '?[' ersetzen, wird eine Leerzeile mit nachfolgender Kapitelangabe an die letzte, nicht leere Zeile ANGEHŽNGT! Gewissermažen l„žt sich der Vorgang dadurch aufheben! Das Zeichen '?' gilt als 'Wildcard' fr EINEN Buchstaben. ĝ˙16.2.ĝ˙ Steuerzeichen Entfernen ^U r >>2 Wenn Sie einen fremden Text geladen haben, k”nnen sich in diesem Steuerzeichen befinden, die auf Ihrem Drucker zu allerlei seltsamen Erscheinungen fhren k”nnen, z.B. fhrt ein Ž bei Nichtwandlung gerne zu einzeiligem Breitdruck im Epson-Modus. Die Routine R_eplace bel„žt aber die Umlaute und das ž und alle normalen Buchstaben im Bereich 32 bis 126. Alle anderen Zeichen k”nnen in zweistellige HEX-Zahlen mit vorangestelltem $ umgewandelt werden. Diese Funktion muž ĝŭjedenĝŭ Buchstaben des Textes ansehen und den gesamten Text neu aufbauen. Richten Sie sich auf eine lange Rechenzeit von UNI_ED.PRG ein! Nach dem Ende dieser Funktion - die wie blich mit ^C abgebrochen werden kann! - mssen Sie eventuell Zeilen verkrzen. Die Suche nach den gewandelten Zeichen ist durch das vorangestellte $ relativ einfach.