10 '******* Finden & Ersetzen ******
20 '*** (C) 1989 Matthias Uphoff *** 30 ' 40 '***** Einige Voreinstellungen 50 MODE 2:INK 0,13:INK 1,0:BORDER 3 60 DEFINT a-z 70 maxz=1000 80 DIM z$(maxz) 90 sep$=" '#()*+,-/:;<=>à[ç]^"+CHR$(34) 100 WINDOW#1,3,78,14,24 110 WINDOW#2,1,80,13,25 120 WINDOW#3,61,79,2,11 130 WIDTH 255 140 CALL &BB48:'Break sperren 150 KEY DEF 66,0,126 160 OPENOUT"X":MEMORY HIMEM-1:CLOSEOUT 170 uflag=0:wflag=0:nflag=0:dflag=0 180 ' 190 '***** Anzeige Hauptmenue 200 links=1:rechts=21 210 oben=1:unten=12 220 GOSUB 1790:'Rahmen zeichnen 230 LOCATE 3,3:PRINT"Finden & Ersetzen" 240 LOCATE 3,4:PRINT"(C) 1989 MU / DMV" 250 LOCATE 4,9:PRINT"Aktuelle Datei:" 260 a$="":GOSUB 2280 270 links=22:rechts=59 280 GOSUB 1790:'Rahmen zeichnen 290 LOCATE 35,1:PRINT" Hauptmenue " 300 DATA <L> Datei laden,<S> Datei speichern,<A> Datei anzeigen,<Z> Programmende,<F> Finden,<E> Ersetzen,<U> Unabh. von Gross/Kleinschr.,<W> Nur ganze Woerter,<N> Ersetzen ohne Nachfrage,<D> Druckerausgabe 310 FOR i=2 TO 11 320 READ a$:LOCATE 24,i:PRINT a$ 330 NEXT 340 GOSUB 1920:'Schalter anzeigen 350 links=60:rechts=80 360 GOSUB 1790:'Rahmen zeichnen 370 ' 380 '***** Hauptmenue/Abfrage 390 GOSUB 2220:'Auf Taste warten 400 ON INSTR("LSAZFEUWND",a$) GOSUB 440,640,830,980,1070,1300,1660,1670,1680,1690 410 GOTO 390 420 ' 430 '***** Datei laden 440 GOSUB 1720:'Rahmen 1 450 LOCATE 38,17:PRINT" Laden "; 460 GOSUB 2020:'Hinweise 1 470 LOCATE 24,19:INPUT "Dateiname: ",a$ 480 CLS#3 490 IF a$="" THEN 600 500 ERASE z$:DIM z$(maxz) 510 WINDOW SWAP 0,3 520 nz=0:OPENIN a$ 530 WHILE NOT EOF 540 nz=nz+1 550 LINE INPUT#9,z$(nz) 560 WEND 570 CLOSEIN 580 CLS:WINDOW SWAP 0,3 590 GOSUB 2280:'Dateinamen anz. 600 CLS#2 610 RETURN 620 ' 630 '***** Datei speichern 640 GOSUB 1720:'Rahmen 1 650 LOCATE 36,17:PRINT" Speichern " 660 IF name$="" THEN GOSUB 2140:GOTO 790 670 GOSUB 2020:'Hinweise 1 680 LOCATE 24,19:INPUT "Dateiname: ",a$ 690 CLS#3 700 IF a$="" THEN 790 710 WINDOW SWAP 0,3 720 OPENOUT a$ 730 FOR i=1 TO nz 740 PRINT#9,z$(i) 750 NEXT 760 CLOSEOUT 770 CLS:WINDOW SWAP 0,3 780 GOSUB 2280:'Dateinamen anz. 790 CLS#2 800 RETURN 810 ' 820 '***** Datei Anzeigen 830 GOSUB 1760:'Rahmen 2 840 LOCATE 37,13:PRINT" Anzeigen " 850 IF name$="" THEN GOSUB 2140:GOTO 940 860 IF dflag THEN GOSUB 2070 ELSE GOSUB 2060 870 CLS#1 880 FOR i=1 TO nz 890 PRINT#1,z$(i) 900 IF dflag THEN PRINT#8,z$(i):GOSUB 2200 ELSE GOSUB 2220 910 IF escflag THEN 940 920 NEXT i 930 GOSUB 2110:'Dateiende 940 CLS#2:CLS#3 950 RETURN 960 ' 970 '***** Programmende 980 GOSUB 1720:'Rahmen 1 990 LOCATE 34,17:PRINT" Programmende " 1000 LOCATE 27,19 1010 PRINT"Das Programm beenden (J/N) ?" 1020 GOSUB 2220:'Auf Taste warten 1030 IF (a$="N") OR escflag THEN CLS#2:CLS#3:RETURN 1040 IF a$<>"J" THEN 1020 1050 MODE 2:CALL &BB00:END 1060 ' 1070 '***** Finden 1080 GOSUB 1760:'Rahmen 2 1090 LOCATE 38,13:PRINT" Finden " 1100 IF name$="" THEN GOSUB 2140:GOTO 1260 1110 GOSUB 2020:'Hinweise 1 1120 CLS#1:PRINT#1,"***** Suchbegriff: "; 1130 LINE INPUT#1,such$ 1140 CLS#3 1150 IF such$="" THEN 1260 1160 IF uflag THEN such$=UPPER$(such$) 1170 IF dflag THEN GOSUB 2070 ELSE GOSUB 2060 1180 FOR i=1 TO nz 1190 p=1:GOSUB 2350:'Suchen 1200 IF p=0 THEN 1240 1210 PRINT#1,z$(i) 1220 IF dflag THEN PRINT#8,z$(i):GOSUB 2200 ELSE GOSUB 2220 1230 IF escflag THEN 1260 1240 NEXT 1250 GOSUB 2110:'Dateiende 1260 CLS#2:CLS#3 1270 RETURN 1280 ' 1290 '***** Ersetzen 1300 GOSUB 1760:'Rahmen 2 1310 LOCATE 37,13:PRINT" Ersetzen " 1320 IF name$="" THEN GOSUB 2140:GOTO 1620 1330 GOSUB 2020:'Hinweise 1 1340 CLS#1:PRINT#1,"***** Suchbegriff: "; 1350 LINE INPUT#1,such$ 1360 CLS#3 1370 IF such$="" THEN 1620 1380 IF uflag THEN such$=UPPER$(such$) 1390 PRINT#1,"***** Ersetzen durch: "; 1400 LINE INPUT#1,ers$ 1410 GOSUB 2070:'Hinweise 2 1420 FOR i=1 TO nz 1430 f=0 1440 p=1:GOSUB 2350:'Suchen 1450 IF p=0 THEN 1590 1460 IF nflag THEN 1530 1470 PRINT#1,LEFT$(z$(i),p-1)+CHR$(24)+MID$(z$(i),p,LEN(such$))+CHR$(24)+MID$(z$(i),p+LEN(such$)) 1480 PRINT#1,"***** Ersetzen durch ";CHR$(24);ers$;CHR$(24);" (J/N)?" 1490 GOSUB 2220:'Auf Taste warten 1500 IF escflag THEN 1620 1510 IF a$="N" THEN p=p+1:GOTO 1550 1520 IF a$<>"J" THEN 1490 1530 z$(i)=LEFT$(z$(i),p-1)+ers$+MID$(z$(i),p+LEN(such$)) 1540 p=p+LEN(ers$):f=-1 1550 GOSUB 2350:'Suchen 1560 IF p>0 THEN 1460 1570 IF f THEN PRINT#1,z$(i) 1580 IF dflag AND f THEN PRINT#8,z$(i) 1590 GOSUB 2200:IF escflag THEN 1620 1600 NEXT i 1610 GOSUB 2110:'Dateiende 1620 CLS#2:CLS#3 1630 RETURN 1640 ' 1650 '***** Flags umschalten 1660 uflag=NOT uflag:GOSUB 1920:RETURN 1670 wflag=NOT wflag:GOSUB 1920:RETURN 1680 nflag=NOT nflag:GOSUB 1920:RETURN 1690 dflag=NOT dflag:GOSUB 1920:RETURN 1700 ' 1710 '***** Rahmen 1 1720 links=22:rechts=59 1730 oben=17:unten=21 1740 GOTO 1790 1750 '***** Rahmen 2 1760 links=1:rechts=80 1770 oben=13:unten=25 1780 '***** Rahmen zeichnen 1790 LOCATE links,oben:PRINT CHR$(150); 1800 PRINT STRING$(rechts-links-1,154); 1810 PRINT CHR$(156); 1820 FOR i=oben+1 TO unten-1 1830 LOCATE links,i:PRINT CHR$(149); 1840 LOCATE rechts,i:PRINT CHR$(149); 1850 NEXT 1860 LOCATE links,unten:PRINT CHR$(147); 1870 PRINT STRING$(rechts-links-1,154); 1880 PRINT CHR$(153); 1890 RETURN 1900 ' 1910 '***** Flagstatus anzeigen 1920 i=8 1930 f=uflag:GOSUB 1970 1940 f=wflag:GOSUB 1970 1950 f=nflag:GOSUB 1970 1960 f=dflag 1970 LOCATE 57,i:i=i+1 1980 IF f THEN PRINT "+" ELSE PRINT "-" 1990 RETURN 2000 ' 2010 '***** Bedienungshinw. 1 2020 LOCATE 64,6:PRINT"Abbruch durch" 2030 LOCATE 64,7:PRINT"leere Eingabe" 2040 RETURN 2050 '***** Bedienungshinw. 2 2060 LOCATE 63,6:PRINT"Weiter mit SPACE" 2070 LOCATE 63,7:PRINT"Abbruch mit ESC" 2080 RETURN 2090 ' 2100 '***** Dateiende 2110 PRINT#1,CHR$(7);"***** Dateiende erreicht: [ESC] druecken" 2120 GOTO 2160 2130 '***** Fehlermeldung 2140 LOCATE 24,19 2150 PRINT CHR$(7);"Keine Datei geladen: [ESC] druecken" 2160 GOSUB 2220: IF NOT escflag THEN 2160 2170 RETURN 2180 ' 2190 '***** Test auf ESC 2200 a$=INKEY$:GOTO 2240 2210 '***** Auf Taste warten 2220 WHILE INKEY$<>"":WEND 2230 a$=UPPER$(INKEY$):IF a$="" THEN 2230 2240 escflag = (a$=CHR$(126)) 2250 RETURN 2260 ' 2270 '***** Dateiname setzen 2280 name$=UPPER$(a$) 2290 LOCATE 4,10:PRINT STRING$(15,32); 2300 LOCATE 6,10 2310 IF name$="" THEN PRINT "-- Keine --" ELSE PRINT name$ 2320 RETURN 2330 ' 2340 '***** Suchen 2350 IF uflag THEN a$=UPPER$(z$(i)) ELSE a$=z$(i) 2360 p=INSTR(p,a$,such$) 2370 IF (NOT wflag) OR p=0 THEN RETURN 2380 IF p=1 THEN 2400 2390 IF INSTR(sep$,MID$(a$,p-1,1))=0 THEN 2420 2400 IF p+LEN(such$)-1=LEN(a$) THEN RETURN 2410 IF INSTR(sep$,MID$(a$,p+LEN(such$),1)) > 0 THEN RETURN 2420 p=p+1:GOTO 2360 |