2012-04-19 02:23 UTC+0200 Viktor Szakats (harbour syenar.net)
* src/3rd/pcre/Makefile
+ enabled UTF8 support in PCRE (binary size overhead ~150KB)
+ enabled unicode properties support in PCRE (binary size overhead ~50KB)
* src/rtl/hbregex.c
+ added commented logic to detect UTF8 support in PCRE
and enable UTF8 mode when the HVM CP is also UTF8. Latter
logic is missing yet and subject to review.
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
* contrib/hbnetio/utils/hbnetio/netiocon.prg
* contrib/hbnetio/utils/hbnetio/netiomgm.prg
* contrib/hbrun/hbrun.prg
* tests/ac_test.prg
* tests/ac_test2.prg
* tests/tstmacro.prg
* tests/tstalias.prg
* formatted using automatic tools
This commit is contained in:
@@ -16,6 +16,26 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-04-19 02:23 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* src/3rd/pcre/Makefile
|
||||
+ enabled UTF8 support in PCRE (binary size overhead ~150KB)
|
||||
+ enabled unicode properties support in PCRE (binary size overhead ~50KB)
|
||||
|
||||
* src/rtl/hbregex.c
|
||||
+ added commented logic to detect UTF8 support in PCRE
|
||||
and enable UTF8 mode when the HVM CP is also UTF8. Latter
|
||||
logic is missing yet and subject to review.
|
||||
|
||||
* contrib/hbnetio/utils/hbnetio/netiosrv.prg
|
||||
* contrib/hbnetio/utils/hbnetio/netiocon.prg
|
||||
* contrib/hbnetio/utils/hbnetio/netiomgm.prg
|
||||
* contrib/hbrun/hbrun.prg
|
||||
* tests/ac_test.prg
|
||||
* tests/ac_test2.prg
|
||||
* tests/tstmacro.prg
|
||||
* tests/tstalias.prg
|
||||
* formatted using automatic tools
|
||||
|
||||
2012-04-18 15:14 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* contrib/xhb/hblognet.prg
|
||||
* contrib/hbssl/tests/test.prg
|
||||
|
||||
@@ -164,9 +164,9 @@ PROCEDURE hbnetiocon_cmdUI( cIP, nPort, cPassword )
|
||||
/* Adjusted the positioning of cursor on navigate through history. [vailtom] */
|
||||
STATIC PROCEDURE ManageCursor( cCommand )
|
||||
|
||||
hb_keyPut( K_HOME )
|
||||
hb_KeyPut( K_HOME )
|
||||
IF ! Empty( cCommand )
|
||||
hb_keyPut( K_END )
|
||||
hb_KeyPut( K_END )
|
||||
ENDIF
|
||||
|
||||
RETURN
|
||||
|
||||
@@ -252,7 +252,7 @@ STATIC PROCEDURE DisconnectLow( netiocli )
|
||||
netio_OpenItemStream( netiocli[ _NETIOCLI_pConnection ], "hbnetiomgm_regnotif", .F. )
|
||||
|
||||
netiocli[ _NETIOCLI_lWaitStream ] := .F.
|
||||
hb_ThreadJoin( netiocli[ _NETIOCLI_hWaitThread ] )
|
||||
hb_threadJoin( netiocli[ _NETIOCLI_hWaitThread ] )
|
||||
|
||||
netiocli[ _NETIOCLI_pConnection ] := NIL
|
||||
|
||||
@@ -264,7 +264,7 @@ STATIC PROCEDURE DisconnectLow( netiocli )
|
||||
STATIC FUNCTION MyClientInfo()
|
||||
LOCAL hInfo := { => }
|
||||
|
||||
hb_hKeepOrder( hInfo, .T. )
|
||||
hb_HKeepOrder( hInfo, .T. )
|
||||
|
||||
hInfo[ "OS()" ] := OS()
|
||||
hInfo[ "Version()" ] := Version()
|
||||
|
||||
@@ -108,7 +108,7 @@ PROCEDURE netiosrv_Main( lUI, ... )
|
||||
netiosrv[ _NETIOSRV_cName ] := "Data"
|
||||
netiosrv[ _NETIOSRV_nPort ] := _NETIOSRV_PORT_DEF
|
||||
netiosrv[ _NETIOSRV_cIFAddr ] := _NETIOSRV_IPV4_DEF
|
||||
netiosrv[ _NETIOSRV_cRootDir ] := hb_dirBase() + "data"
|
||||
netiosrv[ _NETIOSRV_cRootDir ] := hb_DirBase() + "data"
|
||||
netiosrv[ _NETIOSRV_lRPC ] := .F.
|
||||
netiosrv[ _NETIOSRV_lEncryption ] := .F.
|
||||
netiosrv[ _NETIOSRV_lAcceptConn ] := .T.
|
||||
@@ -179,7 +179,7 @@ PROCEDURE netiosrv_Main( lUI, ... )
|
||||
SWITCH cExt
|
||||
CASE ".prg"
|
||||
CASE ".hbs"
|
||||
cFile := HB_COMPILEBUF( HB_ARGV( 0 ), "-n2", "-w", "-es2", "-q0",;
|
||||
cFile := hb_compileBuf( hb_argv( 0 ), "-n2", "-w", "-es2", "-q0",;
|
||||
"-D" + "__HBSCRIPT__HBNETIOSRV", netiosrv[ _NETIOSRV_cRPCFFileName ] )
|
||||
IF cFile != NIL
|
||||
netiosrv[ _NETIOSRV_hRPCFHRB ] := hb_hrbLoad( HB_HRB_BIND_FORCELOCAL, cFile )
|
||||
@@ -211,7 +211,7 @@ PROCEDURE netiosrv_Main( lUI, ... )
|
||||
netiosrv_LogEvent( hb_StrFormat( "Configuration loaded: %1$s", netiosrv_ConfName() ) )
|
||||
ENDIF
|
||||
|
||||
hb_dirBuild( netiosrv[ _NETIOSRV_cRootDir ] )
|
||||
hb_DirBuild( netiosrv[ _NETIOSRV_cRootDir ] )
|
||||
|
||||
netiosrv[ _NETIOSRV_pListenSocket ] := ;
|
||||
netio_mtserver( netiosrv[ _NETIOSRV_nPort ],;
|
||||
@@ -398,7 +398,7 @@ STATIC PROCEDURE netiosrv_notifyclients( netiomgm, cMsg )
|
||||
ENDIF
|
||||
NEXT
|
||||
|
||||
hb_mutexUnLock( netiomgm[ _NETIOSRV_mtxNotifStream ] )
|
||||
hb_mutexUnlock( netiomgm[ _NETIOSRV_mtxNotifStream ] )
|
||||
|
||||
RETURN
|
||||
|
||||
@@ -483,7 +483,7 @@ STATIC PROCEDURE netiosrv_conn_register( netiosrv, pConnectionSocket )
|
||||
LOCAL nconn[ _NETIOSRV_CONN_MAX_ ]
|
||||
|
||||
nconn[ _NETIOSRV_CONN_pConnection ] := pConnectionSocket
|
||||
nconn[ _NETIOSRV_CONN_nThreadID ] := hb_threadID()
|
||||
nconn[ _NETIOSRV_CONN_nThreadID ] := hb_threadId()
|
||||
nconn[ _NETIOSRV_CONN_tStart ] := hb_DateTime()
|
||||
|
||||
hb_mutexLock( netiosrv[ _NETIOSRV_mtxConnection ] )
|
||||
@@ -511,7 +511,7 @@ STATIC PROCEDURE netiosrv_conn_unregister( netiosrv, pConnectionSocket )
|
||||
/* RPC management interface */
|
||||
|
||||
STATIC FUNCTION netiomgm_rpc_regnotif( netiomgm, pConnSock, nStreamID, lRegister )
|
||||
LOCAL index := hb_valToStr( pConnSock )
|
||||
LOCAL index := hb_ValToStr( pConnSock )
|
||||
LOCAL cli
|
||||
|
||||
SWITCH PCount()
|
||||
@@ -550,7 +550,7 @@ STATIC FUNCTION netiomgm_rpc_setclientinfo( netiosrv, hInfo )
|
||||
hb_mutexLock( netiosrv[ _NETIOSRV_mtxConnection ] )
|
||||
|
||||
FOR EACH nconn IN netiosrv[ _NETIOSRV_hConnection ]
|
||||
IF nconn[ _NETIOSRV_CONN_nThreadID ] == hb_threadID()
|
||||
IF nconn[ _NETIOSRV_CONN_nThreadID ] == hb_threadId()
|
||||
nconn[ _NETIOSRV_CONN_hInfo ] := hInfo
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
@@ -158,14 +158,14 @@ PROCEDURE _APPMAIN( cFile, ... )
|
||||
EXIT
|
||||
CASE ".prg"
|
||||
CASE ".hbs"
|
||||
IF Empty( getenv( "HBRUN_NOHEAD" ) )
|
||||
IF Empty( GetEnv( "HBRUN_NOHEAD" ) )
|
||||
hHeaders := __hbrun_CoreHeaderFiles() /* add core header files */
|
||||
ENDIF
|
||||
|
||||
cFile := HB_COMPILEBUF( hHeaders, hb_ProgName(), "-n2", "-w", "-es2", "-q0", ;
|
||||
cFile := hb_compileBuf( hHeaders, hb_ProgName(), "-n2", "-w", "-es2", "-q0", ;
|
||||
"-I" + hb_FNameDir( cFile ), "-D" + "__HBSCRIPT__HBRUN", cFile )
|
||||
IF cFile == NIL
|
||||
ERRORLEVEL( 1 )
|
||||
ErrorLevel( 1 )
|
||||
EXIT
|
||||
ENDIF
|
||||
OTHERWISE
|
||||
@@ -346,7 +346,7 @@ STATIC PROCEDURE hbrun_Prompt( aParams, cCommand )
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
hb_GTInfo( HB_GTI_ICONRES, 1 )
|
||||
hb_gtInfo( HB_GTI_ICONRES, 1 )
|
||||
|
||||
CLEAR SCREEN
|
||||
SET SCOREBOARD OFF
|
||||
@@ -354,7 +354,7 @@ STATIC PROCEDURE hbrun_Prompt( aParams, cCommand )
|
||||
|
||||
hbrun_HistoryLoad()
|
||||
|
||||
AAdd( s_aHistory, padr( "quit", HB_LINE_LEN ) )
|
||||
AAdd( s_aHistory, PadR( "quit", HB_LINE_LEN ) )
|
||||
nHistIndex := Len( s_aHistory ) + 1
|
||||
|
||||
IF ISCHARACTER( cCommand )
|
||||
@@ -398,9 +398,9 @@ STATIC PROCEDURE hbrun_Prompt( aParams, cCommand )
|
||||
{|| iif( nHistIndex > 1, ;
|
||||
cLine := s_aHistory[ --nHistIndex ], ) } )
|
||||
bKeyDown := SetKey( K_DOWN, ;
|
||||
{|| cLine := iif( nHistIndex < LEN( s_aHistory ), ;
|
||||
{|| cLine := iif( nHistIndex < Len( s_aHistory ), ;
|
||||
s_aHistory[ ++nHistIndex ], ;
|
||||
( nHistIndex := LEN( s_aHistory ) + 1, Space( HB_LINE_LEN ) ) ) } )
|
||||
( nHistIndex := Len( s_aHistory ) + 1, Space( HB_LINE_Len ) ) ) } )
|
||||
bKeyResize := SetKey( HB_K_RESIZE,;
|
||||
{|| lResize := .T., hb_KeyPut( K_ENTER ) } )
|
||||
|
||||
@@ -524,10 +524,10 @@ STATIC PROCEDURE hbrun_Info( cCommand )
|
||||
ENDIF
|
||||
IF Used()
|
||||
hb_DispOutAt( 1, 0, ;
|
||||
PadR( "RDD: " + PadR( RddName(), 6 ) + ;
|
||||
PadR( "RDD: " + PadR( rddName(), 6 ) + ;
|
||||
" | Area:" + Str( Select(), 3 ) + ;
|
||||
" | Dbf: " + PadR( Alias(), 10 ) + ;
|
||||
" | Index: " + PadR( OrdName( IndexOrd() ), 8 ) + ;
|
||||
" | Index: " + PadR( ordName( IndexOrd() ), 8 ) + ;
|
||||
" | # " + Str( RecNo(), 7 ) + "/" + Str( RecCount(), 7 ), ;
|
||||
MaxCol() + 1 ), "N/BG" )
|
||||
ELSE
|
||||
@@ -576,7 +576,7 @@ STATIC PROCEDURE hbrun_Err( oErr, cCommand )
|
||||
IF ISARRAY( oErr:Args ) .AND. Len( oErr:Args ) > 0
|
||||
cMessage += ";Arguments:"
|
||||
FOR EACH xArg IN oErr:Args
|
||||
cMessage += ";" + HB_CStr( xArg )
|
||||
cMessage += ";" + hb_CStr( xArg )
|
||||
NEXT
|
||||
ENDIF
|
||||
ELSEIF ISCHARACTER( oErr )
|
||||
@@ -586,7 +586,7 @@ STATIC PROCEDURE hbrun_Err( oErr, cCommand )
|
||||
|
||||
Alert( cMessage )
|
||||
|
||||
BREAK( oErr )
|
||||
Break( oErr )
|
||||
|
||||
/* ********************************************************************** */
|
||||
|
||||
@@ -604,7 +604,7 @@ STATIC PROCEDURE hbrun_Exec( cCommand )
|
||||
|
||||
cHRB := hb_compileFromBuf( cFunc, hb_ProgName(), "-n2", "-q2" )
|
||||
IF cHRB == NIL
|
||||
EVAL( ErrorBlock(), "Syntax error." )
|
||||
Eval( ErrorBlock(), "Syntax error." )
|
||||
ELSE
|
||||
pHRB := hb_hrbLoad( cHRB )
|
||||
IF pHrb != NIL
|
||||
@@ -622,7 +622,7 @@ STATIC PROCEDURE hbrun_Exec( cCommand )
|
||||
|
||||
ENDSEQUENCE
|
||||
|
||||
__MVSETBASE()
|
||||
__mvSetBase()
|
||||
|
||||
RETURN
|
||||
|
||||
@@ -694,11 +694,11 @@ STATIC FUNCTION hbrun_HistoryFileName()
|
||||
cDir := GetEnv( cEnvVar ) + hb_ps() + ".harbour"
|
||||
#endif
|
||||
ELSE
|
||||
cDir := hb_dirBase()
|
||||
cDir := hb_DirBase()
|
||||
ENDIF
|
||||
|
||||
IF ! hb_dirExists( cDir )
|
||||
hb_dirCreate( cDir )
|
||||
IF ! hb_DirExists( cDir )
|
||||
hb_DirCreate( cDir )
|
||||
ENDIF
|
||||
|
||||
RETURN cDir + hb_ps() + cFileName
|
||||
|
||||
@@ -36,6 +36,7 @@ LIBNAME := hbpcre
|
||||
ifneq ($(HB_HAS_PCRE_LOCAL),)
|
||||
|
||||
HB_CFLAGS += -DHAVE_STDINT_H=0
|
||||
HB_CFLAGS += -DSUPPORT_UTF -DSUPPORT_UCP
|
||||
# only needed for win/wce, for other platforms this is noop
|
||||
HB_CFLAGS_STA := -DPCRE_STATIC
|
||||
|
||||
|
||||
@@ -80,6 +80,22 @@ static int hb_regcomp( PHB_REGEX pRegEx, const char * szRegEx )
|
||||
pRegEx->iEFlags = ( ( pRegEx->iFlags & HBREG_NOTBOL ) ? PCRE_NOTBOL : 0 ) |
|
||||
( ( pRegEx->iFlags & HBREG_NOTEOL ) ? PCRE_NOTEOL : 0 );
|
||||
|
||||
#if 0
|
||||
/* detect UTF-8 support. */
|
||||
{
|
||||
int fUTF8Support;
|
||||
# if defined( PCRE_CONFIG_UTF8 )
|
||||
if( pcre_config( PCRE_CONFIG_UTF8, &fUTF8Support ) != 0 )
|
||||
fUTF8Support = 0;
|
||||
# else
|
||||
fUTF8Support = 0;
|
||||
# endif
|
||||
/* use UTF8 in pcre when available and HVM CP is also UTF8. */
|
||||
if( fUTF8Support && hb_cdpIsUTF8() /* TODO */ )
|
||||
iCFlags |= PCRE_UTF8;
|
||||
}
|
||||
#endif
|
||||
|
||||
pRegEx->re_pcre = pcre_compile( szRegEx, iCFlags, &szError,
|
||||
&iErrOffset, pCharTable );
|
||||
return pRegEx->re_pcre ? 0 : -1;
|
||||
|
||||
@@ -2,232 +2,235 @@
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
*+====================================================================
|
||||
*+
|
||||
*+ Source Module => ac_test.prg
|
||||
*+
|
||||
*+ Released to Public Domain.
|
||||
*+
|
||||
*+ Functions: Procedure test()
|
||||
*+ Function cUserFunction()
|
||||
*+
|
||||
*+ Tables: use vendor exclusive
|
||||
*+
|
||||
*+ Reformatted by Click! 1.10 on Aug-13-1997 at 11:39 pm
|
||||
*+
|
||||
*+====================================================================
|
||||
//+====================================================================
|
||||
//+
|
||||
//+ Source Module => ac_test.prg
|
||||
//+
|
||||
//+ Released to Public Domain.
|
||||
//+
|
||||
//+ Functions: Procedure test()
|
||||
//+ Function cUserFunction()
|
||||
//+
|
||||
//+ Tables: use vendor exclusive
|
||||
//+
|
||||
//+ Reformatted by Click! 1.10 on Aug-13-1997 at 11:39 pm
|
||||
//+
|
||||
//+====================================================================
|
||||
|
||||
#include "achoice.ch"
|
||||
#include "inkey.ch"
|
||||
|
||||
*+--------------------------------------------------------------------
|
||||
*+
|
||||
*+ Procedure test()
|
||||
*+
|
||||
*+--------------------------------------------------------------------
|
||||
*+
|
||||
procedure main()
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
//+ Procedure test()
|
||||
//+
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
|
||||
local aPrompts := {;
|
||||
"AGRI-PLANTS" ,;
|
||||
"ALAN R. SMITH GREENHOUSES" ,;
|
||||
"ALLAN MURRAY NURSERY, INC." ,;
|
||||
"APOPKA FOREST" ,;
|
||||
"LIGHT HOUSE NURSERIES" ,;
|
||||
"BAUCOM'S" ,;
|
||||
"BAY HILL NURSERY, INC." ,;
|
||||
"BAYWOOD NURSERIES" ,;
|
||||
"BIG OAK NURSERY" ,;
|
||||
"C & N NURSERY" ,;
|
||||
"CHARLES QUALITY PLANTS" ,;
|
||||
"CONNELL FARMS" ,;
|
||||
"DEWAR NURSERIES, INC." ,;
|
||||
"DIAMOND T NURSERY" ,;
|
||||
"DISTINCTIVE PALMS NURSERIES" ,;
|
||||
"DONKAY NURSERY" ,;
|
||||
"DOUG INGRAM & SONS NURSERY" ,;
|
||||
"DRIFTWOOD GARDENS, INC." ,;
|
||||
"ELVA PLANT NURSERY, INC." ,;
|
||||
"ERINON" ,;
|
||||
"EVANS NURSERY" ,;
|
||||
"FANCY PLANTS" ,;
|
||||
"FL.PLANT GROWERSCOOP" ,;
|
||||
"FLORIDA CACTUS INC." ,;
|
||||
"FLOWERING TREE GROWERS, INC." ,;
|
||||
"FLOWERWOOD NURSERY" ,;
|
||||
"FOLIAGE FACTORY TOO" ,;
|
||||
"GATOR GROWERS NURSERY, INC." ,;
|
||||
"GAZEBO LANDSCAPE DESIGN, INC." ,;
|
||||
"GEM ORNAMENTALS" ,;
|
||||
"GRANNY'S GARDEN" ,;
|
||||
"GRAY'S ORNAMENTALS" ,;
|
||||
"GREEN MASTERS INC." ,;
|
||||
"GREEN MEADOW NURSERY" ,;
|
||||
"PIXLEY'S PLANT PLACE" ,;
|
||||
"HARRISON'S NURSERY, INC." ,;
|
||||
"G & G FOLIAGE" ,;
|
||||
"IVEY'S NURSERY, INC." ,;
|
||||
"JB NURSERIES, INC." ,;
|
||||
"JON'S NURSERY" ,;
|
||||
"JONES & JONES NURSERY, INC." ,;
|
||||
"KAGER'S NURSERY" ,;
|
||||
"KIRKLAND'S NURSERY" ,;
|
||||
"LAND OF BROMELIADS" ,;
|
||||
"LANDSCAPE NURSERY, INC." ,;
|
||||
"LIEWALD'S NURSERY INC." ,;
|
||||
"LLOYD & RINGS NURSERY" ,;
|
||||
"LONG VAN DOUNG" ,;
|
||||
"MAPEL'S LANDSCAPE NURSERY" ,;
|
||||
"MILESTONE AGRICULTURE, INC." ,;
|
||||
"MOJICA NURSERY & FRUITS" ,;
|
||||
"NELSON'S ROSES" ,;
|
||||
"PARK GARDENS" ,;
|
||||
"PAUL LUKAS INC." ,;
|
||||
"PECKETT'S INC." ,;
|
||||
"PENANG NURSERY, INC." ,;
|
||||
"PINES III NURERIES" ,;
|
||||
"PINEVIEW NURSERY" ,;
|
||||
"POUL JENSEN NURSERY" ,;
|
||||
"R.P. WELKER" ,;
|
||||
"RICHARD ROGERS NURSERY, INC." ,;
|
||||
"SPRING HILL NURSERY" ,;
|
||||
"T.O. MAHAFFEY, JR." ,;
|
||||
"TUCKER NURSERY" ,;
|
||||
"TURTLE POND NURSERY" ,;
|
||||
"TUTTLE'S NURSERY INC." ,;
|
||||
"VALLEY CACTUS" ,;
|
||||
"WHISPER WINDS, INC." ,;
|
||||
"WHITE ROSE NURSERIES INC." ,;
|
||||
"WOODWAY" ,;
|
||||
"FLORI-DESIGN" ,;
|
||||
"GREEN ACRES FOLIAGE, INC" ,;
|
||||
"FLORAL EXPO" ,;
|
||||
"TORRES NURSERY" ,;
|
||||
"DARRYL KOON" ,;
|
||||
"TRISTAR NURSERY" ,;
|
||||
"KAY WEST NURSERY" ,;
|
||||
"JAYMAR NURSERY" ,;
|
||||
"J D F LANDSCAPE NURSERY" ,;
|
||||
"DEROOSE PLANTS, INC." ,;
|
||||
"THE TREEHOUSE" ,;
|
||||
"COSTELLO'S ARECAS, INC." ,;
|
||||
"FLORICO FOLIAGE" ,;
|
||||
"THE NATIVES" ,;
|
||||
"GREENS NURSERY" ,;
|
||||
"STEWART NURSERIES" ,;
|
||||
"G & T FOLIAGE, INC." ,;
|
||||
"GOOD TIMES NURSERY" ,;
|
||||
"CONCEPTS IN GREENERY, INC." ,;
|
||||
"DUNN BROTHERS CITRUS, INC." ,;
|
||||
"JOHN PLANK GREENHOUSES" ,;
|
||||
"GREENER PASTURES NURSERY" ,;
|
||||
"MULVEHILL NURSERY" ,;
|
||||
"A NU LEAF" ,;
|
||||
"IVY DESIGNS, INC." ,;
|
||||
"B & C TROPICALS" ,;
|
||||
"SPANISH RIVER NURSERY, INC." ,;
|
||||
"JACK CHRISTMAS & ASSOCIATES" ,;
|
||||
"SPECIALIST GROWERS" ,;
|
||||
"HOMRICH NURSERY, INC." ,;
|
||||
"COUNTRYSIDE FOLIAGE, INC." ,;
|
||||
"RFJ COMPANY" ,;
|
||||
"LAKE BRANTLEY PLANT CORP." ,;
|
||||
"MARISTYME" ,;
|
||||
"MERISTEM NURSERY, INC." ,;
|
||||
"TROPIC DECOR - EARL WILSON" ,;
|
||||
"URQUHART'S NURSERY" ,;
|
||||
"ACE PLANT NURSERY" ,;
|
||||
"HATTAWAYS GREENHOUSE, INC." ,;
|
||||
"Florida Plant Growers" ,;
|
||||
"Junior Nursery" ,;
|
||||
"Fox's Nurseries, Inc." ,;
|
||||
"Vaughan Nursery" ,;
|
||||
"MERRYGRO FARMS" ,;
|
||||
"ALL SEASONS NURSERY" ,;
|
||||
"BENCHMARK FOLIAGE" ,;
|
||||
"SAMMY'S NURSERY" ,;
|
||||
"SUNSHINE GROWERS" ,;
|
||||
"Blooming-Fields Nursery" }
|
||||
PROCEDURE main()
|
||||
|
||||
local aPermits := {}
|
||||
local x
|
||||
local nChoice
|
||||
local ncntr
|
||||
LOCAL aPrompts := { ;
|
||||
"AGRI-PLANTS" , ;
|
||||
"ALAN R. SMITH GREENHOUSES" , ;
|
||||
"ALLAN MURRAY NURSERY, INC." , ;
|
||||
"APOPKA FOREST" , ;
|
||||
"LIGHT HOUSE NURSERIES" , ;
|
||||
"BAUCOM'S" , ;
|
||||
"BAY HILL NURSERY, INC." , ;
|
||||
"BAYWOOD NURSERIES" , ;
|
||||
"BIG OAK NURSERY" , ;
|
||||
"C & N NURSERY" , ;
|
||||
"CHARLES QUALITY PLANTS" , ;
|
||||
"CONNELL FARMS" , ;
|
||||
"DEWAR NURSERIES, INC." , ;
|
||||
"DIAMOND T NURSERY" , ;
|
||||
"DISTINCTIVE PALMS NURSERIES" , ;
|
||||
"DONKAY NURSERY" , ;
|
||||
"DOUG INGRAM & SONS NURSERY" , ;
|
||||
"DRIFTWOOD GARDENS, INC." , ;
|
||||
"ELVA PLANT NURSERY, INC." , ;
|
||||
"ERINON" , ;
|
||||
"EVANS NURSERY" , ;
|
||||
"FANCY PLANTS" , ;
|
||||
"FL.PLANT GROWERSCOOP" , ;
|
||||
"FLORIDA CACTUS INC." , ;
|
||||
"FLOWERING TREE GROWERS, INC." , ;
|
||||
"FLOWERWOOD NURSERY" , ;
|
||||
"FOLIAGE FACTORY TOO" , ;
|
||||
"GATOR GROWERS NURSERY, INC." , ;
|
||||
"GAZEBO LANDSCAPE DESIGN, INC." , ;
|
||||
"GEM ORNAMENTALS" , ;
|
||||
"GRANNY'S GARDEN" , ;
|
||||
"GRAY'S ORNAMENTALS" , ;
|
||||
"GREEN MASTERS INC." , ;
|
||||
"GREEN MEADOW NURSERY" , ;
|
||||
"PIXLEY'S PLANT PLACE" , ;
|
||||
"HARRISON'S NURSERY, INC." , ;
|
||||
"G & G FOLIAGE" , ;
|
||||
"IVEY'S NURSERY, INC." , ;
|
||||
"JB NURSERIES, INC." , ;
|
||||
"JON'S NURSERY" , ;
|
||||
"JONES & JONES NURSERY, INC." , ;
|
||||
"KAGER'S NURSERY" , ;
|
||||
"KIRKLAND'S NURSERY" , ;
|
||||
"LAND OF BROMELIADS" , ;
|
||||
"LANDSCAPE NURSERY, INC." , ;
|
||||
"LIEWALD'S NURSERY INC." , ;
|
||||
"LLOYD & RINGS NURSERY" , ;
|
||||
"LONG VAN DOUNG" , ;
|
||||
"MAPEL'S LANDSCAPE NURSERY" , ;
|
||||
"MILESTONE AGRICULTURE, INC." , ;
|
||||
"MOJICA NURSERY & FRUITS" , ;
|
||||
"NELSON'S ROSES" , ;
|
||||
"PARK GARDENS" , ;
|
||||
"PAUL LUKAS INC." , ;
|
||||
"PECKETT'S INC." , ;
|
||||
"PENANG NURSERY, INC." , ;
|
||||
"PINES III NURERIES" , ;
|
||||
"PINEVIEW NURSERY" , ;
|
||||
"POUL JENSEN NURSERY" , ;
|
||||
"R.P. WELKER" , ;
|
||||
"RICHARD ROGERS NURSERY, INC." , ;
|
||||
"SPRING HILL NURSERY" , ;
|
||||
"T.O. MAHAFFEY, JR." , ;
|
||||
"TUCKER NURSERY" , ;
|
||||
"TURTLE POND NURSERY" , ;
|
||||
"TUTTLE'S NURSERY INC." , ;
|
||||
"VALLEY CACTUS" , ;
|
||||
"WHISPER WINDS, INC." , ;
|
||||
"WHITE ROSE NURSERIES INC." , ;
|
||||
"WOODWAY" , ;
|
||||
"FLORI-DESIGN" , ;
|
||||
"GREEN ACRES FOLIAGE, INC" , ;
|
||||
"FLORAL EXPO" , ;
|
||||
"TORRES NURSERY" , ;
|
||||
"DARRYL KOON" , ;
|
||||
"TRISTAR NURSERY" , ;
|
||||
"KAY WEST NURSERY" , ;
|
||||
"JAYMAR NURSERY" , ;
|
||||
"J D F LANDSCAPE NURSERY" , ;
|
||||
"DEROOSE PLANTS, INC." , ;
|
||||
"THE TREEHOUSE" , ;
|
||||
"COSTELLO'S ARECAS, INC." , ;
|
||||
"FLORICO FOLIAGE" , ;
|
||||
"THE NATIVES" , ;
|
||||
"GREENS NURSERY" , ;
|
||||
"STEWART NURSERIES" , ;
|
||||
"G & T FOLIAGE, INC." , ;
|
||||
"GOOD TIMES NURSERY" , ;
|
||||
"CONCEPTS IN GREENERY, INC." , ;
|
||||
"DUNN BROTHERS CITRUS, INC." , ;
|
||||
"JOHN PLANK GREENHOUSES" , ;
|
||||
"GREENER PASTURES NURSERY" , ;
|
||||
"MULVEHILL NURSERY" , ;
|
||||
"A NU LEAF" , ;
|
||||
"IVY DESIGNS, INC." , ;
|
||||
"B & C TROPICALS" , ;
|
||||
"SPANISH RIVER NURSERY, INC." , ;
|
||||
"JACK CHRISTMAS & ASSOCIATES" , ;
|
||||
"SPECIALIST GROWERS" , ;
|
||||
"HOMRICH NURSERY, INC." , ;
|
||||
"COUNTRYSIDE FOLIAGE, INC." , ;
|
||||
"RFJ COMPANY" , ;
|
||||
"LAKE BRANTLEY PLANT CORP." , ;
|
||||
"MARISTYME" , ;
|
||||
"MERISTEM NURSERY, INC." , ;
|
||||
"TROPIC DECOR - EARL WILSON" , ;
|
||||
"URQUHART'S NURSERY" , ;
|
||||
"ACE PLANT NURSERY" , ;
|
||||
"HATTAWAYS GREENHOUSE, INC." , ;
|
||||
"Florida Plant Growers" , ;
|
||||
"Junior Nursery" , ;
|
||||
"Fox's Nurseries, Inc." , ;
|
||||
"Vaughan Nursery" , ;
|
||||
"MERRYGRO FARMS" , ;
|
||||
"ALL SEASONS NURSERY" , ;
|
||||
"BENCHMARK FOLIAGE" , ;
|
||||
"SAMMY'S NURSERY" , ;
|
||||
"SUNSHINE GROWERS" , ;
|
||||
"Blooming-Fields Nursery" }
|
||||
|
||||
clear screen
|
||||
LOCAL aPermits := {}
|
||||
LOCAL x
|
||||
LOCAL nChoice
|
||||
LOCAL ncntr
|
||||
|
||||
setcolor( 'GB+/B,GR+/R,,,W/N' )
|
||||
CLEAR SCREEN
|
||||
|
||||
SET CURSOR ON
|
||||
SetColor( 'GB+/B,GR+/R,,,W/N' )
|
||||
|
||||
asize( aPermits, Len( aPrompts ) )
|
||||
SET CURSOR ON
|
||||
|
||||
for x := 1 to Len( aPrompts )
|
||||
aPermits[ x ] := !( 'V' $ aPrompts[ x ] )
|
||||
next
|
||||
ASize( aPermits, Len( aPrompts ) )
|
||||
|
||||
FOR x := 1 TO Len( aPrompts )
|
||||
aPermits[ x ] := !( 'V' $ aPrompts[ x ] )
|
||||
NEXT
|
||||
|
||||
#define TEST1
|
||||
#ifdef TEST1
|
||||
for ncntr := 1 to 17
|
||||
aPermits[ nCntr ] := .F.
|
||||
aPermits[ Len( aPrompts ) - nCntr + 1 ] := .F.
|
||||
next
|
||||
aPermits[ 32 ] := .F.
|
||||
aPermits[ 33 ] := .F.
|
||||
aPermits[ 34 ] := .F.
|
||||
FOR ncntr := 1 TO 17
|
||||
aPermits[ nCntr ] := .F.
|
||||
aPermits[ Len( aPrompts ) - nCntr + 1 ] := .F.
|
||||
NEXT
|
||||
aPermits[ 32 ] := .F.
|
||||
aPermits[ 33 ] := .F.
|
||||
aPermits[ 34 ] := .F.
|
||||
#endif
|
||||
|
||||
nChoice := achoice( 5, 10, 20, 70, aPrompts, aPermits, "cUserFunction" )
|
||||
nChoice := AChoice( 5, 10, 20, 70, aPrompts, aPermits, "cUserFunction" )
|
||||
|
||||
setpos( 0, 0 )
|
||||
// clear screen
|
||||
? nChoice
|
||||
SetPos( 0, 0 )
|
||||
// clear screen
|
||||
? nChoice
|
||||
|
||||
if nChoice > 0
|
||||
? aPrompts[ nChoice ]
|
||||
endif
|
||||
setpos( maxrow() - 2, 0 )
|
||||
IF nChoice > 0
|
||||
? aPrompts[ nChoice ]
|
||||
ENDIF
|
||||
SetPos( MaxRow() - 2, 0 )
|
||||
|
||||
return
|
||||
RETURN
|
||||
|
||||
*+--------------------------------------------------------------------
|
||||
*+
|
||||
*+ Function cUserFunction()
|
||||
*+
|
||||
*+--------------------------------------------------------------------
|
||||
*+
|
||||
function cUserFunction( nMode, nCurElement, nRowPos )
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
//+ Function cUserFunction()
|
||||
//+
|
||||
//+--------------------------------------------------------------------
|
||||
//+
|
||||
|
||||
local nRetVal := AC_CONT // Default, Continue
|
||||
local nKey := lastkey()
|
||||
FUNCTION cUserFunction( nMode, nCurElement, nRowPos )
|
||||
|
||||
local nRow := Row()
|
||||
local nCol := Col()
|
||||
LOCAL nRetVal := AC_CONT // Default, Continue
|
||||
LOCAL nKey := LastKey()
|
||||
|
||||
HB_SYMBOL_UNUSED( nRowPos )
|
||||
LOCAL nRow := Row()
|
||||
LOCAL nCol := Col()
|
||||
|
||||
@ 0, 20 SAY Str( nRow, 3 ) + " " + Str( nCol, 3 )
|
||||
HB_SYMBOL_UNUSED( nRowPos )
|
||||
|
||||
do case
|
||||
// After all pending keys are processed, display message
|
||||
case nMode == AC_IDLE
|
||||
@ 0, 0 say padr( ltrim( str( nCurElement ) ), 10 )
|
||||
nRetVal := AC_CONT // Continue ACHOICE()
|
||||
case nMode == AC_HITTOP // Attempt to go past Top
|
||||
@ 0, 0 say "Hit Top "
|
||||
// tone( 100, 3 )
|
||||
case nMode == AC_HITBOTTOM // Attempt to go past Bottom
|
||||
@ 0, 0 say "Hit Bottom"
|
||||
// tone( 100, 3 )
|
||||
case nMode == AC_EXCEPT // Key Exception
|
||||
@ 0, 0 say "Exception "
|
||||
do case
|
||||
case nKey == K_RETURN // If RETURN key, select
|
||||
nRetVal := AC_SELECT
|
||||
case nKey == K_ESC // If ESCAPE key, abort
|
||||
nRetVal := AC_ABORT
|
||||
otherwise
|
||||
nRetVal := AC_GOTO // Otherwise, go to item
|
||||
endcase
|
||||
endcase
|
||||
return nRetVal
|
||||
@ 0, 20 SAY Str( nRow, 3 ) + " " + Str( nCol, 3 )
|
||||
|
||||
DO CASE
|
||||
// After all pending keys are processed, display message
|
||||
CASE nMode == AC_IDLE
|
||||
@ 0, 0 SAY PadR( LTrim( Str( nCurElement ) ), 10 )
|
||||
nRetVal := AC_CONT // Continue ACHOICE()
|
||||
CASE nMode == AC_HITTOP // Attempt to go past Top
|
||||
@ 0, 0 SAY "Hit Top "
|
||||
// tone( 100, 3 )
|
||||
CASE nMode == AC_HITBOTTOM // Attempt to go past Bottom
|
||||
@ 0, 0 SAY "Hit Bottom"
|
||||
// tone( 100, 3 )
|
||||
CASE nMode == AC_EXCEPT // Key Exception
|
||||
@ 0, 0 SAY "Exception "
|
||||
DO CASE
|
||||
CASE nKey == K_RETURN // If RETURN key, select
|
||||
nRetVal := AC_SELECT
|
||||
CASE nKey == K_ESC // If ESCAPE key, abort
|
||||
nRetVal := AC_ABORT
|
||||
OTHERWISE
|
||||
nRetVal := AC_GOTO // Otherwise, go to item
|
||||
ENDCASE
|
||||
ENDCASE
|
||||
|
||||
RETURN nRetVal
|
||||
|
||||
@@ -21,107 +21,105 @@
|
||||
#include "inkey.ch"
|
||||
#include "achoice.ch"
|
||||
|
||||
function main()
|
||||
FUNCTION main()
|
||||
|
||||
//NIL, empty, numeric, and "not handled" - items
|
||||
//must be inaccesible and invisible
|
||||
local aMenu1 := {" --Visky--", "", "not handled"}
|
||||
local aMenu2 := {" --Vodka--", " --Water--", NIL, "not handled"}
|
||||
local aMenu3 := {" --Grapa--", 33, "not handled"}
|
||||
//NIL, empty, numeric, and "not handled" - items
|
||||
//must be inaccesible and invisible
|
||||
LOCAL aMenu1 := { " --Visky--", "", "not handled" }
|
||||
LOCAL aMenu2 := { " --Vodka--", " --Water--", NIL, "not handled" }
|
||||
LOCAL aMenu3 := { " --Grapa--", 33, "not handled" }
|
||||
|
||||
//for AC_NOITEM mode test
|
||||
local aMenu4 := {"","not handled"}
|
||||
//for AC_NOITEM mode test
|
||||
LOCAL aMenu4 := { "", "not handled" }
|
||||
|
||||
|
||||
local lExit := .F.
|
||||
local nCounter := 1
|
||||
local nKeyPressed
|
||||
LOCAL lExit := .F.
|
||||
LOCAL nCounter := 1
|
||||
LOCAL nKeyPressed
|
||||
|
||||
//set to True for items (de)highlighting
|
||||
//algoritm in clipper
|
||||
public lHiLiTest := .F.
|
||||
//set to True for items (de)highlighting
|
||||
//algoritm in clipper
|
||||
PUBLIC lHiLiTest := .F.
|
||||
|
||||
|
||||
setcolor("W+/N, BG+/B, , , W/N")
|
||||
cls
|
||||
@ 2,1 SAY " --Visky-- --Vodka-- --Grapa--"
|
||||
@ 3,14 SAY "--Water--"
|
||||
do while !lExit
|
||||
SetColor( "W+/N, BG+/B, , , W/N" )
|
||||
cls
|
||||
@ 2, 1 SAY " --Visky-- --Vodka-- --Grapa--"
|
||||
@ 3, 14 SAY "--Water--"
|
||||
DO WHILE !lExit
|
||||
|
||||
do case
|
||||
case nCounter == 1
|
||||
achoice(2, 1, 3, 11, aMenu1)
|
||||
case nCounter == 2
|
||||
achoice(2, 13, 3, 23, aMenu2, .T., "cUF")
|
||||
case nCounter == 3
|
||||
achoice(2, 25, 3, 35, aMenu3, .T.)
|
||||
case nCounter == 4
|
||||
//User function cUF2() fill screen with exclamation marks
|
||||
//in clipper it doe's not called in AC_NOITEM mode
|
||||
achoice(2, 37, 3, 47, aMenu4, .T., "cUF2")
|
||||
DO CASE
|
||||
CASE nCounter == 1
|
||||
AChoice( 2, 1, 3, 11, aMenu1 )
|
||||
CASE nCounter == 2
|
||||
AChoice( 2, 13, 3, 23, aMenu2, .T. , "cUF" )
|
||||
CASE nCounter == 3
|
||||
AChoice( 2, 25, 3, 35, aMenu3, .T. )
|
||||
CASE nCounter == 4
|
||||
//User function cUF2() fill screen with exclamation marks
|
||||
//in clipper it doe's not called in AC_NOITEM mode
|
||||
AChoice( 2, 37, 3, 47, aMenu4, .T. , "cUF2" )
|
||||
|
||||
endcase
|
||||
ENDCASE
|
||||
|
||||
nKeyPressed := lastkey()
|
||||
if nKeyPressed == K_ESC
|
||||
lExit := .T.
|
||||
elseif nKeyPressed == K_RIGHT
|
||||
nCounter := iif(nCounter == 4, 1, nCounter+1)
|
||||
elseif nKeyPressed == K_LEFT
|
||||
nCounter := iif(nCounter == 1, 4, nCounter-1)
|
||||
endif
|
||||
nKeyPressed := LastKey()
|
||||
IF nKeyPressed == K_ESC
|
||||
lExit := .T.
|
||||
ELSEIF nKeyPressed == K_RIGHT
|
||||
nCounter := iif( nCounter == 4, 1, nCounter + 1 )
|
||||
ELSEIF nKeyPressed == K_LEFT
|
||||
nCounter := iif( nCounter == 1, 4, nCounter - 1 )
|
||||
ENDIF
|
||||
|
||||
enddo
|
||||
ENDDO
|
||||
|
||||
return NIL
|
||||
RETURN NIL
|
||||
|
||||
//Test for current and previous items
|
||||
//highliting-dehighliting algoritm
|
||||
function cUF( nMode, nCurElement, nRowPos )
|
||||
|
||||
FUNCTION cUF( nMode, nCurElement, nRowPos )
|
||||
|
||||
LOCAL nRetVal := AC_CONT
|
||||
LOCAL nKey := LastKey()
|
||||
|
||||
IF lHiLiTest
|
||||
DispBox( 0, 0, MaxRow(), MaxCol(), Replicate( "#", 9 ), "GR+/G" )
|
||||
ENDIF
|
||||
|
||||
|
||||
local nRetVal := AC_CONT
|
||||
local nKey := LASTKEY()
|
||||
|
||||
if lHiLiTest
|
||||
|
||||
dispbox( 0, 0, maxrow(), maxcol(), repl("#",9), "GR+/G" )
|
||||
endif
|
||||
|
||||
|
||||
if nMode == AC_NOITEM
|
||||
nRetVal := AC_ABORT
|
||||
elseif nMode == AC_EXCEPT
|
||||
do case
|
||||
case nKey == K_RETURN
|
||||
nRetVal := AC_SELECT
|
||||
otherwise
|
||||
nRetVal := AC_ABORT
|
||||
endcase
|
||||
endif
|
||||
|
||||
return nRetVal
|
||||
IF nMode == AC_NOITEM
|
||||
nRetVal := AC_ABORT
|
||||
ELSEIF nMode == AC_EXCEPT
|
||||
DO CASE
|
||||
CASE nKey == K_RETURN
|
||||
nRetVal := AC_SELECT
|
||||
OTHERWISE
|
||||
nRetVal := AC_ABORT
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
RETURN nRetVal
|
||||
|
||||
//test for AC_NOITEM mode
|
||||
//Clipper in AC_NOITEM mode do not call User Function
|
||||
function cUF2( nMode, nCurElement, nRowPos )
|
||||
|
||||
FUNCTION cUF2( nMode, nCurElement, nRowPos )
|
||||
|
||||
local nRetVal := AC_CONT
|
||||
local nKey := LASTKEY()
|
||||
LOCAL nRetVal := AC_CONT
|
||||
LOCAL nKey := LastKey()
|
||||
|
||||
dispbox( 0, 0, maxrow(), maxcol(), repl("!",9), "GR+/G" )
|
||||
DispBox( 0, 0, MaxRow(), MaxCol(), Replicate( "!", 9 ), "GR+/G" )
|
||||
|
||||
if nMode == AC_NOITEM
|
||||
nRetVal := AC_ABORT
|
||||
elseif nMode == AC_EXCEPT
|
||||
do case
|
||||
case nKey == K_RETURN
|
||||
nRetVal := AC_SELECT
|
||||
otherwise
|
||||
nRetVal := AC_ABORT
|
||||
endcase
|
||||
endif
|
||||
IF nMode == AC_NOITEM
|
||||
nRetVal := AC_ABORT
|
||||
ELSEIF nMode == AC_EXCEPT
|
||||
DO CASE
|
||||
CASE nKey == K_RETURN
|
||||
nRetVal := AC_SELECT
|
||||
OTHERWISE
|
||||
nRetVal := AC_ABORT
|
||||
ENDCASE
|
||||
ENDIF
|
||||
|
||||
return nRetVal
|
||||
RETURN nRetVal
|
||||
|
||||
@@ -7,7 +7,7 @@ FUNCTION Main()
|
||||
USE test
|
||||
|
||||
REPLACE Age WITH 1
|
||||
? FIELD->Age
|
||||
? FIELD -> Age
|
||||
|
||||
//REPLACE 1->Age WITH 2 // Todo: complete support in harbour.y - AliasAddInt()
|
||||
//? FIELD->Age
|
||||
@@ -15,14 +15,14 @@ FUNCTION Main()
|
||||
//REPLACE 1.5->Age WITH 3 // Will produce "Invalid alias expression"
|
||||
//? FIELD->Age
|
||||
|
||||
REPLACE TEST->Age WITH 4
|
||||
? FIELD->Age
|
||||
REPLACE TEST -> Age WITH 4
|
||||
? FIELD -> Age
|
||||
|
||||
TEST->Age := 5
|
||||
? FIELD->Age
|
||||
TEST -> Age := 5
|
||||
? FIELD -> Age
|
||||
|
||||
TEST->( FieldPut( FieldPos( 'AGE' ), 6 ) )
|
||||
? FIELD->Age
|
||||
TEST -> ( FieldPut( FieldPos( 'AGE' ), 6 ) )
|
||||
? FIELD -> Age
|
||||
|
||||
dbCloseArea()
|
||||
|
||||
@@ -30,72 +30,72 @@ FUNCTION Main()
|
||||
|
||||
USE test
|
||||
|
||||
// ? ("0")->FIRST
|
||||
? ("B")->FIRST
|
||||
? ("2")->FIRST
|
||||
? 2->FIRST
|
||||
? B->FIRST
|
||||
// ? ("0")->FIRST
|
||||
? ( "B" ) -> FIRST
|
||||
? ( "2" ) -> FIRST
|
||||
? 2 -> FIRST
|
||||
? B -> FIRST
|
||||
|
||||
Inkey( 0 )
|
||||
|
||||
// ? ("0")->FIRST
|
||||
? SELECT()
|
||||
? SELECT( 1 )
|
||||
? SELECT( 2 )
|
||||
// ? ("0")->FIRST
|
||||
? Select()
|
||||
? Select( 1 )
|
||||
? Select( 2 )
|
||||
|
||||
? "0", SELECT( "0" )
|
||||
? "1", SELECT( "1" )
|
||||
? "2", SELECT( "2" )
|
||||
? "A", SELECT( "A" )
|
||||
? "B", SELECT( "B" )
|
||||
? "C", SELECT( "C" )
|
||||
? "D", SELECT( "D" )
|
||||
? "E", SELECT( "E" )
|
||||
? "F", SELECT( "F" )
|
||||
? "G", SELECT( "G" )
|
||||
? "H", SELECT( "H" )
|
||||
? "I", SELECT( "I" )
|
||||
? "J", SELECT( "J" )
|
||||
? "K", SELECT( "K" )
|
||||
? "L", SELECT( "L" )
|
||||
? "M", SELECT( "M" )
|
||||
? "N", SELECT( "N" )
|
||||
? "O", SELECT( "O" )
|
||||
? "P", SELECT( "P" )
|
||||
? "Q", SELECT( "Q" )
|
||||
? "R", SELECT( "R" )
|
||||
? "S", SELECT( "S" )
|
||||
? "T", SELECT( "T" )
|
||||
? "U", SELECT( "U" )
|
||||
? "V", SELECT( "V" )
|
||||
? "W", SELECT( "W" )
|
||||
? "X", SELECT( "X" )
|
||||
? "Y", SELECT( "Y" )
|
||||
? "Z", SELECT( "Z" )
|
||||
? "0", Select( "0" )
|
||||
? "1", Select( "1" )
|
||||
? "2", Select( "2" )
|
||||
? "A", Select( "A" )
|
||||
? "B", Select( "B" )
|
||||
? "C", Select( "C" )
|
||||
? "D", Select( "D" )
|
||||
? "E", Select( "E" )
|
||||
? "F", Select( "F" )
|
||||
? "G", Select( "G" )
|
||||
? "H", Select( "H" )
|
||||
? "I", Select( "I" )
|
||||
? "J", Select( "J" )
|
||||
? "K", Select( "K" )
|
||||
? "L", Select( "L" )
|
||||
? "M", Select( "M" )
|
||||
? "N", Select( "N" )
|
||||
? "O", Select( "O" )
|
||||
? "P", Select( "P" )
|
||||
? "Q", Select( "Q" )
|
||||
? "R", Select( "R" )
|
||||
? "S", Select( "S" )
|
||||
? "T", Select( "T" )
|
||||
? "U", Select( "U" )
|
||||
? "V", Select( "V" )
|
||||
? "W", Select( "W" )
|
||||
? "X", Select( "X" )
|
||||
? "Y", Select( "Y" )
|
||||
? "Z", Select( "Z" )
|
||||
|
||||
Inkey( 0 )
|
||||
|
||||
? "" , dbSelectArea() , SELECT()
|
||||
? "" , dbSelectArea( NIL ), SELECT()
|
||||
? "" , dbSelectArea( "" ) , SELECT()
|
||||
? " " , dbSelectArea( " " ), SELECT()
|
||||
? "0" , dbSelectArea( "0" ), SELECT()
|
||||
? "1" , dbSelectArea( "1" ), SELECT()
|
||||
? "2" , dbSelectArea( "2" ), SELECT()
|
||||
? "A" , dbSelectArea( "A" ), SELECT()
|
||||
? "B" , dbSelectArea( "B" ), SELECT()
|
||||
? "C" , dbSelectArea( "C" ), SELECT()
|
||||
? "D" , dbSelectArea( "D" ), SELECT()
|
||||
? "E" , dbSelectArea( "E" ), SELECT()
|
||||
? "F" , dbSelectArea( "F" ), SELECT()
|
||||
? "G" , dbSelectArea( "G" ), SELECT()
|
||||
? "H" , dbSelectArea( "H" ), SELECT()
|
||||
? "I" , dbSelectArea( "I" ), SELECT()
|
||||
? "J" , dbSelectArea( "J" ), SELECT()
|
||||
? "K" , dbSelectArea( "K" ), SELECT()
|
||||
? "L" , dbSelectArea( "L" ), SELECT()
|
||||
? "M" , dbSelectArea( "M" ), SELECT()
|
||||
? "Z" , dbSelectArea( "Z" ), SELECT()
|
||||
? "AA", dbSelectArea( "AA" ), SELECT()
|
||||
? "" , dbSelectArea() , Select()
|
||||
? "" , dbSelectArea( NIL ), Select()
|
||||
? "" , dbSelectArea( "" ) , Select()
|
||||
? " " , dbSelectArea( " " ), Select()
|
||||
? "0" , dbSelectArea( "0" ), Select()
|
||||
? "1" , dbSelectArea( "1" ), Select()
|
||||
? "2" , dbSelectArea( "2" ), Select()
|
||||
? "A" , dbSelectArea( "A" ), Select()
|
||||
? "B" , dbSelectArea( "B" ), Select()
|
||||
? "C" , dbSelectArea( "C" ), Select()
|
||||
? "D" , dbSelectArea( "D" ), Select()
|
||||
? "E" , dbSelectArea( "E" ), Select()
|
||||
? "F" , dbSelectArea( "F" ), Select()
|
||||
? "G" , dbSelectArea( "G" ), Select()
|
||||
? "H" , dbSelectArea( "H" ), Select()
|
||||
? "I" , dbSelectArea( "I" ), Select()
|
||||
? "J" , dbSelectArea( "J" ), Select()
|
||||
? "K" , dbSelectArea( "K" ), Select()
|
||||
? "L" , dbSelectArea( "L" ), Select()
|
||||
? "M" , dbSelectArea( "M" ), Select()
|
||||
? "Z" , dbSelectArea( "Z" ), Select()
|
||||
? "AA", dbSelectArea( "AA" ), Select()
|
||||
|
||||
return NIL
|
||||
RETURN NIL
|
||||
|
||||
@@ -7,49 +7,49 @@
|
||||
MEMVAR cStr, cStr_1, cVar_1, aVar, oVar, OtherVar, SomeVar, Private
|
||||
MEMVAR cMainPrivate, GlobalPrivate, BornInRunTimeVar, Public
|
||||
|
||||
Function Main( )
|
||||
FUNCTION Main( )
|
||||
|
||||
PRIVATE cStr := 'cVar', cStr_1 := 'cVar_1', aVar := { 'cVar_1' }, oVar
|
||||
PRIVATE cStr := 'cVar', cStr_1 := 'cVar_1', aVar := { 'cVar_1' }, oVar
|
||||
|
||||
PRIVATE cVar_1, cMainPrivate := 'cVar_1', GlobalPrivate := 'BornInRunTimeVar'
|
||||
PRIVATE cVar_1, cMainPrivate := 'cVar_1', GlobalPrivate := 'BornInRunTimeVar'
|
||||
|
||||
&cStr_1 = 'Simple '
|
||||
? M->cVar_1
|
||||
&cStr_1 = 'Simple '
|
||||
? M -> cVar_1
|
||||
|
||||
&( 'cVar' + '_1' ) := 'Macro'
|
||||
?? M->cVar_1
|
||||
&( 'cVar' + '_1' ) := 'Macro'
|
||||
?? M -> cVar_1
|
||||
|
||||
M->&cStr_1 = 'Aliased'
|
||||
? M->cVar_1
|
||||
M -> &cStr_1 = 'Aliased'
|
||||
? M -> cVar_1
|
||||
|
||||
MEMVAR->&( 'cVar' + '_1' ) := ' Macro'
|
||||
?? M->cVar_1
|
||||
MEMVAR -> &( 'cVar' + '_1' ) := ' Macro'
|
||||
?? M -> cVar_1
|
||||
|
||||
cStr := 'cVar_'
|
||||
&cStr.1 = 'Concatenated Macro (Numeric)'
|
||||
? M->cVar_1
|
||||
cStr := 'cVar_'
|
||||
&cStr.1 = 'Concatenated Macro (Numeric)'
|
||||
? M -> cVar_1
|
||||
|
||||
cStr := 'cVar'
|
||||
&cStr._1 = 'Concatenated Macro (String)'
|
||||
? M->cVar_1
|
||||
cStr := 'cVar'
|
||||
&cStr._1 = 'Concatenated Macro (String)'
|
||||
? M -> cVar_1
|
||||
|
||||
&( aVar[1] ) := 'Array Macro'
|
||||
? M->cVar_1
|
||||
&( aVar[1] ) := 'Array Macro'
|
||||
? M -> cVar_1
|
||||
|
||||
oVar := TValue():New()
|
||||
oVar:cVal := 'cVar_1'
|
||||
&( oVar:cVal ) := 'Class Macro'
|
||||
? M->cVar_1
|
||||
oVar := TValue():New()
|
||||
oVar:cVal := 'cVar_1'
|
||||
&( oVar:cVal ) := 'Class Macro'
|
||||
? M -> cVar_1
|
||||
|
||||
SubFun()
|
||||
SubFun()
|
||||
|
||||
? '"cVar_1" = [' + M->cVar_1 + '] AFTER SubFun() PRIVATE'
|
||||
? '"cVar_1" = [' + M -> cVar_1 + '] AFTER SubFun() PRIVATE'
|
||||
|
||||
? M->NewPublicVar
|
||||
? M -> NewPublicVar
|
||||
|
||||
TEST_TYPE()
|
||||
|
||||
RETURN NIL
|
||||
RETURN NIL
|
||||
|
||||
FUNCTION TValue
|
||||
|
||||
@@ -61,106 +61,112 @@ FUNCTION TValue
|
||||
oClass:AddData( "cVal" )
|
||||
oClass:AddMethod( "New", @New() ) // New Method
|
||||
|
||||
oClass:Create()
|
||||
oClass:Create()
|
||||
|
||||
ENDIF
|
||||
|
||||
RETURN( oClass:Instance() )
|
||||
RETURN( oClass:Instance() )
|
||||
|
||||
STATIC FUNCTION New()
|
||||
|
||||
LOCAL Self := QSelf()
|
||||
|
||||
RETURN Self
|
||||
RETURN Self
|
||||
|
||||
Function SubFun()
|
||||
FUNCTION SubFun()
|
||||
|
||||
? '"cVar_1" = [' + M->cVar_1 + '] BEFORE SubFun() PRIVATE'
|
||||
? '"cVar_1" = [' + M -> cVar_1 + '] BEFORE SubFun() PRIVATE'
|
||||
|
||||
// Testing conflict with KEY WORDS
|
||||
PRIVATE PRIVATE := 'I am a Var named PRIVATE ', &cMainPrivate, SomeVar, OtherVar := 1, &GlobalPrivate := 'I was born in Run Time'
|
||||
PUBLIC PUBLIC := 'NewPublicVar'
|
||||
PUBLIC &PUBLIC
|
||||
// Testing conflict with KEY WORDS
|
||||
PRIVATE PRIVATE := 'I am a Var named PRIVATE ', &cMainPrivate, SomeVar, OtherVar := 1, &GlobalPrivate := 'I was born in Run Time'
|
||||
PUBLIC PUBLIC := 'NewPublicVar'
|
||||
PUBLIC &PUBLIC
|
||||
|
||||
? M->NewPublicVar
|
||||
? M -> NewPublicVar
|
||||
|
||||
M->NewPublicVar := 'Still Alive because I am PUBLIC'
|
||||
M -> NewPublicVar := 'Still Alive because I am PUBLIC'
|
||||
|
||||
? M->PRIVATE + PRIVATE
|
||||
? PRIVATE + M->PRIVATE
|
||||
? M -> PRIVATE + PRIVATE
|
||||
? PRIVATE + M -> PRIVATE
|
||||
|
||||
? BornInRunTimeVar
|
||||
? BornInRunTimeVar
|
||||
|
||||
&cMainPrivate := 'In SubFun()'
|
||||
&cMainPrivate := 'In SubFun()'
|
||||
|
||||
? '"cVar_1" = [' + M->cVar_1 + '] in SubFun() PRIVATE'
|
||||
? '"cVar_1" = [' + M -> cVar_1 + '] in SubFun() PRIVATE'
|
||||
|
||||
RETURN NIL
|
||||
RETURN NIL
|
||||
|
||||
STATIC PROCEDURE TEST_TYPE()
|
||||
LOCAL v1, v2, v1a, v2a
|
||||
LOCAL bErr:=ERRORBLOCK({|e|BREAK(e)}), oE
|
||||
|
||||
LOCAL v1, v2, v1a, v2a
|
||||
LOCAL bErr := ErrorBlock( { |e|Break( e ) } ), oE
|
||||
|
||||
?
|
||||
? "=========== TYPE() function ================="
|
||||
v1 := "UDF()"
|
||||
? "Test for TYPE('UDF()') - should be 'UI': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF()') - should be 'UI': ", Type( v1 )
|
||||
v2 := "UDF_STATIC()"
|
||||
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", TYPE(v2)
|
||||
? "Test for &"+"'UDF()' - should print 'udf': ", &v1
|
||||
? "Test for &"+"'UDF_STATIC()' - should print 'ERROR: undefined function': "
|
||||
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", Type( v2 )
|
||||
? "Test for &" + "'UDF()' - should print 'udf': ", &v1
|
||||
? "Test for &" + "'UDF_STATIC()' - should print 'ERROR: undefined function': "
|
||||
BEGIN SEQUENCE
|
||||
?? &v2
|
||||
RECOVER USING oE
|
||||
? "ERROR: "+oE:Description
|
||||
? "ERROR: " + oE:Description
|
||||
END SEQUENCE
|
||||
ERRORBLOCK(bErr)
|
||||
ErrorBlock( bErr )
|
||||
|
||||
v1 := "UDF"
|
||||
? "Test for TYPE('UDF') - should be 'U': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF') - should be 'U': ", Type( v1 )
|
||||
v2 := "UDF_STATIC"
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'U': ", TYPE(v2)
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'U': ", Type( v2 )
|
||||
|
||||
v1a := "UDF:=1"
|
||||
? "Test for TYPE('UDF:=1') - should be 'N': ", TYPE(v1a)
|
||||
? "Test for TYPE('UDF:=1') - should be 'N': ", Type( v1a )
|
||||
v2a := "UDF_STATIC:=1"
|
||||
? "Test for TYPE('UDF_STATIC:=1') - should be 'N': ", TYPE(v2a)
|
||||
? "Test for TYPE('UDF_STATIC:=1') - should be 'N': ", Type( v2a )
|
||||
|
||||
? "=== after the assignment ==="
|
||||
v1 := "UDF"
|
||||
? "Test for TYPE('UDF') - should be 'N': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF') - should be 'N': ", Type( v1 )
|
||||
v2 := "UDF_STATIC"
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'N': ", TYPE(v2)
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'N': ", Type( v2 )
|
||||
|
||||
v1 := "UDF()"
|
||||
? "Test for TYPE('UDF()') - should be 'UI': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF()') - should be 'UI': ", Type( v1 )
|
||||
v2 := "UDF_STATIC()"
|
||||
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", TYPE(v2)
|
||||
? "Test for TYPE('UDF_STATIC()') - should be 'U': ", Type( v2 )
|
||||
|
||||
|
||||
? "=== declared public variable ==="
|
||||
PUBLIC UDF2, UDF2_STATIC
|
||||
v1 := "UDF2()"
|
||||
? "Test for TYPE('UDF2()') - should be 'UI': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF2()') - should be 'UI': ", Type( v1 )
|
||||
v2 := "UDF2_STATIC()"
|
||||
? "Test for TYPE('UDF2_STATIC()') - should be 'U': ", TYPE(v2)
|
||||
? "Test for TYPE('UDF2_STATIC()') - should be 'U': ", Type( v2 )
|
||||
|
||||
v1 := "UDF2"
|
||||
? "Test for TYPE('UDF') - should be 'L': ", TYPE(v1)
|
||||
? "Test for TYPE('UDF') - should be 'L': ", Type( v1 )
|
||||
v2 := "UDF2_STATIC"
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'L': ", TYPE(v2)
|
||||
? "Test for TYPE('UDF_STATIC') - should be 'L': ", Type( v2 )
|
||||
|
||||
?
|
||||
RETURN
|
||||
?
|
||||
|
||||
RETURN
|
||||
|
||||
STATIC FUNCTION UDF_STATIC()
|
||||
RETURN "udf_static"
|
||||
|
||||
RETURN "udf_static"
|
||||
|
||||
FUNCTION UDF()
|
||||
RETURN "udf"
|
||||
|
||||
RETURN "udf"
|
||||
|
||||
STATIC FUNCTION UDF2_STATIC()
|
||||
RETURN "udf2_static"
|
||||
|
||||
RETURN "udf2_static"
|
||||
|
||||
FUNCTION UDF2()
|
||||
RETURN "udf2"
|
||||
|
||||
RETURN "udf2"
|
||||
|
||||
Reference in New Issue
Block a user