Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Are there any error(s) which cannot be handled?
Message
General information
Forum:
Visual FoxPro
Category:
Troubleshooting
Miscellaneous
Thread ID:
00096940
Message ID:
00097167
Views:
19
There's definately something fishy with using _SCREEN inside the NVL function.

I boiled your code down to the following:

LPARAMETERS MSG1

if type( 'msg1' ) = "O"
?"object"
else
?"not object"
endif

When you call this test function with an argument of NVL( .NULL., _SCREEN), you get a program error (usually on the second time you call it). If you make the same call, except with a form object (that is, o = createobject( "form")), it works fine. An argument of NVL( _SCREEN, .NULL.) works fine too! That's wierd.

- Mark


>Although I have writen some Error Control, I still have the following
>error and quit the system at once.
>
>Is the RunTime Library Stable?? I mean the VFP500.DLL!!
>How can I prevent the error happened by VFP500.DLL?
>
>Currently, my defined message prompt ww.prg is:
>LPARAMETERS MSG1, MSG2, MSG3, MSG4, MSG5, MSG6, MSG7, MSG8, MSG9, MSG10
>LOCAL OUTPUT, SEMIMSG, WAITSTATE
>
>IF PCOUNT() = 0
> OUTPUT = [.Nothing.]
> WAIT OUTPUT WINDOW NOWAIT TIMEOUT 2
>ELSE
>
>OUTPUT = ""
>FOR X = 1 TO PCOUNT()
> SEMIMSG = EVAL('MSG'+ALLTRIM(STR(X)))
> IF X > 1 && ADD RETURN
> OUTPUT = OUTPUT + CHR(13)
> ENDIF
> DO CASE
> CASE TYPE("SEMIMSG") $ "C" && Character Set
> SEMIMSG = SEMIMSG+CHR(9)+"[Character:" +CHR(9) +ALLTRIM(STR(LEN(SEMIMSG)))+"]"
> CASE TYPE("SEMIMSG") $ "NY" && CHANGE NUMBER TO STRING
> IF EMPTY(SEMIMSG - INT(SEMIMSG)) && INTEGER
> SEMIMSG = ALLTRIM(STR(SEMIMSG))+CHR(9)+"[Number]"
> ELSE
> SEMIMSG = ALLTRIM(STR(SEMIMSG, 10, 4))+CHR(9)+"[Decimal Number]"
> ENDIF
> CASE TYPE("SEMIMSG") $ "D" && CHANGE DATE TO STRING
> SEMIMSG = ALLTRIM(DTOC(SEMIMSG))+CHR(9)+"[Date]"
> CASE TYPE("SEMIMSG") $ "T" && CHANGE TIME TO STRING
> SEMIMSG = ALLTRIM(TTOC(SEMIMSG))+CHR(9)+"[Time]"
> CASE TYPE("SEMIMSG") $ "L" && LOGIC
> SEMIMSG = IIF(SEMIMSG, ".True.", ".False.")+CHR(9)+"[Logic]"
> CASE TYPE("SEMIMSG") $ "O" && CHANGE OBJECT TO STRING
> SEMIMSG = "Name: " +ALLTRIM(SEMIMSG.NAME) + CHR(9) + "Class: " + ALLTRIM(SEMIMSG.CLASS)+CHR(9)+"[Object]"
> CASE TYPE("SEMIMSG") $ "G" && GENERAL
> SEMIMSG = ".General."+CHR(9)+"[General]"
> CASE TYPE("SEMIMSG") $ "M" && MEMO
> SEMIMSG = ".Memo."+CHR(9)+"[Memo]"
> CASE TYPE("SEMIMSG") $ "U" && UNDEFINE
> SEMIMSG = ".Undefine."+CHR(9)+"[Undefine]"
> ENDCASE
>
> IF !EMPTY(SEMIMSG)
> OUTPUT = OUTPUT + SEMIMSG
> ELSE
> OUTPUT = OUTPUT + ".NULL."
> ENDIF
>ENDFOR
>
>IF PCOUNT() > 1 AND TYPE('MSG1') $ 'NY'
> DO CASE
> CASE MSG1 == 7
> WAITSTATE = 'NOCLEAR NOWAIT'
> WAIT OUTPUT WINDOW NOCLEAR NOWAIT
> CASE MSG1 == 8
> WAITSTATE = ''
> WAIT OUTPUT WINDOW
> CASE MSG1 == 9
> WAITSTATE = 'NOWAIT'
> WAIT OUTPUT WINDOW NOWAIT
> OTHERWISE
> WAITSTATE = 'TIMEOUT 2'
> WAIT OUTPUT WINDOW TIMEOUT 2
> ENDCASE
>ELSE
> WAIT OUTPUT WINDOW TIMEOUT 2
>ENDIF
>
>ENDIF && END PCOUNT()=0
>RETURN OUTPUT
>
>
>So Far, there is no problem on display Message. BUT I find that:
>
>ww(_screen) && no error
>ww(Nvl(_screen, .NULL.)) && no error
>
>ww(Nvl(.Null., _screen)) cause following error!!!
>This error even occur in command window or FOXCMD.exe!!
>
>
>FOXCMD caused an invalid page fault in
>module VFP500.DLL at 014f:1001e974.
>Registers:
>EAX=00000000 CS=014f EIP=1001e974 EFLGS=00010216
>EBX=00abdcaf SS=0157 ESP=0063f410 EBP=182b089c
>ECX=a0000159 DS=0157 ESI=00abac8c FS=1aef
>EDX=00ac3724 ES=0157 EDI=00abe83c GS=0000
>Bytes at CS:EIP:
>66 83 7c 29 10 20 75 e4 53 8b ce e8 51 2e 02 00
>Stack dump:
>00000001 00000001 0063f5f8 00abe83c 1001e8a7 00000001 0063f5f8 00000000 00000000 00000000 1001e7b3 00000001 0063f694 00b8f24c 0063f758 00abadc4
>
>This make me amazing!! the passing on parameter got error?!
>but no problem with similar action?! ?_____?'
>
>Is NVL() got problem ?!
>
>
>In worst case, there are really hide error on VFP500.DLL,
>I mean if the worst case!
>What suggestion(s) or method(s) to prevent or avoid these error occur?
>
>2nd, how to handle error which the system DO NOT calling my
>ON ERROR statement nor Object.Error procedure??
>
>I nearly got crazy now. Impossible but occurs... +_+'
----------
Mark Bucciarelli
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform