//*************************************************************************** // // SEARCH.VDM (C) C.Z. 13.4.94 // fr VEDIT 4.01 8.7.94 // fr VEDIT 4.02 4.8.94 // fr VEDIT 4.20 16.10.95 // // ™ffnet ein einzeiliges Eingabefenster, in dem ein Suchstring eingegeben // werden kann. Nach jedem Zeichen wird sofort eine šbereinstimmung im // Text gesucht. // // Funktionen: Backspace : letztes Zeichen des Suchstrings l”schen // ESC : Abbruch; im Text an alter Position // RETURN : Ende; im Text an gefundener Position // //*************************************************************************** #98=Buf_Num // akt. Buffer merken #99=Cur_Pos // incl. Cursor Buf_Switch(33) // temp. Arbeitsbuffer (f. Suchstring) Buf_Empty(OK) // leeren #96=WIN_FREE // n„chstes freies Window Win_Split(#96,1,BOTTOM+ATTACH) // kreieren und Buf. zuweisen (1 Zeile) repeat(ALL){ // Hauptschleife Buf_Switch(33) // Eingabebuffer #9=Get_Key("") // Taste ... #2=File_Size // Gr”áe des Suchstring-Buffers if(#9==21317){ // ESC ? Buf_Switch(#98) // dann im Textbuffer Goto_Pos(#99) // auf Ausgangsposition Break // und Schleife beenden } if (#9==21314){ // Backspace ? if(#2>0){ // schon/noch Zeichen im Suchbuffer ? Del_Char(-1) // dort letztes Zeichen l”schen Update // und anzeigen Buf_Switch(#98) // dann im Textbuffer Char(-1) // 1 Zeichen zurck Update // und anzeigen } Continue // n„chster Schleifendurchlauf } if(#9==21586){ // RETURN ? Break // dann fertig -> Schleifenende } Ins_Char(#9) // jedes andere Zeichen in den Suchbuffer Update // und anzeigen #2=File_Size // Gr”áe des Suchbuffers Reg_Copy_Block(10,0,#2) // Suchstring in Scratchregister kopieren Buf_Switch(#98) // im Textbuffer Char(-#2+1) // an den evtl. Anfang des Suchstrings Search("|@(10)",NOERR+ADVANCE) // und Suchstring suchen if(ERROR_MATCH){ // wenn nicht gefunden Char(#2-1) // wieder vorw„rts Sound(400,100) // Beep Buf_Switch(33) // im Suchbuffer Del_Char(-1) // letztes Zeichen l”schen Update // und anzeigen Buf_Switch(#98) // Textbuffer } Update // anzeigen } Win_Delete(#96) // Eingabefenster l”schen Buf_Switch(#98) // urspr. Textbuffer und Fenster