1. errors in ex.err
- Posted by "Kat" <gertie at visionsix.com> Oct 09, 2004
- 451 views
I've been getting less than useful error msgs lately, from an app that has run for years fairly flawlessly (except for the strange errors i reported and got laughed at here, and so i restart the app when i detect them), but this one i don't see how i can detect in advance: <from ex.err> ================ u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 slice lower index is less than 1 (-4) u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 if length(href) and not equal(href,"") and href = {47'/'} =========================== </from> The entire if-then code is:
if length(href) and not equal(href,"") and (not match("/REUTERS",upper(href))) and (not match("/AP",upper(href))) and ( (not match(".HTML",upper(href[length(href)-5..length(href)]))) and (not match(".HTM", upper(href[length(href)-4..length(href)]))) ) then href = "" end if
As you can see, i FIRST test to see if there is anything at all in href, and that is where Eu is reporting i made a mistake. Naturally, i am now testing to see if (length(href) > 5) . Kat
2. Re: errors in ex.err
- Posted by Terry Constant <EUforum at terryconstant.com> Oct 09, 2004
- 434 views
Kat wrote: > > I've been getting less than useful error msgs lately, from an app that has run > > for years fairly flawlessly (except for the strange errors i reported and got > laughed at here, and so i restart the app when i detect them), but this one i > don't see how i can detect in advance: > > <from ex.err> > ================ > u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 > slice lower index is less than 1 (-4) > > u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 if length(href) > and not equal(href,"") and > > href = {47'/'} > > =========================== > </from> > > The entire if-then code is: > }}} <eucode> > if length(href) and not equal(href,"") and > (not match("/REUTERS",upper(href))) and > (not match("/AP",upper(href))) and > ( > (not match(".HTML",upper(href[length(href)-5..length(href)]))) and > (not match(".HTM", upper(href[length(href)-4..length(href)]))) > ) > then href = "" > end if > </eucode> {{{ > > As you can see, i FIRST test to see if there is anything at all in href, and > that > is where Eu is reporting i made a mistake. Naturally, i am now testing to see > if (length(href) > 5) . Consider mastering regular expressions. If you are going to work with text (especially in the Internet world), they are more than worth the effort. Learn PERL compatible regular expressions, such as, in the PCRE library which Bochert has provided as a user contribution, in Javascript, in many other apps, and of course in PERL. I understand that href, in your code, will always be a sequence/string. One if statement using a regular expression match and a pattern like the following one will work better than your large compound if statement, and you don't have to worry about the length of href. Example regular expression pattern to use: "(/REUTERS)|(/AP)|(.HTML$)|(.HTM$)" I would set the case sensitivity option/switch to do being case insensitive. Then (using Bochert's library) use RGXscan() (or RGXfind()) with the pattern and RGXcnt in a single if statement. I know this is not a quick fix/help. But, in the long term, you would have a much more useful and powerful tool at your disposal. One that will save your hours of programming time and many headaches. If you want some help getting started with regular expressions, email me individually. Terry Constant
3. Re: errors in ex.err
- Posted by "Kat" <gertie at visionsix.com> Oct 09, 2004
- 446 views
On 9 Oct 2004, at 12:06, Terry Constant wrote: > > > posted by: Terry Constant <EUforum at terryconstant.com> <snip> > Consider mastering regular expressions. If you are going to work > with text (especially in the Internet world), they are more than > worth the effort. Learn PERL compatible regular expressions, > such as, in the PCRE library which Bochert has provided as a > user contribution, in Javascript, in many other apps, and of > course in PERL. But using regexp will always be slower too. I do use regexp in other languages, such as: \b(f|ph)[ ]*[ucs][ ]*[cu][ ]*[k<]\b and \bm+(o+|u+|0+)t+h+(a+|e+|3+)(r+|)[\s]*(p+l+|p+h+|p+|f+|h+|)(a+|u+|o+|0+)(c+k +|w+k+|r+k+|k+|c+)[\w]* Like i said, the code i gave to explain the ex.err has been running for years, and little oddities are creeping up, and it's a tangle of if-then since we have no clean goto, and i am rewriting it. Until i am done, the old code is called. even if we had a goto, it wouldn't help the ex.err reporting that error occurred on that line, as that line did no subscripting. Kat
4. Re: errors in ex.err
- Posted by Terry Constant <EUforum at terryconstant.com> Oct 09, 2004
- 448 views
- Last edited Oct 10, 2004
Kat wrote: >it wouldn't help the ex.err reporting that error occurred >on that line, as that line did no subscripting. Probably, the error points to the if statement and not to the line. The if statement starts on that line, even though the subscripting occurs on another text line in a single if statement. That is, doesn't the error info just point to the EU statement where an error occurs and not to the specific text line within a statement that traverses multiple lines? Terry Constant
5. Re: errors in ex.err
- Posted by Robert Craig <rds at RapidEuphoria.com> Oct 09, 2004
- 432 views
- Last edited Oct 10, 2004
Terry Constant wrote: > Probably, the error points to the if statement and not to the line. > The if statement starts on that line, even though the subscripting > occurs on another text line in a single if statement. That is, doesn't the > error info just point to the EU statement where an error occurs and not > to the specific text line within a statement that traverses multiple > lines? That's correct. I don't keep enough information around at run-time to be able to point to a specific line within a multi-line statement. On the other hand, with compile-time (syntax) errors, I can point at the specific line and the approximate position within the line. Regards, Rob Craig Rapid Deployment Software http://www.RapidEuphoria.com
6. Re: errors in ex.err
- Posted by Pete Lomax <petelomax at blueyonder.co.uk> Oct 09, 2004
- 431 views
- Last edited Oct 10, 2004
On Sat, 9 Oct 2004 12:44:01 -0500, Kat <gertie at visionsix.com> wrote: >but this one i don't see how i can detect in advance: Can I first knock one thing on the head: >}}} <eucode> > if length(href) and not equal(href,"") and Is that not tautology, testing the same thing twice? (which in itself is tautological ) Anyway, that off my chest. Can I secondly assume that the error message missing the actual line of the sub-expression is perhaps misleading, but not quite the point. <aside> To be fair, I've been flummoxed before by:
if equal(a[x..y],stuff) then <blah>..[p..q] end if
and been equally baffled that x and y *are* correct, before finally noticing that it is one of p or q that is wrong. These things happen. </aside> >Naturally, i am now testing to see if (length(href) > 5) . Am I right in guessing that what you really meant to say was that changing the test that way stops it crashing, but allows stuff like "/APxx" and "b.htm" pass by? Regards, Pete
7. Re: errors in ex.err
- Posted by "Juergen Luethje" <j.lue at gmx.de> Oct 09, 2004
- 431 views
- Last edited Oct 10, 2004
Pete Lomax wrote: > On Sat, 9 Oct 2004 12:44:01 -0500, Kat <gertie at visionsix.com> wrote: > >> but this one i don't see how i can detect in advance: > > Can I first knock one thing on the head: >> }}} <eucode> >> if length(href) and not equal(href,"") and > > Is that not tautology, testing the same thing twice? > (which in itself is tautological ) Anyway, that off my chest. Of course, it is. <snip> Regards, Juergen
8. Re: errors in ex.err
- Posted by Derek Parnell <ddparnell at bigpond.com> Oct 10, 2004
- 440 views
Kat wrote: > > I've been getting less than useful error msgs lately, from an app that has run > > for years fairly flawlessly (except for the strange errors i reported and got > laughed at here, and so i restart the app when i detect them), but this one i > don't see how i can detect in advance: > > <from ex.err> > ================ > u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 > slice lower index is less than 1 (-4) > > u:\newsgetter\Eu webgetter tcp4u\Getabcnews4.exw:478 if length(href) > and not equal(href,"") and > > href = {47'/'} > > =========================== > </from> > > The entire if-then code is: > }}} <eucode> > if length(href) and not equal(href,"") and > (not match("/REUTERS",upper(href))) and > (not match("/AP",upper(href))) and > ( > (not match(".HTML",upper(href[length(href)-5..length(href)]))) and > (not match(".HTM", upper(href[length(href)-4..length(href)]))) > ) > then href = "" > end if > </eucode> {{{ I assume you are testing for URLs that contain either /Reuters or /AP, and end in either .HTML or .HTM, and you want to do it quickly, and you want ex.err to report the more relevant line. If so, this might also meet your requirements... if length(href) < 7 then href = "" else HREF = upper(href) if match("/REUTERS",HREF) = 0 or match("/AP",HREF) = 0 then href = "" else -- Just examine last 7 chars. FERH = reverse(HREF[length(HREF)-6..length(HREF)]) if match("LMTH.",FREH) != 1 and match("MTH.", FREH) != 1 then href = "" end if end if end if -- Derek Parnell Melbourne, Australia