Hi,
While experimenting with Darwin GTXWC build, I just
got the exact same error. (never ever got it before)
---
ErrorMessage= Error(2) BASE/1066 Argument error: conditional
ErrorCategory= EG_ARG (1)
ErrorOS= Nincs hiba (0)
ErrorArgs= NIL
ErrorFlags=
ErrorRetries= 0
CallStack= TBROWSE:STABILIZE (794)
---
Brgds,
Viktor
On 2008.10.26., at 3:09, Pritpal Bedi wrote:
Hello Przemek
How this error can be generated:
Open any TBrowse. I did with tests/wvtext.prg <F10>.
Scroll down with down-arrow past last line by two records.
Scroll up with up-arrow past first record.
Scroll down with down-arrow and at stay at last row for a moment -
just to
be sure.
Scroll down - AND ERROR WILL BE GENERATED.
I do not know the logic so I did not dwelled deep.
IMETHOD stabilize() CLASS TBROWSE
LOCAL nCol, nRowCount, nToMove, nMoved
LOCAL lDisp, lRead, lStat
IF ::nConfigure != 0
::doConfigure()
ENDIF
IF !::lStable .OR. ::lInvalid .OR. ::lFrames .OR. ::lRefresh .OR. ;
::nMoveOffset != 0 .OR. ::nBufferPos != ::nRowPos
nRowCount := ::rowCount
IF ::lRefresh
AFill( ::aCellStatus, .F. )
::nLastRow := nRowCount
::nLastScroll := 0
::lRefresh := .F.
ENDIF
nCol := ::nColPos
IF nCol < 1 .OR. nCol > ::colCount .OR. ::nLastPos != nCol .OR. ;
::lFrames .OR. ::nLeftVisible == 0 .OR. ::nRightVisible ==
0 .OR. ;
::aColData[ nCol ][ _TBCI_COLPOS ] == NIL
::setVisible()
ENDIF
IF ::lFrames
::dispFrames()
AFill( ::aDispStatus, .T. )
ENDIF
lRead := .F.
IF ::nMoveOffset != 0
::setPosition()
lRead := .T.
ENDIF
hb_ToOutDebug( "stabilize: 5" )
IF ::nLastScroll > 0
FOR EACH lStat, lDisp IN ::aCellStatus, ::aDispStatus DESCEND
hb_ToOutDebug( "stabilize: 5 1 0" )
IF !lStat ////////// ERROR: CONDITIONAL
/////////////
hb_ToOutDebug( "stabilize: 5 1 1" )
IF lRead
hb_ToOutDebug( "stabilize: 5 1 2" )
RETURN .F.
ENDIF
lRead := ::readRecord( lStat:__enumIndex() )
ENDIF
IF lDisp
::dispRow( lDisp:__enumIndex() )
ENDIF
NEXT
hb_ToOutDebug( "stabilize: 5 1" )
ELSE
FOR EACH lStat, lDisp IN ::aCellStatus, ::aDispStatus
IF !lStat
IF lRead
RETURN .F.
ENDIF
lRead := ::readRecord( lStat:__enumIndex() )
ENDIF
IF lDisp
::dispRow( lDisp:__enumIndex() )
ENDIF
NEXT
hb_ToOutDebug( "stabilize: 5 2" )
ENDIF
hb_ToOutDebug( "stabilize: 6" )
IF ::nRowPos > ::nLastRow
::nRowPos := ::nLastRow
ENDIF
IF ::nBufferPos != ::nRowPos
/* TOFIX: add protection against unexpected results
* CA-Cl*pper does not fully respect here the returned
* value and current code below replicates what Clipper
* seems to do but it means that in network environment
* with concurent modifications wrong records can be
* shown. [druzus]
*/
nToMove := ::nRowPos - ::nBufferPos
nMoved := _SKIP_RESULT( Eval( ::bSkipBlock, nToMove ) )
IF nToMove > 0
IF nMoved < 0
nMoved := 0
ENDIF
ELSEIF nToMove < 0
nMoved := nToMove
ELSE
nMoved := 0
ENDIF
::nBufferPos += nMoved
::nRowPos := ::nBufferPos
ENDIF
::lStable := .T.
::lInvalid := .F.
ENDIF
IF ::autoLite
::hilite()
ELSE
::setCursorPos()
ENDIF
RETURN .T.
Regards
Pritpal Bedi
--
View this message in context:
http://www.nabble.com/A-Bug-in-TBrowse-Class-tp20169788p20169788.html
Sent from the Harbour - Dev mailing list archive at Nabble.com.
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour
_______________________________________________
Harbour mailing list
Harbour@harbour-project.org
http://lists.harbour-project.org/mailman/listinfo/harbour