2008-10-16 08:42 UTC+0200 Viktor Szakats (harbour.01 syenar hu)

* include/common.ch
  * contrib/hbziparc/hbziparc.prg
  * source/rtl/tclass.prg
  * source/rtl/hbini.prg
    * Minor formatting. (hb_Is*() -> hb_is*())

  * contrib/hbct/ctrand.prg
  * contrib/hbct/numconv.prg
  * contrib/hbct/cttime.prg
  * contrib/hbct/showtime.prg
  * contrib/hbwhat/hbwhat.ch
  * utils/hbrun/hbrun.prg
  * source/debug/dbgtobj.prg
  * source/debug/dbgbrwsr.prg
  * source/debug/dbgthsh.prg
  * source/debug/dbgtarr.prg
  * source/rtl/alert.prg
  * source/rtl/tbrowse.prg
    % ValType() -> IS*() / hb_is*()

  * contrib/hbwhat/hbwhat.ch
    % Using common.ch instead of replicating logic.
    * Some formatting.

  * utils/hbtest/hbtest.prg
    * Minor formatting.
This commit is contained in:
Viktor Szakats
2008-10-16 06:44:26 +00:00
parent d04381ed75
commit 992016b359
18 changed files with 106 additions and 81 deletions

View File

@@ -8,6 +8,34 @@
2008-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org)
*/
2008-10-16 08:42 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* include/common.ch
* contrib/hbziparc/hbziparc.prg
* source/rtl/tclass.prg
* source/rtl/hbini.prg
* Minor formatting. (hb_Is*() -> hb_is*())
* contrib/hbct/ctrand.prg
* contrib/hbct/numconv.prg
* contrib/hbct/cttime.prg
* contrib/hbct/showtime.prg
* contrib/hbwhat/hbwhat.ch
* utils/hbrun/hbrun.prg
* source/debug/dbgtobj.prg
* source/debug/dbgbrwsr.prg
* source/debug/dbgthsh.prg
* source/debug/dbgtarr.prg
* source/rtl/alert.prg
* source/rtl/tbrowse.prg
% ValType() -> IS*() / hb_is*()
* contrib/hbwhat/hbwhat.ch
% Using common.ch instead of replicating logic.
* Some formatting.
* utils/hbtest/hbtest.prg
* Minor formatting.
2008-10-16 08:10 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbwhat/wincore.prg
! One STATIC made THREAD STATIC.

View File

@@ -1,6 +1,7 @@
/*
* $Id$
*/
/*
* Harbour Project source code:
* CT3 functions: RANDOM(), RAND()
@@ -52,7 +53,7 @@
#include "common.ch"
FUNCTION Random( lMode )
RETURN IIF( VALTYPE( lMode ) == "L" .AND. lMode, ;
RETURN IIF( ISLOGICAL( lMode ) .AND. lMode, ;
HB_RandomInt( -32768, 32767 ), HB_RandomInt( 0, 65535 ) )
FUNCTION Rand( nStart )

View File

@@ -51,11 +51,13 @@
*
*/
#include "common.ch"
function TIMETOSEC( cTime )
local nSec := 0, nLen, i, aLim, aMod, nInd, n
if cTime == NIL
nSec := seconds()
elseif valtype( cTime ) == "C"
elseif ISCHARACTER( cTime )
nLen := len( cTime )
if ( nLen + 1 ) % 3 == 0 .and. nLen <= 11
nInd := 1
@@ -80,8 +82,8 @@ return round( nSec, 2) /* round FL val to be sure that you can compare it */
function SECTOTIME( nSec, lHundr )
local i, h, n
n := iif( !valtype( nSec ) == "N", seconds(), nSec )
if valtype( lHundr ) == "L" .and. lHundr
n := iif( !ISNUMBER( nSec ), seconds(), nSec )
if ISLOGICAL( lHundr ) .and. lHundr
h := ":" + strzero( ( nSec * 100 ) % 100, 2 )
else
h := ""

View File

@@ -88,7 +88,7 @@ LOCAL cNum
Default cPad to " "
Default nBase to 10
IF VALTYPE( xNum ) == "C"
IF ISCHARACTER( xNum )
xNum := UPPER( ALLTRIM( xNum ) )
xNum := CTON( xNum, 16 )
ENDIF

View File

@@ -54,7 +54,7 @@
FUNCTION SHOWTIME( nRow, nCol, lNoSec, cColor, l12, lAmPm )
STATIC s_hTimer := NIL
IF VALTYPE( nRow ) == "N" .AND. nRow >= 0 .AND. nRow <= MAXROW( .T. )
IF ISNUMBER( nRow ) .AND. nRow >= 0 .AND. nRow <= MAXROW( .T. )
IF s_hTimer != NIL
HB_IDLEDEL( s_hTimer )
ENDIF

View File

@@ -2,6 +2,8 @@
* $Id$
*/
#include "common.ch"
#xCommand ? ? < x > = > OutputDebugString( asString( < x > ) )
#xCommand ? < x > = > OutputDebugString( asString( < x > ) + chr( 13 ) )
@@ -56,45 +58,36 @@ GET < Var > ;
// Variable type identifier pseudo-functions
////////////////////////////////////////////
#translate ISNIL( <v1> ) => ( (<v1>) == NIL )
#translate ISARRAY( <v1> ) => ( VALTYPE( <v1> ) == "A" )
#translate ISBLOCK( <v1> ) => ( VALTYPE( <v1> ) == "B" )
#translate ISCHARACTER( <v1> ) => ( VALTYPE( <v1> ) == "C" )
#translate ISCHAR( <v1> ) => ( VALTYPE( <v1> ) == "C" )
#translate ISSTRING( <v1> ) => ( VALTYPE( <v1> ) == "C" )
#translate ISDATE( <v1> ) => ( VALTYPE( <v1> ) == "D" )
#translate ISLOGICAL( <v1> ) => ( VALTYPE( <v1> ) == "L" )
#translate ISNUMBER( <v1> ) => ( VALTYPE( <v1> ) == "N" )
#translate ISNUMERIC( <v1> ) => ( VALTYPE( <v1> ) == "N" )
#translate ISOBJECT( <v1> ) => ( VALTYPE( <v1> ) == "O" )
#translate ISCHAR( <v1> ) => ( hb_isString( <v1> ) )
#translate ISSTRING( <v1> ) => ( hb_isString( <v1> ) )
#translate ISNUMERIC( <v1> ) => ( hb_isNumeric( <v1> ) )
#translate IFNIL( <v1>,<exp1>,<exp2> ) => IF( (<v1>) == NIL,<exp1>,<exp2> )
#translate IFARRAY( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "A",<exp1>,<exp2> )
#translate IFBLOCK( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "B",<exp1>,<exp2> )
#translate IFCHARACTER( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "C",<exp1>,<exp2> )
#translate IFCHAR( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "C",<exp1>,<exp2> )
#translate IFSTRING( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "C",<exp1>,<exp2> )
#translate IFDATE( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "D",<exp1>,<exp2> )
#translate IFLOGICAL( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "L",<exp1>,<exp2> )
#translate IFNUMBER( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "N",<exp1>,<exp2> )
#translate IFNUMERIC( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "N",<exp1>,<exp2> )
#translate IFOBJECT( <v1>,<exp1>,<exp2> ) => IF( VALTYPE( <v1> ) == "O",<exp1>,<exp2> )
#translate IFEMPTY( <v1>,<exp1>,<exp2> ) => IF( EMPTY( <v1> ),<exp1>,<exp2> )
#translate IFARRAY( <v1>,<exp1>,<exp2> ) => IF( hb_isArray( <v1> ),<exp1>,<exp2> )
#translate IFBLOCK( <v1>,<exp1>,<exp2> ) => IF( hb_isBlock( <v1> ),<exp1>,<exp2> )
#translate IFCHARACTER( <v1>,<exp1>,<exp2> ) => IF( hb_isString( <v1> ),<exp1>,<exp2> )
#translate IFCHAR( <v1>,<exp1>,<exp2> ) => IF( hb_isString( <v1> ),<exp1>,<exp2> )
#translate IFSTRING( <v1>,<exp1>,<exp2> ) => IF( hb_isString( <v1> ),<exp1>,<exp2> )
#translate IFDATE( <v1>,<exp1>,<exp2> ) => IF( hb_isDate( <v1> ),<exp1>,<exp2> )
#translate IFLOGICAL( <v1>,<exp1>,<exp2> ) => IF( hb_isLogical( <v1> ),<exp1>,<exp2> )
#translate IFNUMBER( <v1>,<exp1>,<exp2> ) => IF( hb_isNumeric( <v1> ),<exp1>,<exp2> )
#translate IFNUMERIC( <v1>,<exp1>,<exp2> ) => IF( hb_isNumeric( <v1> ),<exp1>,<exp2> )
#translate IFOBJECT( <v1>,<exp1>,<exp2> ) => IF( hb_isObject( <v1> ),<exp1>,<exp2> )
#translate IFEMPTY( <v1>,<exp1>,<exp2> ) => IF( Empty( <v1> ),<exp1>,<exp2> )
/////////////////////////////////////
// Abbreviated flow control modifiers
/////////////////////////////////////
#xcommand BREAKIF <log> => IF (<log>) ; BREAK ; END
#xcommand EXITIF <log> => IF (<log>) ; EXIT ; END
#xcommand LOOPIF <log> => IF (<log>) ; LOOP ; END
#xcommand BREAKIF <log> => IF (<log>) ; BREAK ; ENDIF
#xcommand EXITIF <log> => IF (<log>) ; EXIT ; ENDIF
#xcommand LOOPIF <log> => IF (<log>) ; LOOP ; ENDIF
// Extended commands
#command UPDATE <v1> IF <exp> TO <v2> ;
=> ;
IF <exp> ; <v1> := <v2> ; END
IF <exp> ; <v1> := <v2> ; ENDIF
#xtranslate frac(<num>) => (<num>-int(<num>))

View File

@@ -775,10 +775,10 @@ FUNCTION hb_ZipFile( cFileName,;
DEFAULT lWithPath TO .F.
DEFAULT lWithDrive TO .F.
IF hb_IsString( acFiles )
IF hb_isString( acFiles )
acFiles := { acFiles }
ENDIF
IF hb_IsString( acExclude )
IF hb_isString( acExclude )
acExclude := { acExclude }
ENDIF
@@ -823,7 +823,7 @@ FUNCTION hb_ZipFile( cFileName,;
IF ( hHandle := FOpen( cFileToZip, FO_READ ) ) != F_ERROR
IF hb_IsBlock( bUpdate )
IF hb_isBlock( bUpdate )
Eval( bUpdate, cFileToZip, nPos++ )
ENDIF
@@ -836,7 +836,7 @@ FUNCTION hb_ZipFile( cFileName,;
DO WHILE ( nLen := FRead( hHandle, @cBuffer, Len( cBuffer ) ) ) > 0
IF hb_IsBlock( bProgress )
IF hb_isBlock( bProgress )
nRead += nLen
Eval( bProgress, nRead, nSize )
ENDIF
@@ -951,8 +951,8 @@ FUNCTION hb_UnzipFile( cFileName, bUpdate, lWithPath, cPassword, cPath, acFiles,
IF !Empty( hUnzip := hb_UnzipOpen( cFileName ) )
IF hb_IsNumeric( acFiles ) .OR. ;
hb_IsString( acFiles )
IF hb_isNumeric( acFiles ) .OR. ;
hb_isString( acFiles )
acFiles := { acFiles }
ENDIF
@@ -972,7 +972,7 @@ FUNCTION hb_UnzipFile( cFileName, bUpdate, lWithPath, cPassword, cPath, acFiles,
IF AScan( acFiles, nPos ) > 0 .OR. ;
AScan( acFiles, {| cMask | hb_FileMatch( cZipName, cMask ) } ) > 0
IF hb_IsBlock( bUpdate )
IF hb_isBlock( bUpdate )
Eval( bUpdate, cZipName, nPos )
ENDIF
@@ -1046,7 +1046,7 @@ FUNCTION hb_ZipDeleteFiles( cFileName, acFiles )
ENDIF
ENDIF
IF hb_IsString( acFiles )
IF hb_isString( acFiles )
acFiles := { acFiles }
ENDIF

View File

@@ -61,14 +61,14 @@
/* Type checking macros */
#translate ISNIL( <xValue> ) => ( <xValue> == NIL )
#translate ISARRAY( <xValue> ) => hb_IsArray( <xValue> )
#translate ISBLOCK( <xValue> ) => hb_IsBlock( <xValue> )
#translate ISCHARACTER( <xValue> ) => hb_IsString( <xValue> )
#translate ISDATE( <xValue> ) => hb_IsDate( <xValue> )
#translate ISLOGICAL( <xValue> ) => hb_IsLogical( <xValue> )
#translate ISMEMO( <xValue> ) => hb_IsMemo( <xValue> )
#translate ISNUMBER( <xValue> ) => hb_IsNumeric( <xValue> )
#translate ISOBJECT( <xValue> ) => hb_IsObject( <xValue> )
#translate ISARRAY( <xValue> ) => hb_isArray( <xValue> )
#translate ISBLOCK( <xValue> ) => hb_isBlock( <xValue> )
#translate ISCHARACTER( <xValue> ) => hb_isString( <xValue> )
#translate ISDATE( <xValue> ) => hb_isDate( <xValue> )
#translate ISLOGICAL( <xValue> ) => hb_isLogical( <xValue> )
#translate ISMEMO( <xValue> ) => hb_isMemo( <xValue> )
#translate ISNUMBER( <xValue> ) => hb_isNumeric( <xValue> )
#translate ISOBJECT( <xValue> ) => hb_isObject( <xValue> )
/* DEFAULT and UPDATE commands */
#xcommand DEFAULT <v1> TO <x1> [, <vn> TO <xn> ] => ;

View File

@@ -169,7 +169,7 @@ METHOD ForceStable()
xData := Eval( oCol:block )
nClr := iif( nRow == ::rowPos, 2, 1 )
aClr := Eval( oCol:colorBlock, xData )
IF VALTYPE( aClr ) == "A"
IF ISARRAY( aClr )
nClr := aClr[ nClr ]
ELSE
nClr := oCol:defColor[ nClr ]

View File

@@ -258,14 +258,14 @@ METHOD SetsKeyPressed( nKey, oBrwSets, oWnd, cName, aArray ) CLASS HBDbArray
::nCurWindow--
ENDIF
ENDIF
ELSEIF ISBLOCK( aArray[ nSet ] ) .OR. Valtype( aArray[ nSet ] ) == "P"
ELSEIF ISBLOCK( aArray[ nSet ] ) .OR. hb_isPointer( aArray[ nSet ] )
__dbgAlert( "Value cannot be edited" )
ELSE
IF ::lEditable
oBrwSets:RefreshCurrent()
IF ISOBJECT( aArray[ nSet ] )
__DbgObject( aArray[ nSet ], cName + "[" + LTrim( Str( nSet ) ) + "]" )
ELSEIF ValType( aArray[ nSet ] ) == "H"
ELSEIF hb_isHash( aArray[ nSet ] )
__DbgHashes( aArray[ nSet ], cName + "[" + LTrim( Str( nSet ) ) + "]" )
ELSE
::doGet( oBrwsets, aArray, nSet )

View File

@@ -249,7 +249,7 @@ METHOD SetsKeyPressed( nKey, oBrwSets, oWnd, cName, hHash ) CLASS HBDbHash
uValue := HB_HValueAt( hHash, nSet )
IF ValType( uValue ) == "H"
IF hb_isHash( uValue )
IF Len( uValue ) == 0
__dbgAlert( "Hash is empty" )
@@ -269,7 +269,7 @@ METHOD SetsKeyPressed( nKey, oBrwSets, oWnd, cName, hHash ) CLASS HBDbHash
::nCurwindow--
ENDIF
ENDIF
ELSEIF ISBLOCK( uValue ) .OR. ValType( uValue ) == "P"
ELSEIF ISBLOCK( uValue ) .OR. hb_isPointer( uValue )
__dbgAlert( "Value cannot be edited" )
ELSE
IF ::lEditable

View File

@@ -307,7 +307,7 @@ METHOD SetsKeyPressed( nKey, oBrwSets, nSets, aArray ) CLASS HBDbObject
IF Len( aArray[ nSet, 2 ] ) > 0
HBDbArray():New( aArray[ nSet, 2 ], ::pitems[ nSet, 1 ] )
ENDIF
ELSEIF ValType( aArray[ nSet, 2 ] ) == "H"
ELSEIF hb_isHash( aArray[ nSet, 2 ] )
IF Len( aArray[ nSet, 2 ] ) > 0
HBDbHash():New( aArray[ nSet, 2 ], ::pitems[ nSet, 1 ] )
ENDIF
@@ -316,7 +316,7 @@ METHOD SetsKeyPressed( nKey, oBrwSets, nSets, aArray ) CLASS HBDbObject
ELSEIF ( ISCHARACTER( aArray[ nSet, 2 ] ) .AND. ;
!aArray[ nSet, 3 ] ) .OR. ;
ISBLOCK( aArray[ nSet, 2 ] ) .OR. ;
ValType( aArray[ nSet, 2 ] ) == "P"
hb_isPointer( aArray[ nSet, 2 ] )
__dbgAlert( "Value cannot be edited" )
ELSE
IF ::lEditable

View File

@@ -87,12 +87,12 @@ FUNCTION Alert( xMessage, aOptions, cColorNorm, nDelay )
DO CASE
CASE ValType( xMessage ) $ "CM" ; cMessage := StrTran( xMessage, ";", Chr( 10 ) )
CASE ValType( xMessage ) == "N" ; cMessage := LTrim( Str( xMessage ) )
CASE ValType( xMessage ) == "D" ; cMessage := DToC( xMessage )
CASE ValType( xMessage ) == "L" ; cMessage := iif( xMessage, ".T.", ".F." )
CASE ValType( xMessage ) == "O" ; cMessage := xMessage:className + " Object"
CASE ValType( xMessage ) == "S" ; cMessage := "@" + xMessage:Name + "()"
CASE ValType( xMessage ) == "B" ; cMessage := "{|| ... }"
CASE hb_IsNumeric( xMessage ) ; cMessage := LTrim( Str( xMessage ) )
CASE hb_IsDate( xMessage ) ; cMessage := DToC( xMessage )
CASE hb_IsLogical( xMessage ) ; cMessage := iif( xMessage, ".T.", ".F." )
CASE hb_IsObject( xMessage ) ; cMessage := xMessage:className + " Object"
CASE hb_IsSymbol( xMessage ) ; cMessage := "@" + xMessage:Name + "()"
CASE hb_IsBlock( xMessage ) ; cMessage := "{|| ... }"
OTHERWISE ; cMessage := "NIL"
ENDCASE

View File

@@ -299,7 +299,7 @@ FUNCTION hb_IniWrite( xFileName, hIni, cCommentBegin, cCommentEnd, lAutoMain )
ELSE
/* When automain is off, just write all the toplevel variables. */
hb_HEval( hIni, { |cKey, xVal| iif( ! hb_IsHash( xVal ),;
hb_HEval( hIni, { |cKey, xVal| iif( ! hb_isHash( xVal ),;
FWrite( hFile, hb_CStr( cKey ) + " = " + ;
hb_CStr( xVal ) + cNewLine ), /* nothing */ ) } )
ENDIF
@@ -314,7 +314,7 @@ FUNCTION hb_IniWrite( xFileName, hIni, cCommentBegin, cCommentEnd, lAutoMain )
ENDIF
ELSE
/* When automain is off, skip all the toplevel variables. */
IF ! hb_IsHash( cSection )
IF ! hb_isHash( cSection )
LOOP
ENDIF
ENDIF

View File

@@ -338,7 +338,7 @@ METHOD new( nTop, nLeft, nBottom, nRight ) CLASS TBROWSE
STATIC FUNCTION _SKIP_RESULT( xResult )
RETURN iif( ValType( xResult ) == "N", Int( xResult ), 0 )
RETURN iif( ISNUMBER( xResult ), Int( xResult ), 0 )
STATIC PROCEDURE _DISP_FHSEP( nRow, nType, cColor, aColData )

View File

@@ -172,7 +172,7 @@ STATIC FUNCTION New( cClassName, xSuper, sClassFunc, lModuleFriendly )
::asSuper := {}
ELSEIF ISCHARACTER( xSuper )
::asSuper := { __DynsN2Sym( xSuper ) }
ELSEIF hb_IsSymbol( xSuper )
ELSEIF hb_isSymbol( xSuper )
::asSuper := { xSuper }
ELSEIF ISARRAY( xSuper )
::asSuper := {}
@@ -181,7 +181,7 @@ STATIC FUNCTION New( cClassName, xSuper, sClassFunc, lModuleFriendly )
IF !Empty( xSuper[ i ] )
IF ISCHARACTER( xSuper[ i ] )
AAdd( ::asSuper, __DynsN2Sym( xSuper[ i ] ) )
ELSEIF hb_IsSymbol( xSuper[ i ] )
ELSEIF hb_isSymbol( xSuper[ i ] )
AAdd( ::asSuper, xSuper[ i ] )
ENDIF
ENDIF

View File

@@ -50,6 +50,7 @@
*
*/
#include "common.ch"
#include "inkey.ch"
#include "setcurs.ch"
@@ -192,19 +193,19 @@ PROCEDURE _APPMAIN( cFile, ... )
ENDDO
ENDIF
RETURN
RETURN
/* ********************************************************************** */
STATIC PROCEDURE HB_DotUsage()
OutStd( 'Harbour "DOt Prompt" Console / runner ' + HBRawVersion() + HB_OSNewLine() +;
'Copyright (c) 1999-2008, Przemyslaw Czerpak' + HB_OSNewLine() + ;
'http://www.harbour-project.org/' + HB_OSNewLine() +;
"Copyright (c) 1999-2008, Przemyslaw Czerpak" + HB_OSNewLine() + ;
"http://www.harbour-project.org/" + HB_OSNewLine() +;
HB_OSNewLine() +;
'Syntax: hbrun [<hrbfile[.prg|.hrb]> [<parameters,...>]]' + HB_OSNewLine() )
"Syntax: hbrun [<hrbfile[.prg|.hrb]> [<parameters,...>]]" + HB_OSNewLine() )
RETURN
RETURN
/* ********************************************************************** */
@@ -235,7 +236,7 @@ STATIC PROCEDURE HB_DotInfo( cCommand )
ENDIF
SetPos( r, c )
RETURN
RETURN
/* ********************************************************************** */
@@ -246,16 +247,16 @@ STATIC PROCEDURE HB_DotErr( oErr, cCommand )
cMessage := "Sorry, could not execute:;;" + cCommand + ";;"
IF oErr:ClassName == "ERROR"
cMessage += oErr:Description
IF ValType( oErr:Args ) == 'A' .AND. Len( oErr:Args ) > 0
IF ISARRAY( oErr:Args ) .AND. Len( oErr:Args ) > 0
cMessage += ";Arguments:"
FOR EACH xArg IN oErr:Args
cMessage += ";" + HB_CStr( xArg )
NEXT
ENDIF
ELSEIF ValType( oErr ) == 'C'
ELSEIF ISCHARACTER( oErr )
cMessage += oErr
ENDIF
cMessage += ";;" + ProcName( 2 ) + '(' + LTrim( Str( ProcLine( 2 ) ) ) + ')'
cMessage += ";;" + ProcName( 2 ) + "(" + LTrim( Str( ProcLine( 2 ) ) ) + ")"
Alert( cMessage )
@@ -296,7 +297,7 @@ STATIC PROCEDURE HB_DotExec( cCommand )
__MVSETBASE()
RETURN
RETURN
STATIC FUNCTION HBRawVersion()
RETURN StrTran( Version(), "Harbour ", "" )

View File

@@ -330,11 +330,11 @@ PROCEDURE TEST_CALL( cBlock, bBlock, xResultExpected )
s_nCount++
IF !( ValType( cBlock ) == "C" )
IF ValType( cBlock ) == "C"
lPPError := .F.
ELSE
cBlock := "!! Preprocessor error !!"
lPPError := .T.
ELSE
lPPError := .F.
ENDIF
lSkipped := AScan( s_aSkipList, s_nCount ) > 0
@@ -357,7 +357,7 @@ PROCEDURE TEST_CALL( cBlock, bBlock, xResultExpected )
ErrorBlock( bOldError )
IF !( ValType( xResult ) == ValType( xResultExpected ) )
IF ValType( xResultExpected) == "C" .AND. ValType( xResult ) $ "ABMO"
IF ValType( xResultExpected ) == "C" .AND. ValType( xResult ) $ "ABMO"
lFailed := !( XToStr( xResult ) == xResultExpected )
ELSE
lFailed := .T.