Saturday, February 14, 2009

Comments on CA-Clipper 5.3b-Jo French [July 1997]

CCH: What I wanted to know is whether there are still unfixed bugs in 5.3b.
JF: Of course there are unfixed bugs in 5.3b.:-{.

Comments on 5.3b:

1) The descend() bug reported 11/94 has not been fixed. Useft_descend().2) oGet:display(), oGet:killfocus() and oGet:colordisp() turn thecursor off. This was reported 8/96. Workaround includes changesto std.ch and getsys.prg to save/restore cursor before/afterthese calls. See below for a suggested change to GET.3) DBSEEK(, [], .T. ) does not produce thecorrect result when a filter is set. This was reported 11/96.Workaround is to use orddescend() to change descend order,dbseek( , [], .F. ) and orddescend() again.Note: The orddescend() workaround is for the _dbfcdx rdd andwill not work with the dbfntx rdd.4) EG_LOCK errors do not increment oErr:tries when retried. This wasreported 3/97.5) There were no changes to llibg.lib.6) There were no changes to the NG.In relation to 53afixes.zip:*********************************These files are no longer needed.FILE DBF1X # Memory Leak AllFILE TBLOPENX # Memory Leak - _dbfcdx rddFILE MPARFILE ERRORSYSFILE _GETMSG******************************This file will fix the get cursor problem, above, but will eventuallyGPF if captions are used.FILE GETS1*******************************The JGETSYS file needs 3 revisions:1) If it has not been done, change all DEVPOS( .. ) to SETPOS( .. ).2) In the GetPreValidate() function, Save the cursor state beforethe oGet:display() and restore it afterwards.3) To properly return the cursor to the readmodal entry state,At the end of the Readmodal function:SETCURSOR( saStatics[ SNSVCURSOR ] ) // Move from currentposition// Restore state variablesRestoreGetSysVars( aSavGetSysVars )// S'87 compatibilitySETPOS( MAXROW() - 1, 0 )* SETCURSOR( saStatics[ SNSVCURSOR ] ) // Comment or remove.************Here's one way to modify the GET command to permit the existingcursor state to pass to ReadModal()./**** @..GET***/#command @ , GET ;[PICTURE ] ;[VALID ] ;[WHEN ] ;[CAPTION ] ;[MESSAGE ] ;[SEND ] ;;=> SetPos( , ) ;; AAdd( GetList, ;_GET_( , <"var">, , <{valid}>, <{when}> ) ) ;[; ATail(GetList):Caption := ] ;[; ATail(GetList):CapRow := ATail(Getlist):row ;; ATail(GetList):CapCol := ATail(Getlist):col - ;__CapLength() - 1] ;[; ATail(GetList):message := ] ;[; ATail(GetList):] ;; EVAL( {|o,n| n := Setcursor(), o:display(), Setcursor(n) },;Atail( GetList ) )

No comments:

Post a Comment