home *** CD-ROM | disk | FTP | other *** search
- /** Arexx Programm um das Wort unter dem Cursor
- ** in einer Hilfs-Datei zu suchen, und den
- ** entsprechenden Hilfstext auszugeben.
- **
- ** Installation : In TKEd-AREXX-Menus mit
- ** async noreq Help.tked TKEd:Help/ARexx.hlp
- **
- ** Programm von : Christoph Kirsch, 1992
- **
- ** Hilfs-Datei : In der Variable HDatei definiert.
- ** Trennzeichen : Jeder Hilfstext wird durch die in der Variable
- ** TZeichen definierte Zeichenfolge abgeschlossen.
- **
- ** Ergänzung von: Tom Kroener
- ** Cursor braucht nicht mehr auf dem ersten Buchstaben
- ** des Wortes zu stehen, sondern kann beliebig im Wort
- ** positioniert sein; außerdem wurden ein paar potentielle
- ** Fehlerquellen (keine Leerzeichen, sondern ~+-* usw.
- ** zwischen den Worten) beseitigt
- **-----------------------------------------------------------------------
- ** AREXX-program to search for the current word in a special help-
- ** file and display a helptext (if the word was found; see the
- ** name under the *** in the helpfiles in the directory 'TKEd:Help'
- ** for examples)
- ** Installation : Into the TKEd-AREXX-menus:
- ** async noreq Help.tked TKEd:Help/ARexx.hlp
- **
- ** Help-file : The name is defined in the variable HDatei
- ** Each help-text is ended by the TZeichen variable
- **/
-
- options results
- address 'TKEd.1'
-
- HDatei = arg(1) /* Hilfsdatei wird übergeben */
-
- MakeTitle "Ich suche..."
-
- TZeichen = "***" /* Trennzeichen */
- OderCode = "*"
- Ende = 0
-
- DO WHILE Ende = 0
- GetColumnNr
- IF result = 1 THEN Ende = 1
- Cursor "LEFT"
- GetChar
- IF (result=" ") | (result='(') | (result=')') | (result='=') | (result='/') | (result='*') | (result='-') | (result='+') | (result='|') | (result='~') | (result='#') | (result=';') | (result='"') | (result="'")
- THEN DO
- Ende = 1
- NextWord
- END;
- END;
-
- GetChar
- Zeichen = result
-
- GetChar /* Zeichen unter Cursor */
- Zeichen = result
- Ende = 0
- Wort = Zeichen /* Wort unter Cursor */
- GetLineLen /* Zeilenlänge feststellen */
- MaxSpalte = result+1
-
- DO WHILE Ende = 0 /* Nächstes Leerzeichen */
- Cursor "RIGHT" /* oder Zeilenende suchen */
- GetChar /* und solange Buchstaben */
- Zeichen = result /* anhängen */
- GetColumnNr
- Spalte = result
- IF Spalte = MaxSpalte THEN Ende = 1
- IF (Zeichen=" ") | (Zeichen='(') | (Zeichen=')') | (Zeichen='=') | (Zeichen='/') | (Zeichen='*') | (Zeichen='-') | (Zeichen='+') | (Zeichen='|') | (Zeichen='~') | (Zeichen='#') | (Zeichen=';') | (Zeichen="'") | (Zeichen='"') THEN Ende = 1
- IF Ende = 0 THEN Wort = Wort || Zeichen
- END;
- Wort = upper(Wort)
- IF ~open('datei',HDatei,'Read') /* Hilfsdatei öffnen */
- THEN DO
- Request1 "Kann Hilfsdatei nicht öffnen!"
- EXIT 5
- END
-
- DO WHILE ~EOF('datei') /* Trennzeichen suchen */
- Text = ReadLn('datei')
- IF Text = TZeichen /* Wenn gefunden, dann ist nächste */
- THEN DO /* Zeile ein Suchbegriff */
- Abb = 0
- Ja = 0
- DO WHILE (Abb = 0)
- Text = ReadLn('datei') /* Suchbegriff vergleichen */
- IF Wort = upper(Text)
- THEN DO
- Ja = 1
- Abb = 1
- END
- ELSE DO
- Text = ReadLn('datei')
- IF ~(Text = OderCode) THEN Abb = 1
- END
- END
- IF Ja = 1
- THEN DO /* wenn gleich, dann */
- WBtoFront
- call open('hcon','CON:0/11/640/189/Hilfe')
- DO WHILE ~EOF('datei')
- Text = ReadLn('datei')
- DO WHILE (Text = OderCode)
- Text = ReadLn('datei')
- Text = ReadLn('datei')
- END
- IF ~(Text = TZeichen) THEN call WriteLn('hcon',Text)
- ELSE BREAK
- END
- call WriteLn('hcon','RETURN drücken.')
- call ReadLn 'hcon'
- call Close('hcon')
- call Close('datei')
- TKEdToFront
- EXIT 0
- END
- END
- END
-
- call close('datei') /* keinen Text gefunden */
-
- Request2 "Keinen Hilfstext gefunden! Stichworte zeigen?"
- index = result
-
- if index=10 then exit 0 /* kein Index -> Ende */
-
- IF ~open('datei',HDatei,'Read') /* Hilfsdatei erneut öffnen */
- THEN DO
- Request1 "Kann Hilfsdatei nicht öffnen!"
- EXIT 5
- END
-
- WBtoFront
- call open('hcon','CON:0/11/640/189/Mögliche Stichworte')
-
- voll = 0 /* Alle Stichworte anzeigen */
- do while ~eof('datei')
- text = readln('datei')
- if (text = TZeichen) | (text = OderCode)
- then do
- text = readln('datei')
- call writeln('hcon',text)
- voll = voll + 1
- if voll = 19
- then do
- call writeln('hcon','')
- call writeln('hcon','RETURN drücken für mehr.')
- call readln 'hcon'
- voll = 0
- end
- end
- end
- call writeln('hcon','ENDE - Taste drücken.')
- call readln 'hcon'
-
- TKEdtoFront
- call close('datei')
-
- EXIT 0
-
-