home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 1: Amiga / FrozenFish-Apr94.iso / bbs / alib / d9xx / d936 / tked.lha / TKEd / Help / Help.tked < prev    next >
Text File  |  1993-12-20  |  5KB  |  164 lines

  1. /** Arexx Programm um das Wort unter dem Cursor
  2.  ** in einer Hilfs-Datei zu suchen, und den
  3.  ** entsprechenden Hilfstext auszugeben.
  4.  **
  5.  ** Installation  : In TKEd-AREXX-Menus mit
  6.  **                 async noreq Help.tked TKEd:Help/ARexx.hlp
  7.  ** 
  8.  ** Programm von : Christoph Kirsch, 1992
  9.  ** 
  10.  **  Hilfs-Datei : In der Variable HDatei definiert.
  11.  ** Trennzeichen : Jeder Hilfstext wird durch die in der Variable
  12.  **                TZeichen definierte Zeichenfolge abgeschlossen.
  13.  **
  14.  ** Ergänzung von: Tom Kroener
  15.  **                Cursor braucht nicht mehr auf dem ersten Buchstaben
  16.  **                des Wortes zu stehen, sondern kann beliebig im Wort
  17.  **                positioniert sein; außerdem wurden ein paar potentielle
  18.  **                Fehlerquellen (keine Leerzeichen, sondern ~+-* usw. 
  19.  **                zwischen den Worten) beseitigt
  20.  **-----------------------------------------------------------------------
  21.  ** AREXX-program to search for the current word in a special help-
  22.  ** file and display a helptext (if the word was found; see the
  23.  ** name under the *** in the helpfiles in the directory 'TKEd:Help'
  24.  ** for examples)
  25.  ** Installation  : Into the TKEd-AREXX-menus:
  26.  **                 async noreq Help.tked TKEd:Help/ARexx.hlp
  27.  ** 
  28.  **  Help-file   : The name is defined in the variable HDatei
  29.  **                Each help-text is ended by the TZeichen variable
  30.  **/
  31.  
  32. options results
  33. address 'TKEd.1'
  34.  
  35. HDatei = arg(1)                     /* Hilfsdatei wird übergeben */
  36.  
  37. MakeTitle "Ich suche..."
  38.  
  39. TZeichen = "***"                    /* Trennzeichen */
  40. OderCode = "*"
  41. Ende = 0
  42.  
  43. DO WHILE Ende = 0
  44.   GetColumnNr
  45.   IF result = 1 THEN Ende = 1
  46.   Cursor "LEFT"
  47.   GetChar
  48.   IF (result=" ") | (result='(') | (result=')') | (result='=') | (result='/') | (result='*') | (result='-') | (result='+') | (result='|') | (result='~') | (result='#') | (result=';') | (result='"') | (result="'")
  49.     THEN DO
  50.       Ende = 1
  51.       NextWord
  52.   END;
  53. END;
  54.  
  55. GetChar
  56. Zeichen = result
  57.  
  58. GetChar                             /* Zeichen unter Cursor */
  59. Zeichen = result
  60. Ende = 0
  61. Wort = Zeichen                      /* Wort unter Cursor */
  62. GetLineLen                          /* Zeilenlänge feststellen */
  63. MaxSpalte = result+1
  64.  
  65. DO WHILE Ende = 0                   /* Nächstes Leerzeichen */
  66.   Cursor "RIGHT"                    /* oder Zeilenende suchen */
  67.   GetChar                           /* und solange Buchstaben */
  68.   Zeichen = result                  /* anhängen */
  69.   GetColumnNr
  70.   Spalte = result
  71.   IF Spalte = MaxSpalte THEN Ende = 1
  72.   IF (Zeichen=" ") | (Zeichen='(') | (Zeichen=')') | (Zeichen='=') | (Zeichen='/') | (Zeichen='*') | (Zeichen='-') | (Zeichen='+') | (Zeichen='|') | (Zeichen='~') | (Zeichen='#') | (Zeichen=';') | (Zeichen="'") | (Zeichen='"') THEN Ende = 1
  73.   IF Ende = 0 THEN Wort = Wort || Zeichen
  74. END;
  75. Wort = upper(Wort)
  76. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei öffnen */
  77.   THEN DO
  78.     Request1 "Kann Hilfsdatei nicht öffnen!"
  79.     EXIT 5
  80.   END
  81.  
  82. DO WHILE ~EOF('datei')             /* Trennzeichen suchen */
  83.   Text = ReadLn('datei')
  84.   IF Text = TZeichen               /* Wenn gefunden, dann ist nächste */
  85.     THEN DO                        /* Zeile ein Suchbegriff */
  86.       Abb = 0
  87.       Ja = 0
  88.       DO WHILE (Abb = 0)
  89.         Text = ReadLn('datei')     /* Suchbegriff vergleichen */
  90.         IF Wort = upper(Text)
  91.           THEN DO
  92.             Ja = 1
  93.             Abb = 1
  94.           END
  95.         ELSE DO
  96.           Text = ReadLn('datei')
  97.           IF ~(Text = OderCode) THEN Abb = 1
  98.         END
  99.       END
  100.       IF Ja = 1
  101.       THEN DO                      /* wenn gleich, dann */
  102.         WBtoFront
  103.         call open('hcon','CON:0/11/640/189/Hilfe')
  104.         DO WHILE ~EOF('datei')
  105.           Text = ReadLn('datei')
  106.           DO WHILE (Text = OderCode)
  107.             Text = ReadLn('datei')
  108.             Text = ReadLn('datei')
  109.           END
  110.           IF ~(Text = TZeichen) THEN call WriteLn('hcon',Text)
  111.           ELSE BREAK
  112.         END
  113.         call WriteLn('hcon','RETURN drücken.')
  114.         call ReadLn 'hcon'
  115.         call Close('hcon')
  116.         call Close('datei')
  117.         TKEdToFront
  118.         EXIT 0
  119.       END
  120.     END
  121. END
  122.  
  123. call close('datei')                 /* keinen Text gefunden */
  124.  
  125. Request2 "Keinen Hilfstext gefunden! Stichworte zeigen?"
  126. index = result
  127.  
  128. if index=10 then exit 0             /* kein Index -> Ende */
  129.  
  130. IF ~open('datei',HDatei,'Read')     /* Hilfsdatei erneut öffnen */
  131.   THEN DO
  132.     Request1 "Kann Hilfsdatei nicht öffnen!"
  133.     EXIT 5
  134.   END
  135.  
  136. WBtoFront
  137. call open('hcon','CON:0/11/640/189/Mögliche Stichworte')
  138.  
  139. voll = 0                            /* Alle Stichworte anzeigen */
  140. do while ~eof('datei')
  141.   text = readln('datei')
  142.   if (text = TZeichen) | (text = OderCode)
  143.   then do
  144.     text = readln('datei')
  145.     call writeln('hcon',text)
  146.     voll = voll + 1
  147.     if voll = 19
  148.     then do
  149.       call writeln('hcon','')
  150.       call writeln('hcon','RETURN drücken für mehr.')
  151.       call readln 'hcon'
  152.       voll = 0
  153.     end
  154.   end
  155. end
  156. call writeln('hcon','ENDE - Taste drücken.')
  157. call readln 'hcon'
  158.  
  159. TKEdtoFront
  160. call close('datei')
  161.  
  162. EXIT 0
  163.  
  164.