Change Version 2.19 (02.08.96) Dieses Programm dient zum Ändern oder Erkennen verschiedener Zeichenketten in Dateien. Sie können damit in einem Binär- oder Textfile bestimmte Zeichenfolgen suchen und diese durch andere ersetzen lassen. Haben Sie zum Beispiel ein Programm völlig konfiguriert und Sie ändern nachher die Pfade der Datei, weil Sie sich eine neue Festplatte gekauft haben, so müssen Sie nicht alles erneuern, sondern Sie lassen nur die Pfad-Zeichenkette suchen und ersetzen. Es wurde von Dirk Stöcker in MaxonC++ V3.00 programmiert und ist Public Domain. Ich gebe alle Rechte und damit alle Pflichten an dem Programm auf. Ich gebe keinerlei Garantie für das ordnungsgemäße Funktionieren des Programmes. Seit Version 2.0 besitzt Change eine graphische Benutzeroberfläche. Die Bedienelemente entsprechen den Parametern in der Shell. Zu dieser Ober- fläche gelangen sie durch einen Doppelklick auf das Icon oder durch einen parameterlosen Aufruf aus der Shell. Seit Version 2.3 ist das CLI-Template an den Commodore Standard angepaßt. Dadurch ergeben sich einige wenige Änderungen zu Vorversionen. Dieses Programm benötigt mindestens OS2.0 (V37). Die Geschichte des Programms steht im Source Code -> source/Change/Change.c Mit dieser Meldung begrüßt Sie das Programm beim Aufruf mit '?'. --> Change ? FROM/A,SSTRING/A,TO,RSTRING,FOUND/S,HEX/S,LENGTH/S,NOCHANGE/S,NOSIZE/S, OVERWRITE/S,PATH/S,POS=POSITION/K: Geben Sie nochmal '?' ein, so kommt eine genauere Erklärung. Mit "Version Change" erhalten Sie die Versionsnummer des Programmes. Parametererklärung: FROM ist das schon existierende File aus dem gelesen wird. > muß immer angegeben werden. SSTRING sind die zu suchenden Zeichen. > muß immer angegeben werden. TO ist das File in das geschrieben wird. Es muß noch nicht existieren. Wenn für das Zielfile das Quellfile oder "" angegeben wird, so wird in das Ausgangsfile gespeichert > muß außer bei NOCHANGE immer angegeben werden. RSTRING ist der Ersatz für den . > muß nicht angegeben werden (wenn nicht angegeben, dann leer FOUND gibt eine Meldung aus, wenn der SSTRING gefunden wurde (z.B. String gefunden bei 32C). Die Zahl ist der hexa- dezimale Code der Position. > muß nicht angegeben werden (bei NOCHANGE überflüssig). HEX ermöglicht die Eingabe der Zeichenketten in hexadezima- ler Schreibweise. (Manche Zeichen kann man nicht über Tastatur eingeben, z.B. Return, oder werden von der Shell nicht weitergeleitet, z.B. das ';'. > muß nicht angegeben werden. LENGTH ändert das Zeichen vor dem Wechsel um die veränderte Länge - bestimmte Programme legen dort die Längeninfor- mation ab (entspricht einem BCPL-String: BSTR). > muß nicht angegeben werden (bei NOCHANGE überflüssig und unnötig, wenn Länge des SSTRING gleich der Länge des RSTRING). NOCHANGE Hiermit wird das Ersetzen ausgeschaltet. Die Position wird wie bei FOUND automatisch ausgegeben. Die Parameter TO, LENGTH, FOUND, OVERWRITE, PATH und RSTRING sind überflüssig. > muß nicht angegeben werden. NOSIZE schaltet die Groß-/Kleinunterscheidung aus > muß nicht angegeben werden OVERWRITE überschreibt die Zeichen hinter dem SSTRING, wenn der RSTRING länger ist. Ist er kürzer, so wird mit 0 aufge- füllt. > muß nicht angegeben werden (unnötig, wenn Länge des SSTRING gleich der Länge des RSTRING). PATH Damit können ganze Pfade ersetzt werden. Wenn die zwei Strings sich in der Länge unterscheiden, so wird ähnlich wie bei OVERWRITE überschrieben oder mit 0 auf- gefüllt, aber erst, wenn das 0-Zeichen erkannt wird. Damit kann man z.B. Pfadangaben in Files ersetzen, die nach den Namen Nullen schreiben. Mit dieser Option bleibt der Pfad zusammen. > bei OVERWRITE und gleichen Längen ausgeschaltet POS Abkürzung für POSITION POSITION Hinter POSITION muß in hexadezimaler Schreibweise die Position des zu ersetzenden string angegeben werden. Nur an dieser Stelle wird ersetzt. (Bei Eingabe von 0 werden alle strings ersetzt. Die Positionen können Sie vorneweg mit dem Parameter NOCHANGE erfahren. > muß nicht angegeben werden (bei NOCHANGE überflüssig) Bei FROM und TO ist der volle Pfad vom aktuellen Verzeichnis oder von einem Grundverzeichnis aus nötig. Wenn die Schlüsselworte nicht angegeben werden, ist der erste String FROM, der zweite SSTRING, der dritte TO und der vierte RSTRING. Change kann auch einen String verarbeiten, in dem ein Pattern einhalten ist. Setzt man bei hexadezimaler Eingabe ein ? ein, so wird an dieser Stelle jeder Buchstabe akzeptiert. Bei normaler Eingabe bedeutet \? den Pattern und \\ den \, kommt nach dem \ eine zweistellige HEX-Zahl, so wird \.. in das ASCII-Zeichen der Zahl umge- wandelt (sehen Sie bei den Beispielen nach) Bei hexadezimaler Eingabe werden alle Zeichen ungleich (0..9 a..f A..F ?) den geforderten ignoriert. Sie können also zum Beispiel Striche einsetzen, um die Lesbarkeit zu erhöhen. 123a4b52349f009a entspricht also 123a_4b52_349f_009a oder 123a.4b52.349f.009a oder 1-2-3-a-4-b-5-2-3-4-9-f-0-0-9-a. Am Anfang gibt das Programm noch einmal den zu suchenden und den Ersatz- string aus: dargestellt werden Zeichen zwischen 20 und 126 und zwischen 161 und 255 Invers dargestellte Zeichen stehen für andere Zeichen . bedeutet dabei ein nicht darstellbares Zeichen _ bedeutet einen Pattern Am Ende gibt das Programm einen Status aus: String wurde ... mal gefunden und ... mal gewechselt Beispiele: Sie suchen im File SYS:Texte/S den Namen Goethe: --> Change SYS:Texte/S Goethe NOCHANGE In hexadezimaler Eingabe sieht das so aus: --> Change SYS:Texte/S 476F6574_6865 NOCHANGE HEX Wollen Sie den Namen in Schiller ändern so müssen Sie noch ein Ziel (z.B. SYS:Texte/S2) angeben und NOCHANGE entfernen: --> Change SYS:Texte/S Goethe SYS:Texte/S2 Schiller Mit NOSIZE können Sie auch nach goethe oder GOETHE oder GoEtHe suchen lassen und FOUND zeigt Ihnen einen Fund an: --> Change SYS:Texte/S Goethe SYS:Texte/S2 Schiller NOSIZE FOUND Geben Sie vorher den CD-Befehl auf den Pfad ein, so verkürzt sich der Befehl: --> CD SYS:Texte Change S Goethe S2 Schiller NOSIZE FOUND Wollen Sie zum Bsp. goethe und GoEtHe und GOETHE durch die richtige Form Goethe ersetzen. Kein Problem: --> Change S goethe S2 Goethe NOSIZE Soll Goethe nur an einer Stelle ersetzt werden, so nutzen Sie POSITION: --> Change S goethe S2 Goethe POSITION D3 NOSIZE Alternativ dazu ist: --> Change S goethe S2 Goethe POS D3 NOSIZE Besitzen die Zeichenketten ein Leerzeichen so nutzen Sie "": --> Change S "Goethes Geburtshaus" S2 "Schillers Geburtshaus" Sie können den SSTRING auch aus dem Text löschen: --> Change S "Goethe" S2 "" oder --> Change S "Goethe" S2 Falls sie alle ähnlichen Wörter ersetzen wollen, wie zum Beispiel Disc und Disk gegen Diskette, so nutzen Sie einen Pattern: --> Change S Dis\? S2 Diskette oder --> Change S 446973? S2 4469736B_65747465 Wollen Sie nach einem \ suchen, so müssen Sie zwei eingeben (also immer doppelt so viele - bei 20 zu suchenden also 40) --> Change S \\ S2 / --> das wechselt \ zu / --> Change S \\\\ S2 // --> das wechselt \\ zu // --> Change S \\? S2 /? --> das wechselt \? zu /? aber VORSICHT ! --> Change S \? S2 /? --> das wechselt jedes Zeichen zu /? Setzen Sie für SSTRING "" ein, so erscheint eine Fehlermeldung. Mögliche zukünftige Erweiterungen: Pattern * für beliebige Zeichen oder Standard Amiga Pattern, wie #, ~, (). Lokalisierung und damit auch deutsche Texte (Fehlermeldungen sind ja schon vom Betriebssystem lokalisiert!) Kommentare, Wünsche, Geld (ist zwar Public Domain, nehme es aber trotzdem), Grüße, Bugreports und ähnliches an snail-mail: Dirk Stöcker Geschwister-Scholl-Straße 10 01877 Bischofswerda GERMANY e-mail: stoecker@rcs.urz.tu-dresden.de Viel Glück mit dem neuen Programm!