2009-04-13 10:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* tests/speedtst.prg
! Fixed missing hb_progname() for non-Harbour compilers.
* include/hbextern.ch
+ Added time related new functions.
* utils/hbmk2/hbmk2.prg
+ Added -runflag: option to pass flags to target executable.
+ Started -inc (incremental link) support. It's very early
stage, don't expect it to work yet and please don't report
any problems with this feature yet.
* source/vm/asort.c
! Fixed to return Clipper compatible results when non-logical
non-numeric value is returned from ASORT() codeblock.
* utils/hbtest/rt_array.prg
* Cleaned ASORT() tests when sorting block returns constant value.
Now Clipper results aren't bent anymore, instead I've added
different expected results for Harbour and Clipper. The
difference is due to different sorting algorithms used,
here the point is to get similar *pattern* for different
invalid values.
* source/rtl/philes.c
% HB_FGETDATETIME(): Removed double call to hb_stortdt().
* contrib/hbqt/tests/hbqt.hbp
* Removed extra line at EOL.
* contrib/gtqtc/tests/hbqt.hbp
! Removed environment dependent 'libspath=' line.
Please don't add such path to Harbour SVN, since these
can differ from system to system and is also non-portable.
The correct name of the directive is: 'libpaths='.
* contrib/gtqtc/Makefile
% Removed double SVN ID.
This file needs to be updated according to hbqt latest
Makefile portability changes.
* contrib/rddads/ads1.c
* Minor formatting.
This commit is contained in:
@@ -8,6 +8,51 @@
|
||||
2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
|
||||
*/
|
||||
|
||||
2009-04-13 10:49 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* tests/speedtst.prg
|
||||
! Fixed missing hb_progname() for non-Harbour compilers.
|
||||
|
||||
* include/hbextern.ch
|
||||
+ Added time related new functions.
|
||||
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
+ Added -runflag: option to pass flags to target executable.
|
||||
+ Started -inc (incremental link) support. It's very early
|
||||
stage, don't expect it to work yet and please don't report
|
||||
any problems with this feature yet.
|
||||
|
||||
* source/vm/asort.c
|
||||
! Fixed to return Clipper compatible results when non-logical
|
||||
non-numeric value is returned from ASORT() codeblock.
|
||||
|
||||
* utils/hbtest/rt_array.prg
|
||||
* Cleaned ASORT() tests when sorting block returns constant value.
|
||||
Now Clipper results aren't bent anymore, instead I've added
|
||||
different expected results for Harbour and Clipper. The
|
||||
difference is due to different sorting algorithms used,
|
||||
here the point is to get similar *pattern* for different
|
||||
invalid values.
|
||||
|
||||
* source/rtl/philes.c
|
||||
% HB_FGETDATETIME(): Removed double call to hb_stortdt().
|
||||
|
||||
* contrib/hbqt/tests/hbqt.hbp
|
||||
* Removed extra line at EOL.
|
||||
|
||||
* contrib/gtqtc/tests/hbqt.hbp
|
||||
! Removed environment dependent 'libspath=' line.
|
||||
Please don't add such path to Harbour SVN, since these
|
||||
can differ from system to system and is also non-portable.
|
||||
The correct name of the directive is: 'libpaths='.
|
||||
|
||||
* contrib/gtqtc/Makefile
|
||||
% Removed double SVN ID.
|
||||
This file needs to be updated according to hbqt latest
|
||||
Makefile portability changes.
|
||||
|
||||
* contrib/rddads/ads1.c
|
||||
* Minor formatting.
|
||||
|
||||
2009-04-13 12:29 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com)
|
||||
* harbour/contrib/gtqtc/gtqtc.cpp
|
||||
* harbour/contrib/gtqtc/gtqtc.h
|
||||
@@ -55,12 +100,12 @@
|
||||
brain. I will request Przemek to set the basic GT framework
|
||||
in place. Rest will be quiet easy, easy than Windows itself.
|
||||
|
||||
demoqtc.exe remains in the memory after closing it with
|
||||
demoqtc.exe remains in the memory after closing it with
|
||||
X button. I have tried hard to set it right but have faised so far.
|
||||
So you may need to kill it from task manager.
|
||||
|
||||
* harbour/contrib/gtwvg/tests/demowvg.prg
|
||||
+ Added My_Alert() function which you can copy and
|
||||
+ Added My_Alert() function which you can copy and
|
||||
paste in your GTWVG linked applications to have a GUI
|
||||
replacement of Alert() funtion.
|
||||
|
||||
|
||||
@@ -48,11 +48,6 @@ ifneq ($(strip $(HB_INC_QT_OK)),)
|
||||
|
||||
HB_USER_CFLAGS += $(foreach d, $(HB_INC_QT_OK), -I$(d))
|
||||
|
||||
#
|
||||
# $Id$
|
||||
#
|
||||
|
||||
|
||||
CPP_SOURCES=\
|
||||
gtqtc.cpp \
|
||||
moc_gtqtc.cpp \
|
||||
|
||||
@@ -9,5 +9,3 @@ libs=QtCore4 QtGui4 QtNetwork4 QtWebKit4
|
||||
#libs=QtCore QtGui QtNetwork QtWebKit
|
||||
gui=yes
|
||||
gt=gtnul
|
||||
libspath=c:\qt\2009.01\gt\lib
|
||||
|
||||
|
||||
@@ -13,4 +13,3 @@ libs=hbqt
|
||||
#libs=QtCore QtGui QtNetwork QtWebKit
|
||||
gui=yes
|
||||
gt=gtnul
|
||||
|
||||
|
||||
@@ -2733,7 +2733,7 @@ static HB_ERRCODE adsInfo( ADSAREAP pArea, USHORT uiIndex, PHB_ITEM pItem )
|
||||
AdsGetDateFormat( pucFormat, &pusLen );
|
||||
AdsSetDateFormat( ( UNSIGNED8 * ) "YYYYMMDD" );
|
||||
AdsGetLastTableUpdate( pArea->hTable, pucDate, &pusLen );
|
||||
*(pucDate + 8) = '\0';
|
||||
*( pucDate + 8 ) = '\0';
|
||||
hb_itemPutDS( pItem, ( char * ) pucDate );
|
||||
AdsSetDateFormat( pucFormat );
|
||||
break;
|
||||
|
||||
@@ -857,6 +857,23 @@ EXTERNAL HB_ISOBJECT
|
||||
EXTERNAL HB_ISPOINTER
|
||||
EXTERNAL HB_ISSTRING
|
||||
EXTERNAL HB_ISSYMBOL
|
||||
EXTERNAL HB_ISDATETIME
|
||||
EXTERNAL HB_ISTIMESTAMP
|
||||
|
||||
EXTERNAL HB_DATETIME
|
||||
EXTERNAL HB_CTOD
|
||||
EXTERNAL HB_DTOC
|
||||
EXTERNAL HB_NTOT
|
||||
EXTERNAL HB_TTON
|
||||
EXTERNAL HB_TTOC
|
||||
EXTERNAL HB_CTOT
|
||||
EXTERNAL HB_TTOS
|
||||
EXTERNAL HB_STOT
|
||||
EXTERNAL HB_TSTOSTR
|
||||
EXTERNAL HB_STRTOTS
|
||||
EXTERNAL HB_HOUR
|
||||
EXTERNAL HB_MINUTE
|
||||
EXTERNAL HB_SEC
|
||||
|
||||
EXTERNAL HB_IDLEADD
|
||||
EXTERNAL HB_IDLEDEL
|
||||
@@ -1322,6 +1339,7 @@ EXTERNAL HBARRAY
|
||||
EXTERNAL HBBLOCK
|
||||
EXTERNAL HBCHARACTER
|
||||
EXTERNAL HBDATE
|
||||
EXTERNAL HBTIMESTAMP
|
||||
EXTERNAL HBLOGICAL
|
||||
EXTERNAL HBNIL
|
||||
EXTERNAL HBNUMERIC
|
||||
|
||||
@@ -416,8 +416,6 @@ HB_FUNC( HB_FGETDATETIME )
|
||||
|
||||
if( hb_fsGetFileTime( ( UCHAR * ) hb_parcx( 1 ), &lJulian, &lMillisec ) )
|
||||
{
|
||||
|
||||
hb_stortdt( lJulian, lMillisec, 2 );
|
||||
if( ISBYREF( 3 ) )
|
||||
{
|
||||
char buf[ 13 ];
|
||||
@@ -429,6 +427,7 @@ HB_FUNC( HB_FGETDATETIME )
|
||||
}
|
||||
else
|
||||
hb_stortdt( lJulian, lMillisec, 2 );
|
||||
|
||||
hb_retl( TRUE );
|
||||
}
|
||||
else
|
||||
|
||||
@@ -76,10 +76,18 @@ static BOOL hb_itemIsLess( PHB_ITEM pItem1, PHB_ITEM pItem2, PHB_ITEM pBlock, PH
|
||||
if( pBaseArray->ulLen <= ulLast )
|
||||
return FALSE;
|
||||
else
|
||||
{
|
||||
PHB_ITEM pRet = hb_param( -1, HB_IT_ANY );
|
||||
|
||||
/* CA-Cl*pper always takes return value as logical item
|
||||
* accepting 0, 1 as numeric representation of FALSE/TRUE
|
||||
*/
|
||||
return hb_parl( -1 );
|
||||
if( HB_IS_LOGICAL( pRet ) ||
|
||||
HB_IS_NUMERIC( pRet ) )
|
||||
return hb_itemGetL( pRet );
|
||||
else
|
||||
return TRUE;
|
||||
}
|
||||
}
|
||||
|
||||
/* Do native compare when no codeblock is supplied */
|
||||
|
||||
@@ -253,6 +253,15 @@ STATIC FUNCTION FN_ExtSet( cFileName, cExt )
|
||||
|
||||
RETURN hb_FNameMerge( cDir, cName, cExt )
|
||||
|
||||
#ifndef __HARBOUR__
|
||||
STATIC FUNCTION hb_progname()
|
||||
RETURN "speedtst"
|
||||
#else
|
||||
#ifdef __XHARBOUR__
|
||||
STATIC FUNCTION hb_progname()
|
||||
RETURN "speedtst"
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/*** TESTS ***/
|
||||
|
||||
|
||||
@@ -114,6 +114,14 @@
|
||||
/* TODO: Add support for dynamic library creation for rest of compilers. */
|
||||
/* TODO: Cleanup on variable names and compiler configuration. */
|
||||
/* TODO: Optimizations (speed/memory). */
|
||||
/* TODO: Incremental support:
|
||||
- separate link from C compilation for all compilers
|
||||
- handle resources
|
||||
- handle .c and object input files
|
||||
- handle libs? (problematic)
|
||||
- creating intermediate files in '_arch/comp' subdir
|
||||
- add 'inc=on' support in .hbp files
|
||||
- 'clean' option? */
|
||||
|
||||
/* PLANNING:
|
||||
hbgtwvg.hbp
|
||||
@@ -242,6 +250,7 @@ PROCEDURE Main( ... )
|
||||
LOCAL s_aOPTL
|
||||
LOCAL s_aOPTA
|
||||
LOCAL s_aOPTD
|
||||
LOCAL s_aOPTRUN
|
||||
LOCAL s_cPROGDIR
|
||||
LOCAL s_cPROGNAME
|
||||
LOCAL s_cFIRST
|
||||
@@ -270,6 +279,7 @@ PROCEDURE Main( ... )
|
||||
LOCAL s_lBLDFLGL := .F.
|
||||
LOCAL s_lRUN := .F.
|
||||
LOCAL s_lFMSTAT := NIL /* NIL = default, .T. = on, .F. = off */
|
||||
LOCAL s_lINC := .F.
|
||||
|
||||
LOCAL aCOMPDET
|
||||
LOCAL aCOMPDET_LOCAL
|
||||
@@ -335,6 +345,8 @@ PROCEDURE Main( ... )
|
||||
LOCAL cParam
|
||||
LOCAL cParamL
|
||||
|
||||
LOCAL cTarget, tTarget
|
||||
|
||||
LOCAL cDir, cName, cExt
|
||||
|
||||
LOCAL lNIX := hb_Version( HB_VERSION_UNIX_COMPAT )
|
||||
@@ -816,6 +828,7 @@ PROCEDURE Main( ... )
|
||||
s_aOPTL := {}
|
||||
s_aOPTA := {}
|
||||
s_aOPTD := {}
|
||||
s_aOPTRUN := {}
|
||||
s_aRESSRC := {}
|
||||
s_aRESCMP := {}
|
||||
s_aLIBFM := {}
|
||||
@@ -938,6 +951,9 @@ PROCEDURE Main( ... )
|
||||
CASE cParamL == "-map" ; s_lMAP := .T.
|
||||
CASE cParamL == "-map-" .OR. ;
|
||||
cParamL == "-nomap" ; s_lMAP := .F.
|
||||
CASE cParamL == "-inc" ; s_lINC := .T.
|
||||
CASE cParamL == "-inc-" .OR. ;
|
||||
cParamL == "-noinc" ; s_lINC := .F.
|
||||
CASE cParamL == "-fmstat" ; s_lFMSTAT := .T.
|
||||
CASE cParamL == "-fmstat-" .OR. ;
|
||||
cParamL == "-nofmstat" ; s_lFMSTAT := .F.
|
||||
@@ -1071,6 +1087,13 @@ PROCEDURE Main( ... )
|
||||
AAdd( s_aOPTA , PathSepToTarget( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParamL, Len( "-runflag:" ) ) == "-runflag:"
|
||||
|
||||
cParam := ArchCompFilter( SubStr( cParam, Len( "-runflag:" ) + 1 ) )
|
||||
IF Left( cParam, 1 ) $ cOptPrefix
|
||||
AAdd( s_aOPTRUN , PathSepToTarget( cParam, 2 ) )
|
||||
ENDIF
|
||||
|
||||
CASE Left( cParam, 2 ) == "-l" .AND. ;
|
||||
Len( cParam ) > 2 .AND. ;
|
||||
!( Left( cParam, 3 ) == "-l-" )
|
||||
@@ -1180,6 +1203,39 @@ PROCEDURE Main( ... )
|
||||
RETURN
|
||||
ENDIF
|
||||
|
||||
IF ! lStopAfterInit .AND. ! lStopAfterHarbour
|
||||
|
||||
/* If -o with full name wasn't specified, let's
|
||||
make it the first source file specified. */
|
||||
DEFAULT s_cPROGNAME TO FN_NameGet( s_cFIRST )
|
||||
|
||||
/* Combine output dir with output name. */
|
||||
IF ! Empty( s_cPROGDIR )
|
||||
hb_FNameSplit( s_cPROGNAME, @cDir, @cName, @cExt )
|
||||
s_cPROGNAME := hb_FNameMerge( iif( Empty( cDir ), s_cPROGDIR, cDir ), cName, cExt )
|
||||
ENDIF
|
||||
|
||||
/* Incremental */
|
||||
|
||||
IF s_lINC
|
||||
|
||||
DO CASE
|
||||
CASE lCreateLib ; cTarget := PathSepToTarget( FN_ExtSet( cLibLibPrefix + s_cPROGNAME, cLibLibExt ) )
|
||||
CASE lCreateDyn ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cDynLibExt ) )
|
||||
OTHERWISE ; cTarget := PathSepToTarget( FN_ExtSet( s_cPROGNAME, cBinExt ) )
|
||||
ENDCASE
|
||||
|
||||
tTarget := NIL
|
||||
IF hb_FGetDateTime( cTarget, @tTarget )
|
||||
FOR EACH tmp IN s_aPRG DESCEND
|
||||
IF hb_FGetDateTime( tmp, @tmp1 ) .AND. tTarget >= tmp1
|
||||
hb_ADel( s_aPRG, tmp:__enumIndex(), .T. )
|
||||
ENDIF
|
||||
NEXT
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
/* Harbour compilation */
|
||||
|
||||
IF ! lStopAfterInit .AND. Len( s_aPRG ) > 0
|
||||
@@ -1240,10 +1296,6 @@ PROCEDURE Main( ... )
|
||||
|
||||
IF ! lStopAfterInit .AND. ! lStopAfterHarbour
|
||||
|
||||
/* If -o with full name wasn't specified, let's
|
||||
make it the first source file specified. */
|
||||
DEFAULT s_cPROGNAME TO FN_NameGet( s_cFIRST )
|
||||
|
||||
IF s_cGT == t_cGTDEFAULT
|
||||
s_cGT := NIL
|
||||
ENDIF
|
||||
@@ -1251,12 +1303,6 @@ PROCEDURE Main( ... )
|
||||
/* Merge user libs from command line and envvar. Command line has priority. */
|
||||
s_aLIBUSER := ArrayAJoin( { s_aLIBUSER, s_aLIBUSERGT, ListToArray( PathSepToTarget( GetEnv( "HB_USER_LIBS" ) ) ) } )
|
||||
|
||||
/* Combine output dir with output name. */
|
||||
IF ! Empty( s_cPROGDIR )
|
||||
hb_FNameSplit( s_cPROGNAME, @cDir, @cName, @cExt )
|
||||
s_cPROGNAME := hb_FNameMerge( iif( Empty( cDir ), s_cPROGDIR, cDir ), cName, cExt )
|
||||
ENDIF
|
||||
|
||||
IF lSysLoc
|
||||
cPrefix := ""
|
||||
ELSE
|
||||
@@ -2450,10 +2496,12 @@ PROCEDURE Main( ... )
|
||||
ENDIF
|
||||
AEval( ListDirExt( s_aPRG, "", ".c" ), {|tmp| FErase( tmp ) } )
|
||||
IF ! lStopAfterCComp .OR. lCreateLib .OR. lCreateDyn
|
||||
IF ! Empty( cResExt )
|
||||
AEval( ListDirExt( s_aRESSRC, "", cResExt ), {|tmp| FErase( tmp ) } )
|
||||
IF ! s_lINC
|
||||
IF ! Empty( cResExt )
|
||||
AEval( ListDirExt( s_aRESSRC, "", cResExt ), {|tmp| FErase( tmp ) } )
|
||||
ENDIF
|
||||
AEval( s_aOBJ, {|tmp| FErase( tmp ) } )
|
||||
ENDIF
|
||||
AEval( s_aOBJ, {|tmp| FErase( tmp ) } )
|
||||
ENDIF
|
||||
AEval( s_aCLEAN, {|tmp| FErase( tmp ) } )
|
||||
|
||||
@@ -2499,14 +2547,15 @@ PROCEDURE Main( ... )
|
||||
s_cPROGNAME := "." + hb_osPathSeparator() + s_cPROGNAME
|
||||
ENDIF
|
||||
#endif
|
||||
cCommand := AllTrim( PathSepToTarget( s_cPROGNAME ) + " " + ArrayToList( s_aOPTRUN ) )
|
||||
IF s_lTRACE
|
||||
IF ! s_lDONTEXEC .OR. ! t_lQuiet
|
||||
OutStd( "hbmk: Running executable:" + hb_osNewLine() )
|
||||
ENDIF
|
||||
OutStd( PathSepToTarget( s_cPROGNAME ) + hb_osNewLine() )
|
||||
OutStd( cCommand + hb_osNewLine() )
|
||||
ENDIF
|
||||
IF ! s_lDONTEXEC
|
||||
nErrorLevel := hb_run( PathSepToTarget( s_cPROGNAME ) )
|
||||
nErrorLevel := hb_run( cCommand )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
@@ -3752,6 +3801,7 @@ STATIC PROCEDURE ShowHelp( lLong )
|
||||
" -ldflag:<f> pass flag to linker (executable)" ,;
|
||||
" -aflag:<f> pass flag to linker (static library)" ,;
|
||||
" -dflag:<f> pass flag to linker (dynamic library)" ,;
|
||||
" -runflag:<f> pass flag to output executable when -run option is used" ,;
|
||||
" -hbcmp stop after creating the object files" ,;
|
||||
" create link/copy hbmk to hbcmp for the same effect" ,;
|
||||
" -hbcc stop after creating the object files and accept raw C flags" ,;
|
||||
|
||||
@@ -289,7 +289,40 @@ PROCEDURE Main_ARRAY()
|
||||
|
||||
/* ASort() */
|
||||
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||NIL})) , "ABCDEFGHIJ" ) /* Bug/Feature in CA-Cl*pper, it will return: "IHGFEDCBAJ" */
|
||||
/* Different results in Harbour and CA-Cl*pper due to different
|
||||
sorting algorithms. Anyhow the results pattern should match.
|
||||
[vszakats] */
|
||||
#ifdef __HARBOUR__
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||NIL})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||hb_SToD()})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"0"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"1"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"2"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"a"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"A"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||""})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"z"})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||.T.})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||.F.})) , "FEIDGCHBJA" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||2})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||1})) , "DCBAEFIHGJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||0})) , "FEIDGCHBJA" )
|
||||
#else
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||NIL})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||hb_SToD()})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"0"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"1"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"2"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"a"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"A"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||""})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||"z"})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||.T.})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||.F.})) , "DCEABJIHFG" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||2})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||1})) , "IHGFEDCBAJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),,,{||0})) , "DCEABJIHFG" )
|
||||
#endif
|
||||
TEST_LINE( TAStr(ASort(TARRv())) , "ABCDEFGHIJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),NIL,NIL)) , "ABCDEFGHIJ" )
|
||||
TEST_LINE( TAStr(ASort(TARRv(),NIL, -2)) , "ABCDEFGHIJ" )
|
||||
|
||||
Reference in New Issue
Block a user