User Tools

Site Tools


This is an old revision of the document!

A PCRE internal error occured. This might be caused by a faulty plugin

=====Listing the line an error occurs in ON ERROR===== //by Jon Ripley, May 2011//\\ \\ The [[/Detokeniser|detokeniser function]] documented on this wiki allows us to write an **ON ERROR** statement that lists the source code of the errant line when an error occurs. The FNErrorLine function returns the source code of the line the last error occurred in.\\ \\ The following ON ERROR handler prints the error followed by the line of code it occurred in:\\ ON ERROR ON ERROR OFF:PRINT REPORT$": "FNErrorLine:END The full code for FNErrorLine including the [[/Detokeniser|detokeniser]] is as follows:\\ DEF FNErrorLine LOCAL I%,P%,line$ : I% = !408 : P% = PAGE WHILE ?P% AND P% + ?P% < I% P% += ?P% : ENDWHILE FOR I%=0 TO ?P%-1:line$ += CHR$P%?I% : NEXT I% =FNdetokenise(line$) DEF FNdetokenise(S$) IF S$ = "" OR S$ = CHR$0+CHR$255+CHR$255 THEN ="" PRIVATE Keywd$() IF !^Keywd$()=0 THEN DIM Keywd$(160) Keywd$() = "AND","DIV","EOR","MOD","OR","ERROR","LINE","OFF",\ \"STEP","SPC","TAB(","ELSE","THEN","","OPENIN","PTR",\ \"PAGE","TIME","LOMEM","HIMEM","ABS","ACS","ADVAL","ASC",\ \"ASN","ATN","BGET","COS","COUNT","DEG","ERL","ERR",\ \"EVAL","EXP","EXT","FALSE","FN","GET","INKEY","INSTR(",\ \"INT","LEN","LN","LOG","NOT","OPENUP","OPENOUT","PI",\ \"POINT(","POS","RAD","RND","SGN","SIN","SQR","TAN",\ \"TO","TRUE","USR","VAL","VPOS","CHR$","GET$","INKEY$",\ \"LEFT$(","MID$(","RIGHT$(","STR$","STRING$(","EOF","SUM","WHILE",\ \"CASE","WHEN","OF","ENDCASE","OTHERWISE","ENDIF","ENDWHILE","PTR",\ \"PAGE","TIME","LOMEM","HIMEM","SOUND","BPUT","CALL","CHAIN",\ \"CLEAR","CLOSE","CLG","CLS","DATA","DEF","DIM","DRAW",\ \"END","ENDPROC","ENVELOPE","FOR","GOSUB","GOTO","GCOL","IF",\ \"INPUT","LET","LOCAL","MODE","MOVE","NEXT","ON","VDU",\ \"PLOT","PRINT","PROC","READ","REM","REPEAT","REPORT","RESTORE",\ \"RETURN","RUN","STOP","COLOUR","TRACE","UNTIL","WIDTH","OSCLI",\ \"","CIRCLE","ELLIPSE","FILL","MOUSE","ORIGIN","QUIT","RECTANGLE",\ \"SWAP","SYS","TINT","WAIT","INSTALL","","PRIVATE","BY","EXIT" ENDIF LOCAL flag%, O$, i%, ch% IF ASCS$ = LENS$ AND ASC RIGHT$(S$,1) = 13 THEN ch% = ASC MID$(S$,2)+256*ASC MID$(S$,3) IF ch% O$=STR$ch%+" " S$ = MID$(S$, 4, LENS$-4) IF S$="" THEN =LEFT$(O$, LENO$-1) ENDIF FOR i%=1 TO LENS$ IF ASC MID$(S$,i%)=34 flag%EOR=1 IF flag% AND 1 THEN O$ += MID$(S$, i%, 1) ELSE ch% = ASCMID$(S$, i%) CASE TRUE OF WHEN ch% >= 17 AND ch% < 128:O$ += CHR$ch% WHEN ch% = &8D ch% = ASC MID$(S$,i%+1) lo% = ((ch% << 2) AND &C0) EOR ASC MID$(S$, i%+2) hi% = ((ch% << 4) AND &C0) EOR ASC MID$(S$, i%+3) O$+ = STR$(lo% + 256*hi%) i% += 3 OTHERWISE O$ += Keywd$(ch% EOR 128) ENDCASE ENDIF NEXT i% =O$

This website uses cookies for visitor traffic analysis. By using the website, you agree with storing the cookies on your computer.More information
listing_20the_20line_20an_20error_20occurs_20in_20on_20error.1522502367.txt.gz · Last modified: 2018/03/31 14:19 by