2012-10-04 04:21 UTC+0200 Viktor Szakats (harbour syenar.net)
* extras/httpsrv/home/index.html
* updated reference to long deleted batch file to hbmk2 cmdline
* tests/db_brows.prg
* deleted inactive/broken parts
+ enable ADS APIs automatically
! use inkey.ch constants
! fixed keyboard handling for unicode
* enabled editing (warning: do not commit modified test.dbf)
! fixed function names of Harbour extended functions (commented)
* tests/newrdd.prg
! fixed failure due to wrongly selected RDD
* formatting
* tests/inherit.prg
* tests/stripem.prg
* various cleanups (do not add EOF char, unicode
compatibility, use platform-specific EOL)
* tests/inkeytst.prg
! fixed another unicode incompatibility for __HARBOUR__
* tests/readhrb.prg
% use HB_NUMTOHEX() instead of local implementation
* formatting
* tests/inifiles.prg
! untested fixes for platform independent EOL handling
* tests/test.prg
* tests/version.prg
* minor
This commit is contained in:
@@ -16,6 +16,41 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-10-04 04:21 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* extras/httpsrv/home/index.html
|
||||
* updated reference to long deleted batch file to hbmk2 cmdline
|
||||
|
||||
* tests/db_brows.prg
|
||||
* deleted inactive/broken parts
|
||||
+ enable ADS APIs automatically
|
||||
! use inkey.ch constants
|
||||
! fixed keyboard handling for unicode
|
||||
* enabled editing (warning: do not commit modified test.dbf)
|
||||
! fixed function names of Harbour extended functions (commented)
|
||||
|
||||
* tests/newrdd.prg
|
||||
! fixed failure due to wrongly selected RDD
|
||||
* formatting
|
||||
|
||||
* tests/inherit.prg
|
||||
* tests/stripem.prg
|
||||
* various cleanups (do not add EOF char, unicode
|
||||
compatibility, use platform-specific EOL)
|
||||
|
||||
* tests/inkeytst.prg
|
||||
! fixed another unicode incompatibility for __HARBOUR__
|
||||
|
||||
* tests/readhrb.prg
|
||||
% use HB_NUMTOHEX() instead of local implementation
|
||||
* formatting
|
||||
|
||||
* tests/inifiles.prg
|
||||
! untested fixes for platform independent EOL handling
|
||||
|
||||
* tests/test.prg
|
||||
* tests/version.prg
|
||||
* minor
|
||||
|
||||
2012-10-04 02:18 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
- tests/fsplit.prg
|
||||
- deleted very old and platform specific file splitter
|
||||
|
||||
@@ -35,9 +35,9 @@ Examples:
|
||||
</li>
|
||||
</ul>
|
||||
<br />
|
||||
(*) Before run these examples, please build files in /uhttpd/modules folder using bldhrb.bat
|
||||
(*) Before run these examples, please build files in /uhttpd/modules folder using 'hbmk2 modules.hbp'
|
||||
<br />
|
||||
(**) This example requires LIBGD
|
||||
(**) This example requires libgd package
|
||||
|
||||
|
||||
</body>
|
||||
|
||||
@@ -19,7 +19,6 @@
|
||||
//+ Function WNDVIVOD()
|
||||
//+ Static Procedure VIVSTR()
|
||||
//+ Function FLDSTR()
|
||||
//+ Function GetBuf()
|
||||
//+ Function InitList()
|
||||
//+ Function Defpict()
|
||||
//+ Function NUM_STR()
|
||||
@@ -122,20 +121,10 @@ PROCEDURE Main( filename )
|
||||
//+
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
#ifdef VER_MOUSE
|
||||
|
||||
FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey, ctrl_ar )
|
||||
|
||||
#else
|
||||
|
||||
FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey )
|
||||
|
||||
#endif
|
||||
|
||||
LOCAL rezproc, xkey, rez, fipos, wndbuf, predit, predxx, oldcolors
|
||||
#ifdef VER_MOUSE
|
||||
LOCAL ym, xm
|
||||
#endif
|
||||
LOCAL i
|
||||
LOCAL fbar1, fbar2, vartmp, varbuf, razmer
|
||||
LOCAL GetList := {}
|
||||
@@ -214,7 +203,7 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey )
|
||||
ENDIF
|
||||
LI_COLPOS := 1
|
||||
LI_NLEFT := LI_FREEZE + 1
|
||||
// DO MSFNEXT WITH mslist,LI_NLEFT
|
||||
// DO MSFNEXT WITH mslist, LI_NLEFT
|
||||
LI_LEFTVISIBLE := LI_NLEFT
|
||||
STORE .T. TO rez
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
@@ -223,7 +212,7 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
LI_NSTR := 1
|
||||
ELSE
|
||||
Eval( LI_BSKIP, mslist, - ( LI_NSTR - 1 ) )
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
LI_NSTR := 1
|
||||
@@ -233,303 +222,234 @@ FUNCTION DBFLIST( mslist, x1, y1, x2, y2, title, maskey )
|
||||
Eval( LI_BSKIP, mslist, ( LI_NSTR - 1 ) )
|
||||
IF LI_KOLZ == 0 .AND. predit == 3
|
||||
LI_NSTR := 0
|
||||
KEYBOARD Chr( 24 )
|
||||
hb_keyIns( K_DOWN )
|
||||
ENDIF
|
||||
DO WHILE rez
|
||||
SetColor( LI_CLR )
|
||||
Eval( LI_B1, mslist )
|
||||
// IF predit>1
|
||||
// SETCOLOR(LI_CLRV+"*")
|
||||
// ELSE
|
||||
SetColor( LI_CLRV )
|
||||
// ENDIF
|
||||
// IF predit > 1
|
||||
// SetColor( LI_CLRV + "*" )
|
||||
// ELSE
|
||||
SetColor( LI_CLRV )
|
||||
// ENDIF
|
||||
VIVSTR( mslist, LI_NSTR + LI_Y1, iif( predit > 1, LI_COLPOS, 0 ) )
|
||||
SetColor( LI_CLR )
|
||||
//
|
||||
#ifdef RDD_AX
|
||||
@ LI_Y1 + 2, LI_X2, LI_Y2 - 2, LI_X2 BOX str_barbox
|
||||
@ LI_Y1 + 1, LI_X2 SAY SubStr( str_bar, 2, 1 )
|
||||
@ LI_Y2 - 1, LI_X2 SAY SubStr( str_bar, 1, 1 )
|
||||
@ LI_Y1 + 2 + Int( iif( LI_PRFLT, LI_TEKZP, Ax_Keyno() ) * ( LI_Y2 - LI_Y1 - 4 ) / iif( LI_PRFLT, LI_KOLZ, Ax_KeyCount() ) ), LI_X2 SAY Right( str_bar, 1 )
|
||||
#else
|
||||
IF ! ( Type( "Sx_Keyno()" ) == "U" )
|
||||
DO CASE
|
||||
CASE !( Type( "Sx_KeyNo()" ) == "U" )
|
||||
fbar1 := "Sx_KeyNo()"
|
||||
fbar2 := "Sx_KeyCount()"
|
||||
CASE !( Type( "ADSKeyNo()" ) == "U" )
|
||||
fbar1 := "ADSKeyNo()"
|
||||
fbar2 := "ADSKeyCount()"
|
||||
CASE !( Type( "Ax_KeyNo()" ) == "U" )
|
||||
fbar1 := "Ax_KeyNo()"
|
||||
fbar2 := "Ax_KeyCount()"
|
||||
ENDCASE
|
||||
IF ! Empty( fbar1 )
|
||||
@ LI_Y1 + 2, LI_X2, LI_Y2 - 2, LI_X2 BOX str_barbox
|
||||
@ LI_Y1 + 1, LI_X2 SAY SubStr( str_bar, 2, 1 )
|
||||
@ LI_Y2 - 1, LI_X2 SAY SubStr( str_bar, 1, 1 )
|
||||
fbar1 := "Sx_Keyno()"
|
||||
fbar2 := "Sx_KeyCount()"
|
||||
@ LI_Y1 + 2 + Int( iif( LI_PRFLT, LI_TEKZP, &fbar1 ) * ( LI_Y2 - LI_Y1 - 4 ) / iif( LI_PRFLT, LI_KOLZ, &fbar2 ) ), LI_X2 SAY Right( str_bar, 1 )
|
||||
ENDIF
|
||||
#endif
|
||||
//
|
||||
IF LI_LVIEW
|
||||
xkey := K_ESC
|
||||
ELSE
|
||||
#ifdef VER_MOUSE
|
||||
xkey := IN_KM( .F. )
|
||||
IF xkey == 502
|
||||
DO WHILE M_STAT() != 0
|
||||
ENDDO
|
||||
xkey := K_ESC
|
||||
ELSEIF xkey == 501
|
||||
ym := M_YTEXT()
|
||||
xm := M_XTEXT()
|
||||
IF ( ym <= LI_Y1 .OR. ym >= LI_Y2 .OR. xm <= LI_X1 .OR. xm >= LI_X2 )
|
||||
IF xm <= LI_X2 .AND. xm >= LI_X1 .AND. ( ym == LI_Y1 .OR. ym == LI_Y2 )
|
||||
M_SHOW()
|
||||
i := Seconds()
|
||||
DO WHILE Seconds() - i < 0.05
|
||||
ENDDO
|
||||
KEYBOARD Chr( iif( ym == LI_Y1, 5, 24 ) )
|
||||
M_HIDE()
|
||||
LOOP
|
||||
ELSEIF ctrl_ar != NIL
|
||||
FOR i := 1 TO Len( ctrl_ar )
|
||||
IF ValType( ctrl_ar[ i ] ) == "C"
|
||||
SetColor( ctrl_ar[ i ] )
|
||||
ELSE
|
||||
rezproc := F_CTRL( ctrl_ar[ i ], , , , , , 1, ym, xm )
|
||||
IF rezproc > 0
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDIF
|
||||
NEXT
|
||||
SetColor( LI_CLR )
|
||||
IF rezproc > 0
|
||||
rezproc += 500
|
||||
EXIT
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
#else
|
||||
xkey := Inkey( 0 )
|
||||
#endif
|
||||
ENDIF
|
||||
VIVSTR( mslist, LI_NSTR + LI_Y1, 0 )
|
||||
IF xkey < 500
|
||||
DO CASE
|
||||
CASE xkey == K_DOWN
|
||||
IF ( LI_KOLZ > 0 .OR. predit == 3 ) .AND. ( LI_KOLZ == 0 .OR. ! Eval( LI_BEOF, mslist ) )
|
||||
Eval( LI_BSKIP, mslist, 1 )
|
||||
IF Eval( LI_BEOF, mslist ) .AND. ( predit < 3 .OR. LI_PRFLT )
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
ELSE
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
vartmp := LI_NLEFT
|
||||
LI_NLEFT := LI_LEFTVISIBLE
|
||||
LI_COLPOS := LI_LEFTVISIBLE
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
IF vartmp > LI_LEFTVISIBLE
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
Eval( LI_BSKIP, mslist )
|
||||
ENDIF
|
||||
ENDIF
|
||||
LI_NSTR++
|
||||
IF LI_NSTR > razmer
|
||||
LI_NSTR := razmer
|
||||
Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, 1 )
|
||||
VIVSTR( mslist, LI_Y2 - 1, 0 )
|
||||
ENDIF
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
KEYBOARD Chr( 13 )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
CASE xkey == K_UP .AND. LI_KOLZ > 0
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ELSE
|
||||
LI_NSTR--
|
||||
IF LI_NSTR == 0
|
||||
LI_NSTR := 1
|
||||
Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, -1 )
|
||||
VIVSTR( mslist, LI_Y1 + 1, 0 )
|
||||
ENDIF
|
||||
ENDIF
|
||||
CASE xkey == K_RIGHT .AND. LI_KOLZ != 0
|
||||
IF predit > 1
|
||||
IF LI_COLPOS < LI_NCOLUMNS
|
||||
LI_COLPOS++
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT
|
||||
i := LI_NLEFT + LI_NCOLUMNS
|
||||
DO WHILE LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT .AND. LI_NLEFT + LI_NCOLUMNS == i
|
||||
LI_NLEFT++
|
||||
// DO MSFNEXT WITH mslist,LI_NLEFT
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
ENDDO
|
||||
LI_COLPOS := i - LI_NLEFT + 1
|
||||
Eval( LI_BSKIP, mslist, - ( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
ENDIF
|
||||
VIVNAMES( mslist, LI_NLEFT )
|
||||
CASE xkey == K_LEFT
|
||||
IF predit > 1
|
||||
IF LI_COLPOS != 1
|
||||
LI_COLPOS--
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_NLEFT > LI_LEFTVISIBLE
|
||||
LI_NLEFT--
|
||||
// DO MSFBACK WITH mslist,LI_NLEFT
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
LI_COLPOS := 1
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
ENDIF
|
||||
VIVNAMES( mslist, LI_NLEFT )
|
||||
CASE xkey == K_PGDN
|
||||
Eval( LI_BSKIP, mslist, razmer - LI_NSTR + 1 )
|
||||
LI_NSTR := 1
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
DO CASE
|
||||
CASE xkey == K_DOWN
|
||||
IF ( LI_KOLZ > 0 .OR. predit == 3 ) .AND. ( LI_KOLZ == 0 .OR. ! Eval( LI_BEOF, mslist ) )
|
||||
Eval( LI_BSKIP, mslist, 1 )
|
||||
IF Eval( LI_BEOF, mslist ) .AND. ( predit < 3 .OR. LI_PRFLT )
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
ENDIF
|
||||
WNDVIVOD( mslist )
|
||||
CASE xkey == K_PGUP
|
||||
IF LI_NSTR > 1
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
LI_NSTR := 1
|
||||
ELSE
|
||||
Eval( LI_BSKIP, mslist, -razmer )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ENDIF
|
||||
WNDVIVOD( mslist )
|
||||
ENDIF
|
||||
CASE xkey == K_END .AND. LI_KOLZ > 0
|
||||
Eval( LI_BGBOT, mslist )
|
||||
Eval( LI_BSKIP, mslist, -( razmer - 1 ) )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ENDIF
|
||||
LI_NSTR := WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
CASE xkey == K_HOME .AND. LI_KOLZ > 0
|
||||
LI_NSTR := 1
|
||||
Eval( LI_BGTOP, mslist )
|
||||
WNDVIVOD( mslist )
|
||||
CASE xkey == K_ENTER .AND. predit < 2
|
||||
rez := .F.
|
||||
rezproc := xkey
|
||||
CASE ( xkey == K_ENTER .OR. ( xkey > 47 .AND. xkey < 58 ) .OR. ( xkey > 64 .AND. xkey < 91 ) ;
|
||||
.OR. ( xkey > 96 .AND. xkey < 123 ) .OR. ( xkey > 127 .AND. xkey < 176 ) .OR. ( xkey > 223 .AND. xkey < 240 ) ) .AND. predit > 1
|
||||
fipos := LI_COLPOS + LI_NLEFT - 1 - LI_FREEZE
|
||||
IF LI_WHEN == NIL .OR. Len( LI_WHEN ) < fipos .OR. LI_WHEN[ fipos ] == NIL .OR. Eval( LI_WHEN[ fipos ] )
|
||||
IF ValType( LI_MSED ) != "N"
|
||||
vartmp := iif( Len( LI_MSED ) < fipos, 1, LI_MSED[ fipos ] )
|
||||
IF ValType( vartmp ) == "N"
|
||||
IF vartmp != 2
|
||||
LOOP
|
||||
ENDIF
|
||||
ELSE
|
||||
LOOP
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
vartmp := LI_NLEFT
|
||||
LI_NLEFT := LI_LEFTVISIBLE
|
||||
LI_COLPOS := LI_LEFTVISIBLE
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
IF vartmp > LI_LEFTVISIBLE
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
Eval( LI_BSKIP, mslist )
|
||||
ENDIF
|
||||
ENDIF
|
||||
SET CURSOR ON
|
||||
SetColor( LI_CLRV + "," + LI_CLRV )
|
||||
IF xkey != K_ENTER
|
||||
KEYBOARD Chr( xkey ) + GetBuf()
|
||||
LI_NSTR++
|
||||
IF LI_NSTR > razmer
|
||||
LI_NSTR := razmer
|
||||
Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, 1 )
|
||||
VIVSTR( mslist, LI_Y2 - 1, 0 )
|
||||
ENDIF
|
||||
vartmp := ReadExit( .T. )
|
||||
varbuf := FieldGet( fipos )
|
||||
@ LI_NSTR + LI_Y1, LI_XPOS GET varbuf PICTURE Defpict( mslist, fipos, LI_X2 - LI_X1 - 3 )
|
||||
IF LI_VALID != NIL .AND. Len( LI_VALID ) >= fipos .AND. LI_VALID[ fipos ] != NIL
|
||||
Getlist[ 1 ] :postBlock := LI_VALID[ fipos ]
|
||||
ENDIF
|
||||
READ
|
||||
IF LastKey() != K_ESC .AND. Updated()
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
APPEND BLANK
|
||||
LI_KOLZ := Eval( LI_RCOU, mslist )
|
||||
ELSE
|
||||
IF ! Set( _SET_EXCLUSIVE )
|
||||
RLock()
|
||||
IF NetErr()
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_BDESHOUT != NIL .AND. ValType( varbuf ) == "C"
|
||||
varbuf := Eval( LI_BDESHOUT, mslist, varbuf )
|
||||
ENDIF
|
||||
FieldPut( fipos, varbuf )
|
||||
IF ! Set( _SET_EXCLUSIVE )
|
||||
UNLOCK
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF ( LastKey() == K_ESC .OR. ! Updated() ) .AND. Eval( LI_BEOF, mslist )
|
||||
SetColor( LI_CLR )
|
||||
@ LI_NSTR + LI_Y1, LI_X1 + 1 CLEAR TO LI_NSTR + LI_Y1, LI_X2 - 1
|
||||
LI_NSTR--
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
ELSE
|
||||
IF ( vartmp := LastKey() ) != K_ENTER .AND. vartmp != K_ESC .AND. vartmp < 32
|
||||
KEYBOARD Chr( vartmp )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ReadExit( vartmp )
|
||||
SET CURSOR OFF
|
||||
ENDIF
|
||||
CASE xkey == K_ESC
|
||||
rez := .F.
|
||||
rezproc := 0
|
||||
CASE xkey == K_F2 .AND. ( maskey == NIL .OR. AScan( maskey, xkey ) == 0 )
|
||||
IF predit == 1
|
||||
predit := predxx
|
||||
ELSEIF predit > 1
|
||||
predit := 1
|
||||
ENDIF
|
||||
OTHERWISE
|
||||
IF maskey != NIL
|
||||
IF AScan( maskey, xkey ) != 0
|
||||
rez := .F.
|
||||
rezproc := xkey
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDCASE
|
||||
#ifdef VER_MOUSE
|
||||
ELSE
|
||||
IF ym > LI_Y1 .AND. ym < LI_Y2 .AND. xm > LI_X1 .AND. xm < LI_X2
|
||||
IF predit < 2
|
||||
IF LI_NSTR == ym - LI_Y1
|
||||
rez := .F.
|
||||
rezproc := 13
|
||||
ELSE
|
||||
Eval( LI_BSKIP, mslist, ym - LI_Y1 - LI_NSTR )
|
||||
LI_NSTR := ym - LI_Y1
|
||||
ENDIF
|
||||
ELSE
|
||||
i := FLDCOUNT( mslist, LI_X1 + 2, xm, LI_NLEFT ) + 1
|
||||
IF i <= FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
IF i == 2 .AND. xm < LI_X1 + 2 + Len( FLDSTR( mslist, LI_NLEFT + LI_COLPOS - 1 ) )
|
||||
i := 1
|
||||
ENDIF
|
||||
IF LI_COLPOS != i .OR. LI_NSTR != ym - LI_Y1
|
||||
LI_COLPOS := i
|
||||
Eval( LI_BSKIP, mslist, ym - LI_Y1 - LI_NSTR )
|
||||
LI_NSTR := ym - LI_Y1
|
||||
ELSE
|
||||
KEYBOARD Chr( 13 )
|
||||
ENDIF
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
hb_keyIns( K_ENTER )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
M_SHOW()
|
||||
DO WHILE M_STAT() != 0
|
||||
ENDDO
|
||||
M_HIDE()
|
||||
#endif
|
||||
ENDIF
|
||||
CASE xkey == K_UP .AND. LI_KOLZ > 0
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ELSE
|
||||
LI_NSTR--
|
||||
IF LI_NSTR == 0
|
||||
LI_NSTR := 1
|
||||
Scroll( LI_Y1 + 1, LI_X1 + 1, LI_Y2 - 1, LI_X2 - 1, -1 )
|
||||
VIVSTR( mslist, LI_Y1 + 1, 0 )
|
||||
ENDIF
|
||||
ENDIF
|
||||
CASE xkey == K_RIGHT .AND. LI_KOLZ != 0
|
||||
IF predit > 1
|
||||
IF LI_COLPOS < LI_NCOLUMNS
|
||||
LI_COLPOS++
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT
|
||||
i := LI_NLEFT + LI_NCOLUMNS
|
||||
DO WHILE LI_NCOLUMNS + LI_NLEFT - LI_FREEZE - 1 < LI_COLCOUNT .AND. LI_NLEFT + LI_NCOLUMNS == i
|
||||
LI_NLEFT++
|
||||
// DO MSFNEXT WITH mslist, LI_NLEFT
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
ENDDO
|
||||
LI_COLPOS := i - LI_NLEFT + 1
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
ENDIF
|
||||
VIVNAMES( mslist, LI_NLEFT )
|
||||
CASE xkey == K_LEFT
|
||||
IF predit > 1
|
||||
IF LI_COLPOS != 1
|
||||
LI_COLPOS--
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_NLEFT > LI_LEFTVISIBLE
|
||||
LI_NLEFT--
|
||||
// DO MSFBACK WITH mslist, LI_NLEFT
|
||||
LI_NCOLUMNS := FLDCOUNT( mslist, LI_X1 + 2, LI_X2 - 2, LI_NLEFT )
|
||||
LI_COLPOS := 1
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
ENDIF
|
||||
VIVNAMES( mslist, LI_NLEFT )
|
||||
CASE xkey == K_PGDN
|
||||
Eval( LI_BSKIP, mslist, razmer - LI_NSTR + 1 )
|
||||
LI_NSTR := 1
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
ENDIF
|
||||
WNDVIVOD( mslist )
|
||||
CASE xkey == K_PGUP
|
||||
IF LI_NSTR > 1
|
||||
Eval( LI_BSKIP, mslist, -( LI_NSTR - 1 ) )
|
||||
LI_NSTR := 1
|
||||
ELSE
|
||||
Eval( LI_BSKIP, mslist, -razmer )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ENDIF
|
||||
WNDVIVOD( mslist )
|
||||
ENDIF
|
||||
CASE xkey == K_END .AND. LI_KOLZ > 0
|
||||
Eval( LI_BGBOT, mslist )
|
||||
Eval( LI_BSKIP, mslist, -( razmer - 1 ) )
|
||||
IF Eval( LI_BBOF, mslist )
|
||||
Eval( LI_BGTOP, mslist )
|
||||
ENDIF
|
||||
LI_NSTR := WNDVIVOD( mslist )
|
||||
Eval( LI_BSKIP, mslist, LI_NSTR - 1 )
|
||||
CASE xkey == K_HOME .AND. LI_KOLZ > 0
|
||||
LI_NSTR := 1
|
||||
Eval( LI_BGTOP, mslist )
|
||||
WNDVIVOD( mslist )
|
||||
CASE xkey == K_ENTER .AND. predit < 2
|
||||
rez := .F.
|
||||
rezproc := xkey
|
||||
CASE ( xkey == K_ENTER .OR. ! Empty( hb_keyChar( xkey ) ) ) .AND. predit > 1
|
||||
fipos := LI_COLPOS + LI_NLEFT - 1 - LI_FREEZE
|
||||
IF LI_WHEN == NIL .OR. Len( LI_WHEN ) < fipos .OR. LI_WHEN[ fipos ] == NIL .OR. Eval( LI_WHEN[ fipos ] )
|
||||
IF ValType( LI_MSED ) != "N"
|
||||
vartmp := iif( Len( LI_MSED ) < fipos, 1, LI_MSED[ fipos ] )
|
||||
IF ValType( vartmp ) == "N"
|
||||
IF vartmp != 2
|
||||
LOOP
|
||||
ENDIF
|
||||
ELSE
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
SET CURSOR ON
|
||||
SetColor( LI_CLRV + "," + LI_CLRV )
|
||||
IF xkey != K_ENTER
|
||||
DO WHILE NextKey() != 0
|
||||
hb_keyPut( Inkey( 0 ) )
|
||||
ENDDO
|
||||
hb_keyIns( xkey )
|
||||
ENDIF
|
||||
vartmp := ReadExit( .T. )
|
||||
varbuf := FieldGet( fipos )
|
||||
@ LI_NSTR + LI_Y1, LI_XPOS GET varbuf PICTURE Defpict( mslist, fipos, LI_X2 - LI_X1 - 3 )
|
||||
IF LI_VALID != NIL .AND. Len( LI_VALID ) >= fipos .AND. LI_VALID[ fipos ] != NIL
|
||||
Getlist[ 1 ]:postBlock := LI_VALID[ fipos ]
|
||||
ENDIF
|
||||
READ
|
||||
IF LastKey() != K_ESC .AND. Updated()
|
||||
IF Eval( LI_BEOF, mslist )
|
||||
APPEND BLANK
|
||||
LI_KOLZ := Eval( LI_RCOU, mslist )
|
||||
ELSE
|
||||
IF ! Set( _SET_EXCLUSIVE )
|
||||
RLock()
|
||||
IF NetErr()
|
||||
LOOP
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF LI_BDESHOUT != NIL .AND. ValType( varbuf ) == "C"
|
||||
varbuf := Eval( LI_BDESHOUT, mslist, varbuf )
|
||||
ENDIF
|
||||
FieldPut( fipos, varbuf )
|
||||
IF ! Set( _SET_EXCLUSIVE )
|
||||
UNLOCK
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF ( LastKey() == K_ESC .OR. ! Updated() ) .AND. Eval( LI_BEOF, mslist )
|
||||
SetColor( LI_CLR )
|
||||
@ LI_NSTR + LI_Y1, LI_X1 + 1 CLEAR TO LI_NSTR + LI_Y1, LI_X2 - 1
|
||||
LI_NSTR--
|
||||
Eval( LI_BSKIP, mslist, -1 )
|
||||
ELSE
|
||||
IF ( vartmp := LastKey() ) != K_ENTER .AND. vartmp != K_ESC .AND. vartmp < 32
|
||||
hb_keyIns( vartmp )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ReadExit( vartmp )
|
||||
SET CURSOR OFF
|
||||
ENDIF
|
||||
CASE xkey == K_ESC
|
||||
rez := .F.
|
||||
rezproc := 0
|
||||
CASE xkey == K_F2 .AND. ( maskey == NIL .OR. AScan( maskey, xkey ) == 0 )
|
||||
IF predit == 1
|
||||
predit := predxx
|
||||
ELSEIF predit > 1
|
||||
predit := 1
|
||||
ENDIF
|
||||
OTHERWISE
|
||||
IF maskey != NIL
|
||||
IF AScan( maskey, xkey ) != 0
|
||||
rez := .F.
|
||||
rezproc := xkey
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDCASE
|
||||
ENDDO
|
||||
|
||||
IF LI_LSOHR
|
||||
@@ -591,14 +511,14 @@ FUNCTION VIVNAMES( mslist )
|
||||
ENDIF
|
||||
@ LI_Y1, x - 1 CLEAR TO LI_Y1, LI_X2 - 1
|
||||
fif := iif( LI_FREEZE > 0, 1, LI_NLEFT )
|
||||
// DO MSFNEXT WITH mslist,fif
|
||||
// DO MSFNEXT WITH mslist, fif
|
||||
DO WHILE i <= LI_NCOLUMNS .AND. fif <= Len( LI_NAMES )
|
||||
IF LI_NAMES[ fif ] != NIL
|
||||
@ LI_Y1, x SAY LI_NAMES[ fif ]
|
||||
ENDIF
|
||||
x := x + Max( Len( FLDSTR( mslist, fif ) ), Len( LI_NAMES[ fif ] ) ) + 1
|
||||
fif := iif( fif == LI_FREEZE, LI_NLEFT, fif + 1 )
|
||||
// DO MSFNEXT WITH mslist,fif
|
||||
// DO MSFNEXT WITH mslist, fif
|
||||
i++
|
||||
ENDDO
|
||||
IF LI_NMCLR != NIL
|
||||
@@ -670,7 +590,7 @@ STATIC PROCEDURE VIVSTR( mslist, nstroka, vybfld )
|
||||
LI_XPOS := x
|
||||
ENDIF
|
||||
IF vybfld == 0 .OR. vybfld == i
|
||||
// DO MSFNEXT WITH mslist,fif
|
||||
// DO MSFNEXT WITH mslist, fif
|
||||
sviv := FLDSTR( mslist, fif )
|
||||
sviv := iif( Len( sviv ) < LI_X2 - 1 - x, sviv, SubStr( sviv, 1, LI_X2 - 1 - x ) )
|
||||
@ nstroka, x SAY sviv
|
||||
@@ -681,7 +601,7 @@ STATIC PROCEDURE VIVSTR( mslist, nstroka, vybfld )
|
||||
x := x + Max( Len( sviv ), iif( LI_NAMES != NIL .AND. Len( LI_NAMES ) >= fif, Len( LI_NAMES[ fif ] ), 0 ) ) + 1
|
||||
fif := iif( fif == LI_FREEZE, LI_NLEFT, fif + 1 )
|
||||
NEXT
|
||||
// DO MSFNEXT WITH mslist,fif
|
||||
// DO MSFNEXT WITH mslist, fif
|
||||
IF fif <= LI_COLCOUNT .AND. vybfld == 0
|
||||
IF LI_X2 - 1 - x > 0
|
||||
sviv := FLDSTR( mslist, fif )
|
||||
@@ -728,13 +648,13 @@ FUNCTION FLDSTR( mslist, numf )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
// fldtype := FIELDTYPE( numf )
|
||||
// fldtype := hb_FieldType( numf )
|
||||
fldtype := LI_MSTYP[ numf ]
|
||||
DO CASE
|
||||
CASE fldtype == "C"
|
||||
rez := FieldGet( numf )
|
||||
CASE fldtype == "N"
|
||||
// rez := STR( FIELDGET( numf ), FIELDSIZE( numf ), FIELDDECI( numf ) )
|
||||
// rez := Str( FieldGet( numf ), hb_FieldLen( numf ), hb_FieldDec( numf ) )
|
||||
rez := Str( FieldGet( numf ), LI_MSLEN[ numf ], LI_MSDEC[ numf ] )
|
||||
CASE fldtype == "D"
|
||||
rez := DToC( FieldGet( numf ) )
|
||||
@@ -749,25 +669,6 @@ FUNCTION FLDSTR( mslist, numf )
|
||||
|
||||
RETURN rez
|
||||
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
//+ Function GetBuf()
|
||||
//+
|
||||
//+ Called from ( db_brows.prg ) 1 - function dbflist()
|
||||
//+
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
|
||||
FUNCTION GetBuf
|
||||
|
||||
LOCAL srez := ""
|
||||
|
||||
DO WHILE NextKey() != 0
|
||||
srez += Chr( Inkey( 0 ) )
|
||||
ENDDO
|
||||
|
||||
RETURN srez
|
||||
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
//+ Function InitList()
|
||||
@@ -782,7 +683,8 @@ FUNCTION InitList
|
||||
|
||||
LOCAL mslist := Array( LI_LEN )
|
||||
|
||||
LI_NSTR := LI_MSED := 1
|
||||
LI_NSTR := 1
|
||||
LI_MSED := 3
|
||||
LI_CLR := "W+/B"
|
||||
LI_CLRV := "R/W"
|
||||
LI_BSKIP := {| a, x | HB_SYMBOL_UNUSED( a ), dbSkip( x ) }
|
||||
@@ -813,7 +715,7 @@ FUNCTION InitList
|
||||
|
||||
FUNCTION Defpict( mslist, i, maxlen )
|
||||
|
||||
// LOCAL spict, fldd, fldtype := FIELDTYPE( i ), fldlen := FIELDSIZE( i )
|
||||
// LOCAL spict, fldd, fldtype := hb_FieldType( i ), fldlen := hb_FieldLen( i )
|
||||
LOCAL spict, fldd, fldtype := LI_MSTYP[ i ], fldlen := LI_MSLEN[ i ]
|
||||
DO CASE
|
||||
CASE fldtype == "C"
|
||||
|
||||
@@ -192,9 +192,6 @@ FUNCTION Dispose()
|
||||
|
||||
::cBlock := NIL
|
||||
IF ::hFile != F_ERROR
|
||||
IF ::cMode == "W" .AND. ::nError != 0
|
||||
::Write( Chr( 26 ) ) // Do not forget EOF marker
|
||||
ENDIF
|
||||
IF ! FClose( ::hFile )
|
||||
::nError := FError()
|
||||
? "Dos Error closing ", ::cFileName, " Code ", ::nError
|
||||
@@ -242,15 +239,15 @@ FUNCTION READ()
|
||||
::cBlock := ""
|
||||
cRet += ::Read() // Read the rest
|
||||
IF ! ::lEoF
|
||||
::nLine -- // Adjust erroneous line count
|
||||
::nLine-- // Adjust erroneous line count
|
||||
ENDIF
|
||||
ENDIF
|
||||
nEoFPos := At( Chr( 26 ), cRet )
|
||||
nEoFPos := hb_BAt( Chr( 26 ), cRet )
|
||||
IF nEoFPos != 0 // End of file read
|
||||
cRet := SubStr( cRet, 1, nEoFPos - 1 )
|
||||
cRet := hb_BSubStr( cRet, 1, nEoFPos - 1 )
|
||||
::lEoF := .T.
|
||||
ENDIF
|
||||
cRet := StrTran( cRet, Chr( 13 ), "" ) // Remove CR
|
||||
cRet := StrTran( cRet, Chr( 13 ) ) // Remove CR
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
@@ -274,9 +271,9 @@ FUNCTION WriteLn( xTxt, lCRLF )
|
||||
ELSEIF !( ::cMode == "W" )
|
||||
? "File ", ::cFileName, " not opened for writing"
|
||||
ELSE
|
||||
cBlock := ToChar( xTxt ) // Convert to string
|
||||
cBlock := hb_ValToExp( xTxt ) // Convert to string
|
||||
IF Default( lCRLF, .T. )
|
||||
cBlock += Chr( 10 ) + Chr( 13 )
|
||||
cBlock += hb_eol()
|
||||
ENDIF
|
||||
FWrite( ::hFile, cBlock, Len( cBlock ) )
|
||||
IF FError() != 0
|
||||
|
||||
@@ -83,21 +83,20 @@ STATIC FUNCTION New( cFileName )
|
||||
cFile := Space( 256 )
|
||||
Done := ( FRead( hFile, @cFile, 256 ) <= 0 )
|
||||
|
||||
cFile := StrTran( cFile, Chr( 10 ), "" ) // so we can just search for CHR(13)
|
||||
cFile := StrTran( cFile, Chr( 13 ) ) // so we can just search for Chr( 10 )
|
||||
|
||||
// prepend last read
|
||||
cFile := cLine + cFile
|
||||
DO WHILE !Empty( cFile )
|
||||
IF ( nPos := At( Chr(13 ), cFile ) ) > 0
|
||||
DO WHILE ! Empty( cFile )
|
||||
IF ( nPos := At( Chr( 10 ), cFile ) ) > 0
|
||||
cLine := Left( cFile, nPos - 1 )
|
||||
cFile := SubStr( cFile, nPos + 1 )
|
||||
|
||||
IF !Empty( cLine )
|
||||
IF Left( cLine, 1 ) == "[" // new section
|
||||
IF ( nPos := At( "]", cLine ) ) > 1
|
||||
cLine := SubStr( cLine, 2, nPos - 2 );
|
||||
|
||||
else
|
||||
cLine := SubStr( cLine, 2, nPos - 2 )
|
||||
ELSE
|
||||
cLine := SubStr( cLine, 2 )
|
||||
ENDIF
|
||||
|
||||
@@ -336,22 +335,22 @@ STATIC PROCEDURE UpdateFile()
|
||||
|
||||
FOR i := 1 TO Len( ::Contents )
|
||||
IF ::Contents[ i ][ 1 ] == NIL
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ] + Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ] + hb_eol() )
|
||||
|
||||
ELSEIF ValType( ::Contents[ i ][ 2 ] ) == "A"
|
||||
FWrite( hFile, "[" + ::Contents[ i ][ 1 ] + "]" + Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, "[" + ::Contents[ i ][ 1 ] + "]" + hb_eol() )
|
||||
FOR j := 1 TO Len( ::Contents[ i ][ 2 ] )
|
||||
|
||||
IF ::Contents[ i ][ 2 ][ j ][ 1 ] == NIL
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ][ j ][ 2 ] + Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ][ j ][ 2 ] + hb_eol() )
|
||||
ELSE
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ][ j ][ 1 ] + "=" + ::Contents[ i ][ 2 ][ j ][ 2 ] + Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, ::Contents[ i ][ 2 ][ j ][ 1 ] + "=" + ::Contents[ i ][ 2 ][ j ][ 2 ] + hb_eol() )
|
||||
ENDIF
|
||||
NEXT
|
||||
FWrite( hFile, Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, hb_eol() )
|
||||
|
||||
ELSEIF ValType( ::Contents[ i ][ 2 ] ) == "C"
|
||||
FWrite( hFile, ::Contents[ i ][ 1 ] + "=" + ::Contents[ i ][ 2 ] + Chr( 13 ) + Chr( 10 ) )
|
||||
FWrite( hFile, ::Contents[ i ][ 1 ] + "=" + ::Contents[ i ][ 2 ] + hb_eol() )
|
||||
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/* Testing Harbour keyboard input. */
|
||||
/* Testing Harbour keyboard input. */
|
||||
|
||||
/* Harbour Project source code
|
||||
http://harbour-project.org/
|
||||
@@ -66,7 +66,11 @@ FUNCTION TEST( cText )
|
||||
Inkey( 2 )
|
||||
KEYBOARD cText
|
||||
DO WHILE NextKey() != 0
|
||||
cResult += Chr( Inkey () )
|
||||
#ifdef __HARBOUR__
|
||||
cResult += hb_keyChar( Inkey() )
|
||||
#else
|
||||
cResult += Chr( Inkey() )
|
||||
#endif
|
||||
ENDDO
|
||||
|
||||
RETURN "'" + cResult + "'"
|
||||
|
||||
@@ -145,10 +145,10 @@ PROCEDURE Main()
|
||||
Inkey( 0 )
|
||||
CLS
|
||||
|
||||
? "while !TESTDBF->( Eof() )"
|
||||
? "WHILE !TESTDBF->( EOF() )"
|
||||
? " ? TESTDBF->FIRST, TESTDBF->( RecNo() )"
|
||||
? " TESTDBF->( dbSkip() )"
|
||||
? "end"
|
||||
? "ENDDO"
|
||||
? ""
|
||||
WHILE !TESTDBF->( EOF() )
|
||||
? TESTDBF->FIRST, TESTDBF->( RecNo() )
|
||||
@@ -162,10 +162,10 @@ PROCEDURE Main()
|
||||
? "SET FILTER TO TESTDBF->AGE == 21"
|
||||
? "? TESTDBF->( dbFilter() )"
|
||||
? "TESTDBF->( dbGoTop() )"
|
||||
? "while !TESTDBF->( Eof() )"
|
||||
? "WHILE !TESTDBF->( EOF() )"
|
||||
? " ? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )"
|
||||
? " TESTDBF->( dbSkip() )"
|
||||
? "enddo"
|
||||
? "ENDDO"
|
||||
? "SET FILTER TO"
|
||||
? ""
|
||||
SET FILTER TO TESTDBF->AGE == 21
|
||||
@@ -183,10 +183,10 @@ PROCEDURE Main()
|
||||
|
||||
? "TESTDBF->( Found() )"
|
||||
? "LOCATE FOR TESTDBF->AGE == 23"
|
||||
? "while TESTDBF->( Found() )"
|
||||
? "WHILE TESTDBF->( Found() )"
|
||||
? " ? TESTDBF->FIRST, TESTDBF->AGE, TESTDBF->( RecNo() )"
|
||||
? " CONTINUE"
|
||||
? "end"
|
||||
? "ENDDO"
|
||||
TESTDBF->( Found() )
|
||||
LOCATE FOR TESTDBF->AGE == 23
|
||||
WHILE TESTDBF->( Found() )
|
||||
@@ -217,12 +217,13 @@ PROCEDURE Main()
|
||||
? ' { "Memo", "M", 10, 0 }, ;'
|
||||
? ' { "Student", "L", 1, 0 } },, .T., "newrdd" )'
|
||||
? 'SET CENTURY ON'
|
||||
dbCreate( "newrdd", { { "First_Name", "C", 20, 0 }, ;
|
||||
dbCreate( "newrdd", { ;
|
||||
{ "First_Name", "C", 20, 0 }, ;
|
||||
{ "Age", "N", 3, 0 }, ;
|
||||
{ "Date", "D", 8, 0 }, ;
|
||||
{ "Rate", "N", 6, 2 }, ;
|
||||
{ "Memo", "M", 10, 0 }, ;
|
||||
{ "Student", "L", 1, 0 } }, , .T. , "newrdd" )
|
||||
{ "Student", "L", 1, 0 } }, "DBFCDX", .T. , "newrdd" )
|
||||
SET CENTURY ON
|
||||
? "lUpdate:", NEWRDD->( LUpdate() )
|
||||
|
||||
@@ -233,7 +234,7 @@ PROCEDURE Main()
|
||||
? 'Select( "TESTDBF" )'
|
||||
? "SET FILTER TO TESTDBF->SALARY > 120000"
|
||||
? "TESTDBF->( dbGoTop() )"
|
||||
? "while !TESTDBF->( Eof() )"
|
||||
? "WHILE !TESTDBF->( EOF() )"
|
||||
? " NEWRDD->( dbAppend() )"
|
||||
? " NEWRDD->FIRST_NAME := TESTDBF->FIRST"
|
||||
? " NEWRDD->AGE := TESTDBF->AGE"
|
||||
@@ -244,7 +245,7 @@ PROCEDURE Main()
|
||||
? " TESTDBF->STREET"
|
||||
? " NEWRDD->STUDENT := TESTDBF->MARRIED"
|
||||
? " TESTDBF->( dbSkip() )"
|
||||
? "end"
|
||||
? "ENDDO"
|
||||
? "SET FILTER TO"
|
||||
? "? NEWRDD->( RecCount() )"
|
||||
? "NEWRDD->( dbGoTop() )"
|
||||
@@ -289,9 +290,9 @@ PROCEDURE Main()
|
||||
|
||||
aArray := NEWRDD->( dbRLockList() )
|
||||
? "aArray := NEWRDD->( dbRLockList() )"
|
||||
? "for nI := 1 to Len( aArray )"
|
||||
? "FOR nI := 1 TO Len( aArray )"
|
||||
? " ? aArray[ nI ]"
|
||||
? "next"
|
||||
? "NEXT"
|
||||
? "dbRLockList(): "
|
||||
FOR nI := 1 TO Len( aArray )
|
||||
? aArray[ nI ]
|
||||
@@ -308,7 +309,7 @@ PROCEDURE Main()
|
||||
? '? "RecCount:", NEWRDD->( RecCount() )'
|
||||
? ""
|
||||
NEWRDD->( dbCloseArea() )
|
||||
dbUseArea( .T. , "DBF", "newrdd", "NEWRDD", .F. , .F. )
|
||||
dbUseArea( .T. , "DBFCDX", "newrdd", "NEWRDD", .F. , .F. )
|
||||
|
||||
? "Press any key to continue..."
|
||||
Inkey( 0 )
|
||||
@@ -338,17 +339,17 @@ PROCEDURE Main()
|
||||
? 'SORT ON FIRST /DC, AGE /D TO NEWRDD'
|
||||
? 'dbUseArea( .T., "DBF", "newrdd", "NEWRDD", .F., .F. )'
|
||||
? '? "RecCount:", NEWRDD->( RecCount() )'
|
||||
? 'for nI := 1 to 8'
|
||||
? 'FOR nI := 1 TO 8'
|
||||
? ' ? NEWRDD->FIRST, NEWRDD->AGE'
|
||||
? ' NEWRDD->( dbSkip() )'
|
||||
? 'next'
|
||||
? 'NEXT'
|
||||
? '? "..."'
|
||||
? 'NEWRDD->( dbGoBottom() )'
|
||||
? 'NEWRDD->( dbSkip( -8 ) )'
|
||||
? 'for nI := 1 to 8'
|
||||
? 'FOR nI := 1 TO 8'
|
||||
? ' ? NEWRDD->FIRST, NEWRDD->AGE'
|
||||
? ' NEWRDD->( dbSkip() )'
|
||||
? 'next'
|
||||
? 'NEXT'
|
||||
|
||||
? "Press any key to continue..."
|
||||
Inkey( 0 )
|
||||
@@ -356,7 +357,7 @@ PROCEDURE Main()
|
||||
|
||||
NEWRDD->( dbCloseArea() )
|
||||
SELECT( "TESTDBF" )
|
||||
SORT ON FIRST /DC, AGE /D TO NEWRDD
|
||||
SORT ON FIRST /DC, AGE /D TO newrdd
|
||||
|
||||
dbUseArea( .T. , "DBF", "newrdd", "NEWRDD", .F. , .F. )
|
||||
? "RecCount:", NEWRDD->( RecCount() )
|
||||
|
||||
@@ -80,9 +80,10 @@ PROCEDURE Main( cFrom )
|
||||
ELSE
|
||||
FReadStr( hFile, 2 )
|
||||
cBlock := FReadStr( hFile, 4 )
|
||||
nSymbols := hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
nSymbols := ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 4, 1 ) ) * 16777216
|
||||
|
||||
?? "+--------------------------+------------+---------------------------------+"
|
||||
@@ -110,9 +111,10 @@ PROCEDURE Main( cFrom )
|
||||
IF m $ "Yy"
|
||||
?
|
||||
cBlock := FReadStr( hFile, 4 )
|
||||
nFuncs := hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
nFuncs := ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 4, 1 ) ) * 16777216
|
||||
FOR n := 1 TO nFuncs
|
||||
cBlock := FReadStr( hFile, 1 )
|
||||
@@ -122,9 +124,10 @@ PROCEDURE Main( cFrom )
|
||||
cBlock := FReadStr( hFile, 1 )
|
||||
ENDDO
|
||||
cBlock := FReadStr( hFile, 4 )
|
||||
nLenCount := hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
nLenCount := ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 1, 1 ) ) + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 2, 1 ) ) * 256 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 3, 1 ) ) * 65536 + ;
|
||||
hb_BCode( hb_BSubStr( cBlock, 4, 1 ) ) * 16777216
|
||||
|
||||
? "Symbol:", cSymbol
|
||||
@@ -134,7 +137,7 @@ PROCEDURE Main( cFrom )
|
||||
FOR m := 1 TO nLenCount
|
||||
cBlock := FReadStr( hFile, 1 )
|
||||
nVal := hb_BCode( cBlock )
|
||||
?? Hex2Val( nVal )
|
||||
?? hb_NumToHex( nVal, 2 )
|
||||
IF nVal > 32 .AND. nVal < 128
|
||||
?? "(" + cBlock + ")"
|
||||
ENDIF
|
||||
@@ -156,7 +159,7 @@ PROCEDURE PrintItem( cSymbol, nType, nScope )
|
||||
|
||||
LOCAL aTypes := { "NOLINK", "FUNC", "EXTERN", "SYM_DEF" }
|
||||
|
||||
? "| " + PadR( cSymbol,25 ) + "| " + ;
|
||||
? "| " + PadR( cSymbol, 25 ) + "| " + ;
|
||||
PadR( hb_ntos( nType - 1 ) + " (" + aTypes[ nType ] + ")", 11 ) + "| " + ;
|
||||
PadR( DecodeScope( nScope ), 32 ) + "|"
|
||||
|
||||
@@ -173,12 +176,4 @@ FUNCTION DecodeScope( nScope )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
RETURN Hex2Val( nScope ) + iif( Empty( cScope ), "", " (" + SubStr( cScope, 2 ) + ")" )
|
||||
|
||||
FUNCTION Hex2Val( nVal )
|
||||
|
||||
RETURN HexDigit( Int( nVal / 16 ) ) + HexDigit( Int( nVal % 16 ) )
|
||||
|
||||
FUNCTION HexDigit( nDigit )
|
||||
|
||||
RETURN iif( nDigit >= 10, Chr( 55 + nDigit ), Chr( 48 + nDigit ) )
|
||||
RETURN hb_NumToHex( nScope, 2 ) + iif( Empty( cScope ), "", " (" + SubStr( cScope, 2 ) + ")" )
|
||||
|
||||
@@ -136,9 +136,6 @@ FUNCTION Dispose()
|
||||
|
||||
::cBlock := NIL
|
||||
IF ::hFile != F_ERROR
|
||||
IF ::cMode == "W" .AND. ::nError != 0
|
||||
::Write( Chr( 26 ) ) // Do not forget EOF marker
|
||||
ENDIF
|
||||
IF ! FClose( ::hFile )
|
||||
::nError := FError()
|
||||
? "Dos Error closing ", ::cFileName, " Code ", ::nError
|
||||
@@ -176,7 +173,7 @@ FUNCTION READ()
|
||||
ENDIF
|
||||
|
||||
IF ! ::lEoF
|
||||
::nLine := ::nLine + 1 // ++ not available
|
||||
::nLine++
|
||||
nCRPos := At( Chr( 10 ), ::cBlock )
|
||||
IF nCRPos != 0 // More than one line read
|
||||
cRet := SubStr( ::cBlock, 1, nCRPos - 1 )
|
||||
@@ -186,15 +183,15 @@ FUNCTION READ()
|
||||
::cBlock := ""
|
||||
cRet += ::Read() // Read the rest
|
||||
IF ! ::lEoF
|
||||
::nLine := ::nLine - 1 // Adjust erroneous line count
|
||||
::nLine-- // Adjust erroneous line count
|
||||
ENDIF
|
||||
ENDIF
|
||||
nEoFPos := At( Chr( 26 ), cRet )
|
||||
nEoFPos := hb_BAt( Chr( 26 ), cRet )
|
||||
IF nEoFPos != 0 // End of file read
|
||||
cRet := SubStr( cRet, 1, nEoFPos - 1 )
|
||||
cRet := hb_BSubStr( cRet, 1, nEoFPos - 1 )
|
||||
::lEoF := .T.
|
||||
ENDIF
|
||||
cRet := StrTran( cRet, Chr( 13 ), "" ) // Remove CR
|
||||
cRet := StrTran( cRet, Chr( 13 ) ) // Remove CR
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
@@ -218,9 +215,9 @@ FUNCTION WriteLn( xTxt, lCRLF )
|
||||
ELSEIF !( ::cMode == "W" )
|
||||
? "File ", ::cFileName, " not opened for writing"
|
||||
ELSE
|
||||
cBlock := ToChar( xTxt ) // Convert to string
|
||||
IF DEFAULT( lCRLF, .T. )
|
||||
cBlock += Chr( 10 ) // +chr(13) ??
|
||||
cBlock := hb_ValToExp( xTxt ) // Convert to string
|
||||
IF Default( lCRLF, .T. )
|
||||
cBlock += hb_eol()
|
||||
ENDIF
|
||||
FWrite( ::hFile, cBlock, Len( cBlock ) )
|
||||
IF FError() != 0
|
||||
@@ -235,7 +232,7 @@ FUNCTION WriteLn( xTxt, lCRLF )
|
||||
// Go to a specified line number
|
||||
//
|
||||
|
||||
FUNCTION GOTO( nLine )
|
||||
STATIC FUNCTION GOTO( nLine )
|
||||
|
||||
LOCAL self := QSelf()
|
||||
LOCAL nWhere := 1
|
||||
@@ -256,39 +253,3 @@ FUNCTION GOTO( nLine )
|
||||
ENDIF
|
||||
|
||||
RETURN ! ::lEoF
|
||||
|
||||
FUNCTION ToChar( xVal )
|
||||
|
||||
LOCAL cType := ValType( xVal )
|
||||
|
||||
DO CASE
|
||||
CASE cType == "U"
|
||||
RETURN "NIL"
|
||||
|
||||
CASE cType == "A"
|
||||
RETURN "{}"
|
||||
|
||||
CASE cType == "B"
|
||||
RETURN "{|| }"
|
||||
|
||||
CASE cType == "C"
|
||||
RETURN xVal
|
||||
|
||||
CASE cType == "D"
|
||||
RETURN DToC( xVal )
|
||||
|
||||
CASE cType == "L"
|
||||
RETURN iif( xVal, ".T.", ".F." )
|
||||
|
||||
CASE cType == "M"
|
||||
RETURN xVal
|
||||
|
||||
CASE cType == "N"
|
||||
RETURN Str( xVal )
|
||||
|
||||
CASE cType == "O"
|
||||
RETURN "{::}"
|
||||
|
||||
ENDCASE
|
||||
|
||||
RETURN "?"
|
||||
|
||||
@@ -9,9 +9,9 @@ PROCEDURE Main()
|
||||
StrDump( s )
|
||||
? s
|
||||
|
||||
? Chr( 34 ) + LTrim( s ) + Chr( 34 )
|
||||
? Chr( 34 ) + RTrim( s ) + Chr( 34 )
|
||||
? Chr( 34 ) + AllTrim( s ) + Chr( 34 )
|
||||
? '"' + LTrim( s ) + '"'
|
||||
? '"' + RTrim( s ) + '"'
|
||||
? '"' + AllTrim( s ) + '"'
|
||||
|
||||
RETURN
|
||||
|
||||
|
||||
@@ -11,8 +11,8 @@
|
||||
|
||||
PROCEDURE Main()
|
||||
|
||||
? Chr( 34 ) + Version() + Chr( 34 )
|
||||
? Chr( 34 ) + hb_compiler() + Chr( 34 )
|
||||
? Chr( 34 ) + OS() + Chr( 34 )
|
||||
? '"' + Version() + '"'
|
||||
? '"' + hb_compiler() + '"'
|
||||
? '"' + OS() + '"'
|
||||
|
||||
RETURN
|
||||
|
||||
Reference in New Issue
Block a user