2012-09-26 01:24 UTC+0200 Viktor Szakats (harbour syenar.net)
* contrib/hbnf/aading.prg
* contrib/hbnf/aemaxlen.prg
* contrib/hbnf/aeminlen.prg
* contrib/hbnf/amedian.prg
* contrib/hbnf/any2any.prg
* contrib/hbnf/at2.prg
* contrib/hbnf/blink.prg
* contrib/hbnf/calendar.prg
* contrib/hbnf/clrsel.prg
* contrib/hbnf/d2e.prg
* contrib/hbnf/dectobin.prg
* contrib/hbnf/dfile.prg
* contrib/hbnf/diskfunc.prg
* contrib/hbnf/doc/en/dosver.txt
* contrib/hbnf/doc/en/proper.txt
* contrib/hbnf/doc/en/setdate.txt
* contrib/hbnf/doc/en/settime.txt
* contrib/hbnf/dosver.prg
* contrib/hbnf/e2d.prg
* contrib/hbnf/findith.prg
* contrib/hbnf/gcd.prg
* contrib/hbnf/hex2dec.prg
* contrib/hbnf/invclr.prg
* contrib/hbnf/isshare.prg
* contrib/hbnf/linked.prg
* contrib/hbnf/menu1.prg
* contrib/hbnf/metaph.prg
* contrib/hbnf/miltime.prg
* contrib/hbnf/mouse1.prg
* contrib/hbnf/mouse2.prg
* contrib/hbnf/netpv.prg
* contrib/hbnf/ntow.prg
* contrib/hbnf/nwlstat.prg
* contrib/hbnf/nwsem.prg
* contrib/hbnf/nwuid.prg
* contrib/hbnf/pending.prg
* contrib/hbnf/pickday.prg
* contrib/hbnf/prtesc.prg
* contrib/hbnf/rand1.prg
* contrib/hbnf/savesets.prg
* contrib/hbnf/scancode.prg
* contrib/hbnf/setdate.prg
* contrib/hbnf/settime.prg
* contrib/hbnf/sleep.prg
* contrib/hbnf/sysmem.prg
* contrib/hbnf/tempfile.prg
* contrib/hbnf/vertmenu.prg
* contrib/hbnf/vidmode.prg
* contrib/hbnf/wda.prg
* contrib/hbnf/workdays.prg
* contrib/hbnf/woy.prg
* contrib/hbnf/xbox.prg
* doc/codebloc.txt
* extras/hbxlsxml/tests/example.prg
* extras/hbxlsxml/tests/example2.prg
* extras/hbxlsxml/tests/example3.prg
* extras/httpsrv/uhttpd.prg
* website/samples/codebloc.prg.html
* website/samples/testbrw.prg.html
* website/samples/testcgi.prg.html
* more cleanup, formatting
This commit is contained in:
@@ -16,6 +16,69 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2012-09-26 01:24 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* contrib/hbnf/aading.prg
|
||||
* contrib/hbnf/aemaxlen.prg
|
||||
* contrib/hbnf/aeminlen.prg
|
||||
* contrib/hbnf/amedian.prg
|
||||
* contrib/hbnf/any2any.prg
|
||||
* contrib/hbnf/at2.prg
|
||||
* contrib/hbnf/blink.prg
|
||||
* contrib/hbnf/calendar.prg
|
||||
* contrib/hbnf/clrsel.prg
|
||||
* contrib/hbnf/d2e.prg
|
||||
* contrib/hbnf/dectobin.prg
|
||||
* contrib/hbnf/dfile.prg
|
||||
* contrib/hbnf/diskfunc.prg
|
||||
* contrib/hbnf/doc/en/dosver.txt
|
||||
* contrib/hbnf/doc/en/proper.txt
|
||||
* contrib/hbnf/doc/en/setdate.txt
|
||||
* contrib/hbnf/doc/en/settime.txt
|
||||
* contrib/hbnf/dosver.prg
|
||||
* contrib/hbnf/e2d.prg
|
||||
* contrib/hbnf/findith.prg
|
||||
* contrib/hbnf/gcd.prg
|
||||
* contrib/hbnf/hex2dec.prg
|
||||
* contrib/hbnf/invclr.prg
|
||||
* contrib/hbnf/isshare.prg
|
||||
* contrib/hbnf/linked.prg
|
||||
* contrib/hbnf/menu1.prg
|
||||
* contrib/hbnf/metaph.prg
|
||||
* contrib/hbnf/miltime.prg
|
||||
* contrib/hbnf/mouse1.prg
|
||||
* contrib/hbnf/mouse2.prg
|
||||
* contrib/hbnf/netpv.prg
|
||||
* contrib/hbnf/ntow.prg
|
||||
* contrib/hbnf/nwlstat.prg
|
||||
* contrib/hbnf/nwsem.prg
|
||||
* contrib/hbnf/nwuid.prg
|
||||
* contrib/hbnf/pending.prg
|
||||
* contrib/hbnf/pickday.prg
|
||||
* contrib/hbnf/prtesc.prg
|
||||
* contrib/hbnf/rand1.prg
|
||||
* contrib/hbnf/savesets.prg
|
||||
* contrib/hbnf/scancode.prg
|
||||
* contrib/hbnf/setdate.prg
|
||||
* contrib/hbnf/settime.prg
|
||||
* contrib/hbnf/sleep.prg
|
||||
* contrib/hbnf/sysmem.prg
|
||||
* contrib/hbnf/tempfile.prg
|
||||
* contrib/hbnf/vertmenu.prg
|
||||
* contrib/hbnf/vidmode.prg
|
||||
* contrib/hbnf/wda.prg
|
||||
* contrib/hbnf/workdays.prg
|
||||
* contrib/hbnf/woy.prg
|
||||
* contrib/hbnf/xbox.prg
|
||||
* doc/codebloc.txt
|
||||
* extras/hbxlsxml/tests/example.prg
|
||||
* extras/hbxlsxml/tests/example2.prg
|
||||
* extras/hbxlsxml/tests/example3.prg
|
||||
* extras/httpsrv/uhttpd.prg
|
||||
* website/samples/codebloc.prg.html
|
||||
* website/samples/testbrw.prg.html
|
||||
* website/samples/testcgi.prg.html
|
||||
* more cleanup, formatting
|
||||
|
||||
2012-09-26 00:52 UTC+0200 Viktor Szakats (harbour syenar.net)
|
||||
* contrib/hbamf/tests/tstendin.prg
|
||||
* contrib/hbnf/floptst.prg
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
LOCAL aList1,aList2,var0,nstart,nstop,nelapsed,nCtr
|
||||
CLS
|
||||
? "TEST TO DEMONSTRATE EXAMPLES OF FT_AADDITION"
|
||||
@@ -57,7 +57,7 @@ FUNCTION MAIN()
|
||||
? PADR("FT_AADDITION( aList1, aList2, .F., .F. ) ->",44)
|
||||
AEVAL( var0, { |x| QQOUT(x + ",") } )
|
||||
?
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
LOCAL var0, myarray1 := DIRECTORY()
|
||||
CLS
|
||||
? "TEST TO DEMONSTRATE EXAMPLES OF FT_AEMAXLEN"
|
||||
@@ -47,7 +47,7 @@ FUNCTION MAIN()
|
||||
? PADR('FT_AEMAXLEN( aTail( myarray1 ) ) ->',30)
|
||||
?? var0
|
||||
?
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
LOCAL var0, myarray1 := DIRECTORY()
|
||||
CLS
|
||||
? "TEST TO DEMONSTRATE EXAMPLES OF FT_AEMINLEN"
|
||||
@@ -50,7 +50,7 @@ FUNCTION MAIN()
|
||||
? PADR('FT_AEMINLEN( myarray1,3 ) ->',30)
|
||||
?? var0
|
||||
?
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
#include "directry.ch"
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
LOCAL var0, myarray0 := DIRECTORY(), myarray1 := {}
|
||||
CLS
|
||||
? "TEST TO DEMONSTRATE EXAMPLES OF FT_AMEDIAN"
|
||||
@@ -50,7 +50,7 @@ FUNCTION MAIN()
|
||||
? PADR('FT_AMEDIAN( myarray1, 8, 40 ) ->',35)
|
||||
?? var0
|
||||
?
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -43,7 +43,7 @@
|
||||
#define TRUE (.t.)
|
||||
#define FALSE (.f.)
|
||||
|
||||
#Define XTOC(x) CASE_AT(VALTYPE(x), "CNDLM", ;
|
||||
#define XTOC(x) CASE_AT(VALTYPE(x), "CNDLM", ;
|
||||
{ NULL, ;
|
||||
x, ;
|
||||
iif(IS_NUMERIC(x),;
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
LOCAL cSearch,cTarget,var0
|
||||
CLS
|
||||
? "TEST TO DEMONSTRATE EXAMPLES OF FT_AT2"
|
||||
@@ -51,7 +51,7 @@ FUNCTION MAIN()
|
||||
? PADR("FT_AT2( cSearch, cTarget, 2, .F. ) -> ",40)
|
||||
??var0
|
||||
?
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
FT_BLINK( "WAIT", 5, 10 )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_BLINK( cMsg, nRow, nCol )
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
#include "setcurs.ch"
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
local aRet[8], i
|
||||
setcolor ('w+/b')
|
||||
cls
|
||||
@@ -33,15 +33,15 @@
|
||||
endif
|
||||
keyboard chr (28)
|
||||
aRet := ft_calendar (10,40,'w+/rb',.t.,.t.) //display calendar, return all.
|
||||
@1,0 say 'Date :'+dtoc(aRet[1])
|
||||
@2,0 say 'Month Number:'+str(aRet[2],2,0)
|
||||
@3,0 say 'Day Number :'+str(aRet[3],2,0)
|
||||
@4,0 say 'Year Number :'+str(aRet[4],4,0)
|
||||
@5,0 say 'Month :'+aRet[5]
|
||||
@6,0 say 'Day :'+aRet[6]
|
||||
@7,0 say 'Julian Day :'+str(aRet[7],3,0)
|
||||
@8,0 say 'Current Time:'+aRet[8]
|
||||
RETURN NIL
|
||||
@ 1,0 say 'Date :'+dtoc(aRet[1])
|
||||
@ 2,0 say 'Month Number:'+str(aRet[2],2,0)
|
||||
@ 3,0 say 'Day Number :'+str(aRet[3],2,0)
|
||||
@ 4,0 say 'Year Number :'+str(aRet[4],4,0)
|
||||
@ 5,0 say 'Month :'+aRet[5]
|
||||
@ 6,0 say 'Day :'+aRet[6]
|
||||
@ 7,0 say 'Julian Day :'+str(aRet[7],3,0)
|
||||
@ 8,0 say 'Current Time:'+aRet[8]
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
#include "inkey.ch"
|
||||
|
||||
@@ -96,9 +96,9 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#IFDEF FT_TEST
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION Main( cVidMode )
|
||||
PROCEDURE Main( cVidMode )
|
||||
|
||||
LOCAL nRowDos := ROW()
|
||||
LOCAL nColDos := COL()
|
||||
@@ -145,9 +145,9 @@
|
||||
SETPOS( nRowDos, nColDos )
|
||||
SETBLINK( .F. ) // doesn't appear to be reset from FT_RestSets
|
||||
|
||||
RETURN Nil
|
||||
RETURN
|
||||
|
||||
#ENDIF
|
||||
#endif
|
||||
|
||||
*------------------------------------------------
|
||||
FUNCTION FT_ClrSel( aClrs, lColour, cChr )
|
||||
|
||||
@@ -29,9 +29,10 @@
|
||||
#command DEFAULT <p> TO <val> => <p> := iif( <p> == NIL, <val>, <p> )
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main( cNum, cPrec )
|
||||
PROCEDURE Main( cNum, cPrec )
|
||||
DEFAULT cPrec TO str( DEFAULT_PRECISION )
|
||||
return qout( ft_d2e( val(cNum), val(cPrec) ) )
|
||||
qout( ft_d2e( val(cNum), val(cPrec) ) )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
function ft_d2e( nDec, nPrecision )
|
||||
|
||||
@@ -26,12 +26,12 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN
|
||||
PROCEDURE Main()
|
||||
LOCAL X
|
||||
FOR X := 1 TO 255
|
||||
QOUT( FT_DEC2BIN( x ))
|
||||
next
|
||||
return nil
|
||||
return
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,7 +31,7 @@ THREAD static nHandle := 0
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
|
||||
@ 0,0 CLEAR
|
||||
|
||||
@@ -77,7 +77,7 @@ THREAD static nHandle := 0
|
||||
|
||||
@ 20,0 SAY "Key pressed was: " + '[' + cKey + ']'
|
||||
|
||||
return (NIL)
|
||||
return
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -31,12 +31,12 @@
|
||||
#define DRVTABLE "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cDrv )
|
||||
PROCEDURE Main( cDrv )
|
||||
|
||||
QOut("Disk size: " + str( FT_DSKSIZE() ) )
|
||||
QOut("Free bytes: " + str( FT_DSKFREE() ) )
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_DSKSIZE( cDrive )
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
*
|
||||
*
|
||||
* $EXAMPLES$
|
||||
* FUNCTION main()
|
||||
* RETURN QOut( "Dos version: " + FT_DOSVER() )
|
||||
* PROCEDURE Main()
|
||||
* QOut( "Dos version: " + FT_DOSVER() )
|
||||
* RETURN
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -32,8 +32,8 @@
|
||||
* and Mark Zechiel; it was re-written in C (and thus, optimized
|
||||
* and enhanced) by Robert DiFalco.
|
||||
* $EXAMPLES$
|
||||
* FUNCTION main( cStr )
|
||||
* OutStd( FT_PROPER( cStr ) + chr(13) + chr(10) )
|
||||
* RETURN ( nil )
|
||||
* PROCEDURE Main( cStr )
|
||||
* OutStd( FT_PROPER( cStr ) + hb_eol() )
|
||||
* RETURN
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -31,14 +31,14 @@
|
||||
* The following program takes a date from the command line and sets
|
||||
* the DOS system date:
|
||||
*
|
||||
* FUNCTION main( cDate )
|
||||
* PROCEDURE Main( cDate )
|
||||
*
|
||||
* cDate := iif( cDate == nil, dtoc( date() ), cDate )
|
||||
* cDate := iif( cDate == NIL, DToC( Date() ), cDate )
|
||||
* QOut( "Setting date to: " + cDate + "... " )
|
||||
* FT_SETDATE( ctod( cDate ) )
|
||||
* Qout( "Today is now: " + dtoc( date() ) )
|
||||
* FT_SETDATE( CToD( cDate ) )
|
||||
* QOut( "Today is now: " + DToC( Date() ) )
|
||||
*
|
||||
* RETURN NIL
|
||||
* RETURN
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -29,14 +29,14 @@
|
||||
* The following program takes a time string from the command line and sets
|
||||
* the DOS system time:
|
||||
*
|
||||
* FUNCTION main( cTime )
|
||||
* PROCEDURE Main( cTime )
|
||||
*
|
||||
* cTime := iif( cTime == nil, time(), cTime )
|
||||
* cTime := iif( cTime == NIL, Time(), cTime )
|
||||
* QOut( "Setting time to: " + cTime + "... " )
|
||||
* FT_SETTIME( cTime )
|
||||
* Qout( "Time is now: " + time() )
|
||||
* QOut( "Time is now: " + Time() )
|
||||
*
|
||||
* RETURN NIL
|
||||
* RETURN
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#define DOSVER 48
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
QOut( "Dos version: " + FT_DOSVER() )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_DOSVER()
|
||||
|
||||
@@ -25,8 +25,9 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main( sNumE )
|
||||
return qout( FT_E2D( sNumE ) )
|
||||
PROCEDURE Main( sNumE )
|
||||
qout( FT_E2D( sNumE ) )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
function ft_e2d( sNumE )
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
#define NULL ""
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cCk, cStr, nOcc, xCase )
|
||||
PROCEDURE Main( cCk, cStr, nOcc, xCase )
|
||||
LOCAL nFind
|
||||
if pcount() != 4
|
||||
QOut( "usage: findith cCk cStr nOcc xCase")
|
||||
@@ -43,7 +43,7 @@
|
||||
QOut( cStr )
|
||||
nFind := FT_FINDITH( cCk, cStr, nOcc, xCase )
|
||||
QOut( iif( nFind > 0, space( nFind - 1) + "^" , "Not found" ) )
|
||||
RETURN nil
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_FINDITH(cCheckFor,cCheckIn,nWhichOccurrence,lIgnoreCase)
|
||||
|
||||
@@ -33,8 +33,9 @@
|
||||
IF <Condition> ; EXIT ; END ; END
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cNum1, cNum2 )
|
||||
RETURN OUTSTD( STR(FT_GCD( val(cNum1), val(cNum2) )) + CHR(13) + CHR(10) )
|
||||
PROCEDURE Main( cNum1, cNum2 )
|
||||
OUTSTD( STR(FT_GCD( val(cNum1), val(cNum2) )) + hb_eol() )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_GCD(nNumber1, nNumber2)
|
||||
|
||||
@@ -30,9 +30,9 @@
|
||||
#define HEXTABLE "0123456789ABCDEF"
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cHexNum )
|
||||
PROCEDURE Main( cHexNum )
|
||||
QOut( FT_HEX2DEC( cHexNum ) )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_HEX2DEC( cHexNum )
|
||||
|
||||
@@ -24,7 +24,7 @@
|
||||
*
|
||||
*/
|
||||
|
||||
#Command DEFAULT <Param1> TO <Def1> [, <ParamN> TO <DefN> ] ;
|
||||
#command DEFAULT <Param1> TO <Def1> [, <ParamN> TO <DefN> ] ;
|
||||
=> ;
|
||||
<Param1> := iif(<Param1> == NIL,<Def1>,<Param1>) ;
|
||||
[; <ParamN> := iif(<ParamN> == NIL,<DefN>,<ParamN>)]
|
||||
|
||||
@@ -31,21 +31,21 @@
|
||||
#include "ftint86.ch"
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main()
|
||||
PROCEDURE Main()
|
||||
local nLoaded := ft_isshare()
|
||||
|
||||
do case
|
||||
case nLoaded == 0
|
||||
Qout("Share not loaded, but ok to load")
|
||||
case nLoaded == 1
|
||||
Qout("Share not loaded, but NOT ok to load!")
|
||||
case nLoaded == 255
|
||||
Qout("Share is loaded!")
|
||||
case nLoaded == 0
|
||||
Qout("Share not loaded, but ok to load")
|
||||
case nLoaded == 1
|
||||
Qout("Share not loaded, but NOT ok to load!")
|
||||
case nLoaded == 255
|
||||
Qout("Share is loaded!")
|
||||
endcase
|
||||
|
||||
Qout("Retcode: " + str( nLoaded ) )
|
||||
|
||||
return nil
|
||||
return
|
||||
#endif
|
||||
|
||||
FUNCTION ft_isshare()
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION Main
|
||||
PROCEDURE Main()
|
||||
LOCAL cString
|
||||
LOCAL aString := { "TRIM('abc ')", ;
|
||||
"NotARealFunc()", ;
|
||||
@@ -41,11 +41,11 @@
|
||||
"EOF(>> Note: Syntax IS NOT checked! <<)" ;
|
||||
}
|
||||
CLS
|
||||
@1,0 SAY "String Tested Result"
|
||||
@2,0 TO 2,MAXCOL()
|
||||
@ 1,0 SAY "String Tested Result"
|
||||
@ 2,0 TO 2,MAXCOL()
|
||||
AEVAL(aString, {|ele,num| QOUT(ele, SPACE(45-LEN(ele)), FT_Linked(ele)) } )
|
||||
@MAXROW()-2,0
|
||||
RETURN NIL
|
||||
@ MAXROW()-2,0
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ THREAD STATIC ACHOICES := {}, AVALIDKEYS := {}
|
||||
THREAD STATIC NHPOS, NVPOS, NMAXROW, NMAXCOL
|
||||
|
||||
// BEGINNING OF DEMO PROGRAM
|
||||
#IFDEF FT_TEST
|
||||
#ifdef FT_TEST
|
||||
// DUMMY PROCEDURE NAME SO "CCMDLINE" WILL BE LOCAL
|
||||
PROCEDURE CALLMENU( cCmdLine )
|
||||
LOCAL sDosScrn, nDosRow, nDosCol, lColor
|
||||
|
||||
@@ -97,8 +97,8 @@
|
||||
|
||||
// #define FT_TEST .T.
|
||||
|
||||
#IFDEF FT_TEST
|
||||
FUNCTION MAIN()
|
||||
#ifdef FT_TEST
|
||||
PROCEDURE Main()
|
||||
LOCAL cJunk := SPACE( 8000 )
|
||||
LOCAL aNames := {}
|
||||
LOCAL cName, nElem
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
function main()
|
||||
PROCEDURE Main()
|
||||
|
||||
cls
|
||||
? "am-pm"
|
||||
@@ -58,7 +58,7 @@
|
||||
? "sys to mil"
|
||||
? time()
|
||||
? ft_sys2mil()
|
||||
return nil
|
||||
return
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ THREAD static s_lMinit:=.F.
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN(nRow,nCol)
|
||||
PROCEDURE Main(nRow,nCol)
|
||||
|
||||
* Pass valid row and column values for different video modes to change modes
|
||||
|
||||
@@ -192,7 +192,7 @@ THREAD static s_lMinit:=.F.
|
||||
|
||||
FT_MSETSENS(nHoriz, nVert, nDouble)
|
||||
|
||||
RETURN nil
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ THREAD static lMinit:=.F.
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN(nRow,nCol)
|
||||
PROCEDURE Main(nRow,nCol)
|
||||
|
||||
* Pass valid row and column values for different video modes to change modes
|
||||
|
||||
@@ -263,7 +263,7 @@ THREAD static lMinit:=.F.
|
||||
|
||||
FT_MSETSENS(nHoriz, nVert, nDouble)
|
||||
|
||||
RETURN nil
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -25,9 +25,9 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
? FT_NETPV( 10000, 10, { 10000,15000,16000,17000 } )
|
||||
RETURN ( nil )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_NETPV(nInitialInvestment, nInterestRate, aCashFlow, nNoOfCashFlows)
|
||||
|
||||
@@ -37,8 +37,9 @@ static sc_tens := { "", "", " Twenty", " Thirty", " Forty", " Fifty", ;
|
||||
static sc_qualifiers := { "", " Thousand", " Million", " Billion", " Trillion" }
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main( cNum )
|
||||
return qout( ft_ntow( val( cNum ) ) )
|
||||
PROCEDURE Main( cNum )
|
||||
qout( ft_ntow( val( cNum ) ) )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
function ft_ntow(nAmount)
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#define STATNUM 220
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
QOut( "Logical station: " + str( FT_NWLSTAT() ) )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_NWLSTAT()
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
#define INITIAL_SEMAPHORE_VALUE 2
|
||||
#define WAIT_SECONDS 1
|
||||
|
||||
function main()
|
||||
PROCEDURE Main()
|
||||
local nInitVal, nRc, nHandle, nValue, nOpenCnt
|
||||
|
||||
cls
|
||||
@@ -91,12 +91,12 @@
|
||||
|
||||
tone( nHandle,.5 )
|
||||
ft_nwSemEx( nHandle, @nValue, @nOpenCnt )
|
||||
end
|
||||
enddo
|
||||
|
||||
qout( "Signal returns: " + str( ft_nwsemSig( nHandle ) ) )
|
||||
qout( "Close returns: " + str( ft_nwsemClose( nHandle ) ) )
|
||||
|
||||
return nil
|
||||
return
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
#define NW_LOG 227
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
local x, cUid
|
||||
QOut( "I am: [" + FT_NWUID() + "]" )
|
||||
QOut( "---------------------" )
|
||||
@@ -50,7 +50,7 @@
|
||||
endif
|
||||
next
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_NWUID( nConn )
|
||||
|
||||
@@ -22,15 +22,15 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
@0,0 CLEAR
|
||||
PROCEDURE Main()
|
||||
@ 0,0 CLEAR
|
||||
FT_PENDING("Message one",20,0,3,"W+/G") // Displays "Message one."
|
||||
// sets row to 20, col to 0.
|
||||
// wait to 3 and color to
|
||||
// bright white over green.
|
||||
FT_PENDING("Message two") // Displays "Message two", after 5 sec.
|
||||
FT_PENDING("Message three") // Displays "Message three", after 5 sec.
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_PENDING (cMsg, nRow, nCol, nWait, cColor)
|
||||
|
||||
@@ -29,13 +29,13 @@
|
||||
// test code
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN
|
||||
QOUT("You selected " + FT_PICKDAY())
|
||||
return nil
|
||||
PROCEDURE Main()
|
||||
QOUT("You selected " + FT_PICKDAY())
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
function FT_PICKDAY
|
||||
function FT_PICKDAY()
|
||||
LOCAL DAYS := { "SUNDAY", "MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", ;
|
||||
"FRIDAY", "SATURDAY" }, SEL := 0
|
||||
LOCAL OLDSCRN := SAVESCREEN(8, 35, 16, 45), oldcolor := setcolor('+w/r')
|
||||
|
||||
@@ -25,7 +25,7 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cParm1 )
|
||||
PROCEDURE Main( cParm1 )
|
||||
*-------------------------------------------------------
|
||||
* Sample routine to test function from command line
|
||||
*-------------------------------------------------------
|
||||
@@ -37,7 +37,7 @@
|
||||
? " outputs converted code to standard output"
|
||||
?
|
||||
ENDIF
|
||||
RETURN (nil)
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_ESCCODE( cInput )
|
||||
|
||||
@@ -30,14 +30,14 @@
|
||||
// Run it multiple times and redirect output to a file
|
||||
// to check it
|
||||
|
||||
function main()
|
||||
PROCEDURE Main()
|
||||
local x
|
||||
|
||||
for x := 1 to 100
|
||||
outstd( int( ft_rand1(100) ) )
|
||||
outstd( chr(13) + chr(10) )
|
||||
outstd( hb_eol() )
|
||||
next
|
||||
return nil
|
||||
return
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -34,10 +34,10 @@
|
||||
#define FT_SET_BLINK _SET_COUNT + 2
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN
|
||||
PROCEDURE Main()
|
||||
LOCAL ASETS := FT_SAVESETS()
|
||||
INKEY(0)
|
||||
RETURN Nil
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_SAVESETS()
|
||||
|
||||
@@ -33,9 +33,9 @@
|
||||
|
||||
#ifdef FT_TEST
|
||||
|
||||
#DEFINE SCANCODE_ESCAPE (chr(27) + chr(1))
|
||||
#define SCANCODE_ESCAPE (chr(27) + chr(1))
|
||||
|
||||
FUNCTION main()
|
||||
PROCEDURE Main()
|
||||
LOCAL getlist, cKey
|
||||
CLEAR
|
||||
QOut("Press any key, ESCape to exit:")
|
||||
@@ -46,8 +46,8 @@
|
||||
if cKey == SCANCODE_ESCAPE
|
||||
exit
|
||||
endif
|
||||
end
|
||||
RETURN nil
|
||||
enddo
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -34,14 +34,14 @@
|
||||
#define SETDATE 43
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cDate )
|
||||
PROCEDURE Main( cDate )
|
||||
|
||||
cDate := iif( cDate == nil, dtoc( date() ), cDate )
|
||||
QOut( "Setting date to: " + cDate + "... " )
|
||||
FT_SETDATE( ctod( cDate ) )
|
||||
Qout( "Today is now: " + dtoc( date() ) )
|
||||
QOut( "Today is now: " + dtoc( date() ) )
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
function FT_SETDATE( dDate )
|
||||
|
||||
@@ -38,12 +38,12 @@
|
||||
#define MINS( ts ) ( val( substr( ts, 4, 2 ) ) )
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cTime )
|
||||
PROCEDURE Main( cTime )
|
||||
cTime := iif( cTime == nil, time(), cTime )
|
||||
QOut( "Setting time to: " + cTime + "... " )
|
||||
FT_SETTIME( cTime )
|
||||
Qout( "Time is now: " + time() )
|
||||
RETURN NIL
|
||||
QOut( "Time is now: " + time() )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
function FT_SETTIME( cTime )
|
||||
|
||||
@@ -27,13 +27,13 @@
|
||||
* Invoke by running SLEEP 1.0 to sleep 1.0 seconds
|
||||
*
|
||||
|
||||
FUNCTION MAIN(nSleep)
|
||||
PROCEDURE Main(nSleep)
|
||||
|
||||
? "Time is now: " + time()
|
||||
FT_SLEEP(VAL(nSleep))
|
||||
? "Time is now: " + time()
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -35,9 +35,9 @@
|
||||
#define MEMSIZE 18
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
QOut( "Conventional memory: " + str( FT_SYSMEM() ) + "K installed" )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_SYSMEM()
|
||||
|
||||
@@ -115,7 +115,7 @@
|
||||
#endif /* FT_TEMPFILE_ORIGINAL */
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cPath, cHide )
|
||||
PROCEDURE Main( cPath, cHide )
|
||||
LOCAL cFile, nHandle
|
||||
cFile := FT_TEMPFIL( cPath, (cHide == "Y") )
|
||||
|
||||
@@ -127,5 +127,5 @@
|
||||
else
|
||||
Qout( "An error occurred" )
|
||||
endif
|
||||
RETURN nil
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
@@ -26,7 +26,7 @@
|
||||
// test code
|
||||
#ifdef FT_TEST
|
||||
|
||||
FUNCTION MAIN
|
||||
PROCEDURE Main()
|
||||
LOCAL MAINMENU := ;
|
||||
{ { "DATA ENTRY", "ENTER DATA", { || FT_MENU2(datamenu) } }, ;
|
||||
{ "Reports", "Hard copy", { || FT_MENU2(repmenu) } }, ;
|
||||
@@ -51,7 +51,7 @@ local maintmenu := { { "Reindex", "Rebuild index files", { || re_ntx() } } , ;
|
||||
{ "Exit", "Return to Main Menu" } }
|
||||
|
||||
FT_MENU2(mainmenu)
|
||||
return nil
|
||||
return
|
||||
|
||||
/* stub functions to avoid missing symbols */
|
||||
static function cust
|
||||
|
||||
@@ -34,11 +34,11 @@
|
||||
#define GETMODE 15
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN( cMode )
|
||||
PROCEDURE Main( cMode )
|
||||
|
||||
FT_SETMODE( val( cMode ) )
|
||||
QOut( "Video mode is: " + str( FT_GETMODE() ) )
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -22,11 +22,11 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main( cDate, cDays )
|
||||
PROCEDURE Main( cDate, cDays )
|
||||
local nDays := ft_addWkDy( ctod(cDate), val(cDays) )
|
||||
qout( "Num days to add: " + str( nDays ) )
|
||||
qout( "New date: " + dtoc( ctod( cDate ) + nDays ) )
|
||||
return nil
|
||||
return
|
||||
#endif
|
||||
|
||||
FUNCTION ft_addWkDy( dStart, nDys )
|
||||
|
||||
@@ -28,8 +28,9 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
function main( cStart, cStop )
|
||||
return qout( ft_workdays( ctod( cStart ), ctod( cStop ) ) )
|
||||
PROCEDURE Main( cStart, cStop )
|
||||
qout( ft_workdays( ctod( cStart ), ctod( cStop ) ) )
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
FUNCTION FT_WorkDays( dStart, dStop )
|
||||
|
||||
@@ -29,48 +29,48 @@
|
||||
|
||||
// ADD PARAMETER "CENTURY" ON COMMAND LINES TO TEST 4-DIGIT YEARS
|
||||
|
||||
FUNCTION MAIN( cCent )
|
||||
PROCEDURE Main( cCent )
|
||||
LOCAL lCentOn := .F., cDate
|
||||
MEMVAR getlist
|
||||
|
||||
IF VALTYPE( cCent) == "C" .AND. "CENT" $ UPPER( cCent)
|
||||
SET CENTURY ON
|
||||
lCentOn := .T.
|
||||
END
|
||||
SET CENTURY ON
|
||||
lCentOn := .T.
|
||||
ENDIF
|
||||
|
||||
DO WHILE .T.
|
||||
CLEAR
|
||||
@ 2,10 SAY "Date to Test"
|
||||
CLEAR
|
||||
@ 2,10 SAY "Date to Test"
|
||||
|
||||
IF lCentOn
|
||||
cDate := SPACE(10)
|
||||
@ 2,24 GET cDate PICTURE "##/##/####"
|
||||
ELSE
|
||||
cDate := SPACE(8)
|
||||
@ 2,24 GET cDate PICTURE "##/##/##"
|
||||
END
|
||||
READ
|
||||
IF lCentOn
|
||||
cDate := SPACE(10)
|
||||
@ 2,24 GET cDate PICTURE "##/##/####"
|
||||
ELSE
|
||||
cDate := SPACE(8)
|
||||
@ 2,24 GET cDate PICTURE "##/##/##"
|
||||
ENDIF
|
||||
READ
|
||||
|
||||
IF EMPTY(cDate)
|
||||
EXIT
|
||||
END
|
||||
IF EMPTY(cDate)
|
||||
EXIT
|
||||
ENDIF
|
||||
|
||||
IF Left( DTOC( CTOD( cDate) ), 1 ) == " "
|
||||
QQOUT( CHR( 7) )
|
||||
@ 4,24 SAY "INVALID DATE"
|
||||
INKEY(2)
|
||||
LOOP
|
||||
END
|
||||
IF Left( DTOC( CTOD( cDate) ), 1 ) == " "
|
||||
QQOUT( CHR( 7) )
|
||||
@ 4,24 SAY "INVALID DATE"
|
||||
INKEY(2)
|
||||
LOOP
|
||||
ENDIF
|
||||
|
||||
@ 4,10 SAY "Is Day Number " + STR( FT_DOY( CTOD( cDate)) ,3)
|
||||
@ 4,10 SAY "Is Day Number " + STR( FT_DOY( CTOD( cDate)) ,3)
|
||||
|
||||
@ 6,10 SAY "Is in Week Number " + STR( FT_WOY( CTOD( cDate)) ,2)
|
||||
@ 7,0
|
||||
WAIT
|
||||
END
|
||||
@ 6,10 SAY "Is in Week Number " + STR( FT_WOY( CTOD( cDate)) ,2)
|
||||
@ 7,0
|
||||
WAIT
|
||||
ENDDO
|
||||
|
||||
CLEAR
|
||||
RETURN nil
|
||||
RETURN
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
*/
|
||||
|
||||
#ifdef FT_TEST
|
||||
FUNCTION MAIN()
|
||||
PROCEDURE Main()
|
||||
local i
|
||||
setcolor('W/B')
|
||||
* clear screen
|
||||
@@ -45,7 +45,7 @@
|
||||
'of calculating the box size!',;
|
||||
'Even though this line is way too long, and is in fact more than 80 characters long, if you care to check!')
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
#endif
|
||||
|
||||
/* NOTE: In original NF, flag parameters were also accepted when
|
||||
|
||||
@@ -137,7 +137,7 @@ PROCEDURE Main()
|
||||
LOCAL cb
|
||||
PRIVATE a
|
||||
cb := Detach()
|
||||
? EVAL( cb, 10 )
|
||||
? Eval( cb, 10 )
|
||||
RETURN
|
||||
|
||||
The above code also prints 10 in Clipper (even if compiled with -a or -v
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
FUNCTION main()
|
||||
FUNCTION Main()
|
||||
LOCAL oXml, oSheet, xarquivo := "example.xml"
|
||||
LOCAL i, xqtddoc, xttotnot, xtbascal, xtvlricm, xtbasipi, xtvlripi, aDoc, nLinha
|
||||
LOCAL xEmpresa
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
FUNCTION main()
|
||||
FUNCTION Main()
|
||||
LOCAL xml, format1, format2, format3, format4
|
||||
LOCAL sheet1, sheet2, sheet4
|
||||
|
||||
@@ -149,4 +149,3 @@ FUNCTION main()
|
||||
RETURN NIL
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
|
||||
@@ -53,7 +53,7 @@
|
||||
*/
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
FUNCTION main()
|
||||
FUNCTION Main()
|
||||
LOCAL xml, sheet1, format4
|
||||
|
||||
xml:= ExcelWriterXML():New('my file.xml')
|
||||
@@ -82,4 +82,3 @@ FUNCTION main()
|
||||
RETURN NIL
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
|
||||
@@ -207,7 +207,7 @@ ANNOUNCE ERRORSYS
|
||||
//
|
||||
// ----------------------------------------
|
||||
|
||||
FUNCTION MAIN( ... )
|
||||
FUNCTION Main( ... )
|
||||
LOCAL nPort, hListen, hSocket, aRemote, cI, xVal
|
||||
LOCAL aThreads, nStartThreads, nMaxThreads, nStartServiceThreads
|
||||
LOCAL i, cPar, lStop
|
||||
|
||||
@@ -1,143 +1,143 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>codebloc.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>// codeblocks test
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> B := </SPAN><SPAN class=any1-string>"this will never print"
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> a := { |b,c| </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"I am a codeblock"</SPAN><SPAN class=any1-space> + b + c ) }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> d
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> de
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> ar := { </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> crlf:=</SPAN><SPAN class=any1-function>CHR</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> YY, X
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> x1, x2
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"this should print first"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>Eval</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>" with parameters"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>" ... and it works!"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
d =</SPAN><SPAN class=any1-string>"with access to local variables"
|
||||
|
||||
</SPAN><SPAN class=any1-space> a ={ |b,c| </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"I am a second codeblock "</SPAN><SPAN class=any1-space> +d +b +;
|
||||
</SPAN><SPAN class=any1-variable>IIF</SPAN><SPAN class=any1-symbol>(c==NIL, </SPAN><SPAN class=any1-string>' empty second parameter '</SPAN><SPAN class=any1-symbol>, c)), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(crlf), </SPAN><SPAN class=any1-string>"WITH return value"</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>", codeblock parameters"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>", codeblock parameters "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"and with second parameter"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>MyEval</SPAN><SPAN class=any1-symbol>( a ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-variable>OtherTest</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-variable>AnotherTest</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>"==> Another "</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
a ={|c| </SPAN><SPAN class=any1-variable>IIF</SPAN><SPAN class=any1-symbol>( c=NIL, {|a| </SPAN><SPAN class=any1-string>"First "</SPAN><SPAN class=any1-symbol>+a}, {|a| </SPAN><SPAN class=any1-string>"Second "</SPAN><SPAN class=any1-symbol>+a}) }
|
||||
a =</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>"codeblock created in a codeblock"</SPAN><SPAN class=any1-space> ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ] )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
a :={|| ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ]++}
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ] )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
yy :=</SPAN><SPAN class=any1-number>5
|
||||
</SPAN><SPAN class=any1-space> x :={|xx| </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-variable>LTRIM</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>STR</SPAN><SPAN class=any1-symbol>(xx))), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"+"</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-variable>LTRIM</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>STR</SPAN><SPAN class=any1-symbol>(yy))), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>), xx + yy }
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( x, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) </SPAN><SPAN class=any1-comment>//this is OK
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( CRLF )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( x, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) ) </SPAN><SPAN class=any1-comment>//this should ignore unnecesary parameters
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>RetBlock</SPAN><SPAN class=any1-symbol>(), </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-space> ) )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// BugToFix()
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Trying to use detached variable ..."</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
x1 :=</SPAN><SPAN class=any1-number>5
|
||||
</SPAN><SPAN class=any1-space> x2 :=</SPAN><SPAN class=any1-number>6
|
||||
</SPAN><SPAN class=any1-space> de =</SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x1, x2 )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
</SPAN><SPAN class=any1-comment>//changing the value of variables
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
x1 := </SPAN><SPAN class=any1-number>10
|
||||
</SPAN><SPAN class=any1-space> x2 := </SPAN><SPAN class=any1-number>11
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
de =</SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x1, x2 )
|
||||
</SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> nil
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>MyEval</SPAN><SPAN class=any1-symbol>( bCodeBlock )
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> D:=</SPAN><SPAN class=any1-string>"this is another variable"
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>(bCodeBlock, </SPAN><SPAN class=any1-string>" from "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"MyEval Function"</SPAN><SPAN class=any1-space> ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>OtherTest</SPAN><SPAN class=any1-symbol>( cblock )
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cb
|
||||
|
||||
cb :={|a,b| </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cblock,a,b ) }
|
||||
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, </SPAN><SPAN class=any1-string>"--> with nested "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"EVAL"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AnotherTest</SPAN><SPAN class=any1-symbol>( cb, a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, a ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, a, </SPAN><SPAN class=any1-string>"again and again"</SPAN><SPAN class=any1-space> ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>) )
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x, y )
|
||||
</SPAN><SPAN class=any1-comment>//NOTE! this should work
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> z:=x+y
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cb:={|| </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"z=x+y="</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(z), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"x*x="</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(x*x), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"x*x+z="</SPAN><SPAN class=any1-symbol>), x*x+z}
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( cb )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>BugToFix</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> b, a := {|| a+b }
|
||||
|
||||
b =</SPAN><SPAN class=any1-string>"bug "
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>RetBlock</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( {|x| x*x} )
|
||||
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE></BODY></HTML>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>codebloc.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>// codeblocks test
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> B := </SPAN><SPAN class=any1-string>"this will never print"
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> a := {| b, c | </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"I am a codeblock"</SPAN><SPAN class=any1-space> + b + c ) }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> d
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> de
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> ar := { </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> crlf:=</SPAN><SPAN class=any1-function>CHR</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> YY, X
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> x1, x2
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"this should print first"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>Eval</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>" with parameters"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>" ... and it works!"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
d =</SPAN><SPAN class=any1-string>"with access to local variables"
|
||||
|
||||
</SPAN><SPAN class=any1-space> a ={| b, c | </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"I am a second codeblock "</SPAN><SPAN class=any1-space> +d +b +;
|
||||
</SPAN><SPAN class=any1-variable>IIF</SPAN><SPAN class=any1-symbol>(c==NIL, </SPAN><SPAN class=any1-string>' empty second parameter '</SPAN><SPAN class=any1-symbol>, c)), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(crlf), </SPAN><SPAN class=any1-string>"WITH return value"</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>", codeblock parameters"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>", codeblock parameters "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"and with second parameter"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>MyEval</SPAN><SPAN class=any1-symbol>( a ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-variable>OtherTest</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-variable>AnotherTest</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>"==> Another "</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
a ={| c | </SPAN><SPAN class=any1-variable>IIF</SPAN><SPAN class=any1-symbol>( c=NIL, {| a | </SPAN><SPAN class=any1-string>"First "</SPAN><SPAN class=any1-symbol>+a}, {| a | </SPAN><SPAN class=any1-string>"Second "</SPAN><SPAN class=any1-symbol>+a}) }
|
||||
a =</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a, </SPAN><SPAN class=any1-string>"codeblock created in a codeblock"</SPAN><SPAN class=any1-space> ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ] )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
a :={|| ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ]++}
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ar[ </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ] )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
yy :=</SPAN><SPAN class=any1-number>5
|
||||
</SPAN><SPAN class=any1-space> x :={|xx| </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-variable>LTRIM</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>STR</SPAN><SPAN class=any1-symbol>(xx))), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"+"</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-variable>LTRIM</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>STR</SPAN><SPAN class=any1-symbol>(yy))), </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>), xx + yy }
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( x, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) </SPAN><SPAN class=any1-comment>//this is OK
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( CRLF )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( x, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) ) </SPAN><SPAN class=any1-comment>//this should ignore unnecesary parameters
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>RetBlock</SPAN><SPAN class=any1-symbol>(), </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-space> ) )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// BugToFix()
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Trying to use detached variable ..."</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
x1 :=</SPAN><SPAN class=any1-number>5
|
||||
</SPAN><SPAN class=any1-space> x2 :=</SPAN><SPAN class=any1-number>6
|
||||
</SPAN><SPAN class=any1-space> de =</SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x1, x2 )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
</SPAN><SPAN class=any1-comment>//changing the value of variables
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( crlf )
|
||||
x1 := </SPAN><SPAN class=any1-number>10
|
||||
</SPAN><SPAN class=any1-space> x2 := </SPAN><SPAN class=any1-number>11
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
de =</SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x1, x2 )
|
||||
</SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( de ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> nil
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>MyEval</SPAN><SPAN class=any1-symbol>( bCodeBlock )
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> D:=</SPAN><SPAN class=any1-string>"this is another variable"
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>(bCodeBlock, </SPAN><SPAN class=any1-string>" from "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"MyEval Function"</SPAN><SPAN class=any1-space> ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>OtherTest</SPAN><SPAN class=any1-symbol>( cblock )
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cb
|
||||
|
||||
cb :={| a, b | </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cblock,a,b ) }
|
||||
|
||||
</SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, </SPAN><SPAN class=any1-string>"--> with nested "</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"EVAL"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AnotherTest</SPAN><SPAN class=any1-symbol>( cb, a )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, a ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( cb, a, </SPAN><SPAN class=any1-string>"again and again"</SPAN><SPAN class=any1-space> ) )
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>) )
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>DetachLocal</SPAN><SPAN class=any1-symbol>( x, y )
|
||||
</SPAN><SPAN class=any1-comment>//NOTE! this should work
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> z:=x+y
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cb:={|| </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"z=x+y="</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(z), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"x*x="</SPAN><SPAN class=any1-symbol>), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(x*x), </SPAN><SPAN class=any1-function>QOut</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-string>"x*x+z="</SPAN><SPAN class=any1-symbol>), x*x+z}
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( cb )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>PROCEDURE</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>BugToFix</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> b, a := {|| a+b }
|
||||
|
||||
b =</SPAN><SPAN class=any1-string>"bug "
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>EVAL</SPAN><SPAN class=any1-symbol>( a )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN
|
||||
|
||||
FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>RetBlock</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( {|x| x*x} )
|
||||
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE></BODY></HTML>
|
||||
|
||||
@@ -1,169 +1,169 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>testbrw.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>// Harbour Class TBrowse and TBColumn sample
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#include</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-string>"inkey.ch"
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> oBrowse := </SPAN><SPAN class=any1-variable>TBrowseNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>16</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>30</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest0 := { </SPAN><SPAN class=any1-string>"This"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"is"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"a"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"browse"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"on"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"an"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"array"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"test"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"with"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"a"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"long"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"data"</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest1 := { </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>6</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>7</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>8</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>10000</SPAN><SPAN class=any1-symbol>, -</SPAN><SPAN class=any1-number>1000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>54</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>456342</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest2 := { </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>(), </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>56</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>14</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>6</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>7</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>8</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>10000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()-</SPAN><SPAN class=any1-number>1000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()-</SPAN><SPAN class=any1-number>54</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>456342</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest3 := { </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> n := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nKey
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> lEnd := </SPAN><SPAN class=any1-activedot>.f.
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nCursor
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> cColor
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nRow, nCol
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nTmpRow, nTmpCol
|
||||
|
||||
oBrowse:colorSpec = </SPAN><SPAN class=any1-string>"W+/B, N/BG"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:ColSep = </SPAN><SPAN class=any1-string>"¦"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:HeadSep = </SPAN><SPAN class=any1-string>"Ð-"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:FootSep = </SPAN><SPAN class=any1-string>"¤-"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:GoTopBlock = { || n := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> }
|
||||
oBrowse:GoBottomBlock = { || n := </SPAN><SPAN class=any1-function>Len</SPAN><SPAN class=any1-symbol>( aTest0 ) }
|
||||
oBrowse:SkipBlock = { | nSkip, nPos | nPos := n,;
|
||||
n := </SPAN><SPAN class=any1-reservedword>If</SPAN><SPAN class=any1-symbol>( nSkip > </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>Min</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>Len</SPAN><SPAN class=any1-symbol>( aTest0 ), n + nSkip ),;
|
||||
</SPAN><SPAN class=any1-function>Max</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, n + nSkip )), n - nPos }
|
||||
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"First"</SPAN><SPAN class=any1-symbol>, { || n } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Second"</SPAN><SPAN class=any1-symbol>, { || aTest0[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Third"</SPAN><SPAN class=any1-symbol>, { || aTest1[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Forth"</SPAN><SPAN class=any1-symbol>, { || aTest2[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Fifth"</SPAN><SPAN class=any1-symbol>, { || aTest3[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Number'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Strins'
|
||||
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>):Picture := </SPAN><SPAN class=any1-string>'@!'
|
||||
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Number'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>):Picture := </SPAN><SPAN class=any1-string>'999,999.99'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Dates'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Logical'
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// needed since I've changed some columns _after_ I've added them to TBrowse object
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>Configure</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>Alert</SPAN><SPAN class=any1-symbol>( oBrowse:</SPAN><SPAN class=any1-variable>ClassName</SPAN><SPAN class=any1-symbol>() )
|
||||
</SPAN><SPAN class=any1-function>Alert</SPAN><SPAN class=any1-symbol>( oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ):</SPAN><SPAN class=any1-variable>ClassName</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
oBrowse:Freeze = </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> nCursor := </SPAN><SPAN class=any1-function>SetCursor</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
cColor := </SPAN><SPAN class=any1-function>SetColor</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"W+/B"</SPAN><SPAN class=any1-space> )
|
||||
nRow := </SPAN><SPAN class=any1-function>Row</SPAN><SPAN class=any1-symbol>()
|
||||
nCol := </SPAN><SPAN class=any1-function>Col</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>17</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>31</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>BOX</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-string>"+-+¦+-+¦ "
|
||||
</SPAN><SPAN class=any1-constant>#ifdef</SPAN><SPAN class=any1-space> HB_COMPAT_C53
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Setkey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>,{|ob,nkey| </SPAN><SPAN class=any1-variable>Defproc</SPAN><SPAN class=any1-symbol>(ob,nKey)})
|
||||
</SPAN><SPAN class=any1-reservedword>while</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-activedot>.t.
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>ForceStable</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-space> (oBrowse:</SPAN><SPAN class=any1-variable>applykey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>inkey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>))== -</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>)
|
||||
</SPAN><SPAN class=any1-reservedword>exit
|
||||
endif
|
||||
enddo
|
||||
</SPAN><SPAN class=any1-constant>#else
|
||||
</SPAN><SPAN class=any1-reservedword>While</SPAN><SPAN class=any1-space> !lEnd
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>ForceStable</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
nKey = </SPAN><SPAN class=any1-function>InKey</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>do</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_ESC
|
||||
</SPAN><SPAN class=any1-function>SetPos</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>17</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
lEnd = </SPAN><SPAN class=any1-activedot>.t.
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_DOWN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>Down</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_UP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>Up</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_LEFT
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Left</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_RIGHT
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Right</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_PGDN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>pageDown</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_PGUP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>pageUp</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_PGUP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>goTop</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_PGDN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>goBottom</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_HOME
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>home</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_END
|
||||
oBrowse:</SPAN><SPAN class=any1-reservedword>end</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_LEFT
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panLeft</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_RIGHT
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panRight</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_HOME
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panHome</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_END
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panEnd</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_TAB
|
||||
nTmpRow := </SPAN><SPAN class=any1-function>ROW</SPAN><SPAN class=any1-symbol>()
|
||||
nTmpCol := </SPAN><SPAN class=any1-function>COL</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>SAY</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TIME</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nTmpRow, nTmpCol )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>endcase
|
||||
</SPAN><SPAN class=any1-space>
|
||||
</SPAN><SPAN class=any1-reservedword>end
|
||||
</SPAN><SPAN class=any1-constant>#endif
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nRow, nCol )
|
||||
</SPAN><SPAN class=any1-function>SetColor</SPAN><SPAN class=any1-symbol>( cColor )
|
||||
</SPAN><SPAN class=any1-function>SetCursor</SPAN><SPAN class=any1-symbol>( nCursor )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> nil
|
||||
</SPAN><SPAN class=any1-constant>#ifdef</SPAN><SPAN class=any1-space> HB_COMPAT_C53
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>defproc</SPAN><SPAN class=any1-symbol>(ob,nkey)
|
||||
</SPAN><SPAN class=any1-reservedword>Local</SPAN><SPAN class=any1-space> nTmpRow,nTmpCol
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-space> nKey = K_TAB
|
||||
nTmpRow := </SPAN><SPAN class=any1-function>ROW</SPAN><SPAN class=any1-symbol>()
|
||||
nTmpCol := </SPAN><SPAN class=any1-function>COL</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>SAY</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TIME</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nTmpRow, nTmpCol )
|
||||
ob:</SPAN><SPAN class=any1-variable>Refreshall</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>endif
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-constant>#endif
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE></BODY></HTML>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>testbrw.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>// Harbour Class TBrowse and TBColumn sample
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#include</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-string>"inkey.ch"
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> oBrowse := </SPAN><SPAN class=any1-variable>TBrowseNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>16</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>30</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest0 := { </SPAN><SPAN class=any1-string>"This"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"is"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"a"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"browse"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"on"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"an"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"array"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"test"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"with"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"a"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"long"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>"data"</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest1 := { </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>6</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>7</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>8</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>10000</SPAN><SPAN class=any1-symbol>, -</SPAN><SPAN class=any1-number>1000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>54</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>456342</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest2 := { </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>(), </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>56</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>14</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>6</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>7</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>8</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>10000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()-</SPAN><SPAN class=any1-number>1000</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()-</SPAN><SPAN class=any1-number>54</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>date</SPAN><SPAN class=any1-symbol>()+</SPAN><SPAN class=any1-number>456342</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> aTest3 := { </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.t.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-activedot>.f.</SPAN><SPAN class=any1-space> }
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> n := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nKey
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> lEnd := </SPAN><SPAN class=any1-activedot>.f.
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nCursor
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> cColor
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nRow, nCol
|
||||
</SPAN><SPAN class=any1-reservedword>local</SPAN><SPAN class=any1-space> nTmpRow, nTmpCol
|
||||
|
||||
oBrowse:colorSpec = </SPAN><SPAN class=any1-string>"W+/B, N/BG"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:ColSep = </SPAN><SPAN class=any1-string>"|"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:HeadSep = </SPAN><SPAN class=any1-string>"?-"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:FootSep = </SPAN><SPAN class=any1-string>"¤-"
|
||||
</SPAN><SPAN class=any1-space> oBrowse:GoTopBlock = {|| n := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> }
|
||||
oBrowse:GoBottomBlock = {|| n := </SPAN><SPAN class=any1-function>Len</SPAN><SPAN class=any1-symbol>( aTest0 ) }
|
||||
oBrowse:SkipBlock = {| nSkip, nPos | nPos := n,;
|
||||
n := </SPAN><SPAN class=any1-reservedword>If</SPAN><SPAN class=any1-symbol>( nSkip > </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>Min</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>Len</SPAN><SPAN class=any1-symbol>( aTest0 ), n + nSkip ),;
|
||||
</SPAN><SPAN class=any1-function>Max</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, n + nSkip )), n - nPos }
|
||||
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"First"</SPAN><SPAN class=any1-symbol>, {|| n } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Second"</SPAN><SPAN class=any1-symbol>, {|| aTest0[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Third"</SPAN><SPAN class=any1-symbol>, {|| aTest1[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Forth"</SPAN><SPAN class=any1-symbol>, {|| aTest2[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>AddColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>TBColumnNew</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Fifth"</SPAN><SPAN class=any1-symbol>, {|| aTest3[ n ] } ) )
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Number'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Strins'
|
||||
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>):Picture := </SPAN><SPAN class=any1-string>'@!'
|
||||
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Number'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>3</SPAN><SPAN class=any1-symbol>):Picture := </SPAN><SPAN class=any1-string>'999,999.99'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Dates'
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>5</SPAN><SPAN class=any1-symbol>):Footing = </SPAN><SPAN class=any1-string>'Logical'
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// needed since I've changed some columns _after_ I've added them to TBrowse object
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>Configure</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>Alert</SPAN><SPAN class=any1-symbol>( oBrowse:</SPAN><SPAN class=any1-variable>ClassName</SPAN><SPAN class=any1-symbol>() )
|
||||
</SPAN><SPAN class=any1-function>Alert</SPAN><SPAN class=any1-symbol>( oBrowse:</SPAN><SPAN class=any1-variable>GetColumn</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ):</SPAN><SPAN class=any1-variable>ClassName</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
oBrowse:Freeze = </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> nCursor := </SPAN><SPAN class=any1-function>SetCursor</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
cColor := </SPAN><SPAN class=any1-function>SetColor</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"W+/B"</SPAN><SPAN class=any1-space> )
|
||||
nRow := </SPAN><SPAN class=any1-function>Row</SPAN><SPAN class=any1-symbol>()
|
||||
nCol := </SPAN><SPAN class=any1-function>Col</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>4</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>17</SPAN><SPAN class=any1-symbol>,</SPAN><SPAN class=any1-number>31</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>BOX</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-string>"+-+|+-+| "
|
||||
</SPAN><SPAN class=any1-constant>#ifdef</SPAN><SPAN class=any1-space> HB_COMPAT_C53
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Setkey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>,{|ob,nkey| </SPAN><SPAN class=any1-variable>Defproc</SPAN><SPAN class=any1-symbol>(ob,nKey)})
|
||||
</SPAN><SPAN class=any1-reservedword>while</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-activedot>.t.
|
||||
</SPAN><SPAN class=any1-space> oBrowse:</SPAN><SPAN class=any1-variable>ForceStable</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-space> (oBrowse:</SPAN><SPAN class=any1-variable>applykey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-function>inkey</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>))== -</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>)
|
||||
</SPAN><SPAN class=any1-reservedword>exit
|
||||
endif
|
||||
enddo
|
||||
</SPAN><SPAN class=any1-constant>#else
|
||||
</SPAN><SPAN class=any1-reservedword>While</SPAN><SPAN class=any1-space> !lEnd
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>ForceStable</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
nKey = </SPAN><SPAN class=any1-function>InKey</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>do</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_ESC
|
||||
</SPAN><SPAN class=any1-function>SetPos</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>17</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
lEnd = </SPAN><SPAN class=any1-activedot>.t.
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_DOWN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>Down</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_UP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>Up</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_LEFT
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Left</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey == K_RIGHT
|
||||
oBrowse:</SPAN><SPAN class=any1-function>Right</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_PGDN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>pageDown</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_PGUP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>pageUp</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_PGUP
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>goTop</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_PGDN
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>goBottom</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_HOME
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>home</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_END
|
||||
oBrowse:</SPAN><SPAN class=any1-reservedword>end</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_LEFT
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panLeft</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_RIGHT
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panRight</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_HOME
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panHome</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_CTRL_END
|
||||
oBrowse:</SPAN><SPAN class=any1-variable>panEnd</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>case</SPAN><SPAN class=any1-space> nKey = K_TAB
|
||||
nTmpRow := </SPAN><SPAN class=any1-function>ROW</SPAN><SPAN class=any1-symbol>()
|
||||
nTmpCol := </SPAN><SPAN class=any1-function>COL</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>SAY</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TIME</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nTmpRow, nTmpCol )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>endcase
|
||||
</SPAN><SPAN class=any1-space>
|
||||
</SPAN><SPAN class=any1-reservedword>end
|
||||
</SPAN><SPAN class=any1-constant>#endif
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nRow, nCol )
|
||||
</SPAN><SPAN class=any1-function>SetColor</SPAN><SPAN class=any1-symbol>( cColor )
|
||||
</SPAN><SPAN class=any1-function>SetCursor</SPAN><SPAN class=any1-symbol>( nCursor )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> nil
|
||||
</SPAN><SPAN class=any1-constant>#ifdef</SPAN><SPAN class=any1-space> HB_COMPAT_C53
|
||||
</SPAN><SPAN class=any1-reservedword>function</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>defproc</SPAN><SPAN class=any1-symbol>(ob,nkey)
|
||||
</SPAN><SPAN class=any1-reservedword>Local</SPAN><SPAN class=any1-space> nTmpRow,nTmpCol
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-space> nKey = K_TAB
|
||||
nTmpRow := </SPAN><SPAN class=any1-function>ROW</SPAN><SPAN class=any1-symbol>()
|
||||
nTmpCol := </SPAN><SPAN class=any1-function>COL</SPAN><SPAN class=any1-symbol>()
|
||||
@ </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>SAY</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TIME</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-function>DevPos</SPAN><SPAN class=any1-symbol>( nTmpRow, nTmpCol )
|
||||
ob:</SPAN><SPAN class=any1-variable>Refreshall</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>endif
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>return</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-constant>#endif
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE></BODY></HTML>
|
||||
|
||||
@@ -1,495 +1,495 @@
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>testcgi.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>/*
|
||||
*
|
||||
* TestCGI.PRG
|
||||
* Harbour Test of a CGI/HTML-Generator class.
|
||||
*
|
||||
* 1999/05/30 First implementation.
|
||||
*
|
||||
* Tips: - Use ShowResults to make dynamic html (to test dynamic
|
||||
* results, put the exe file on CGI-BIN dir or equivalent);
|
||||
* - Use SaveToFile to make static html page
|
||||
*
|
||||
* 1999/05/31 Initial CGI functionality.
|
||||
* 1999/06/01 Translated %nn to correct chars.
|
||||
* 1999/06/02 Dynamic TAG matching routines (inspired on Delphi).
|
||||
* First attempt to convert Delphi's ISAPI dll of WebSites'
|
||||
* Function List
|
||||
* (See http://www.flexsys-ci.com/harbour-project/functions.htm)
|
||||
* 1999/06/11 List can be viewed online at
|
||||
* http://www.flexsys-ci.com/cgi-bin/testcgi.exe
|
||||
* 1999/07/29 Changed qOut() calls to OutStd() calls.
|
||||
*
|
||||
*/
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_SOFTWARE </SPAN><SPAN class=any1-number>01
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_NAME </SPAN><SPAN class=any1-number>02
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_GATEWAY_INTERFACE </SPAN><SPAN class=any1-number>03
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_PROTOCOL </SPAN><SPAN class=any1-number>04
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_PORT </SPAN><SPAN class=any1-number>05
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REQUEST_METHOD </SPAN><SPAN class=any1-number>06
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_ACCEPT </SPAN><SPAN class=any1-number>07
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_USER_AGENT </SPAN><SPAN class=any1-number>08
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_REFERER </SPAN><SPAN class=any1-number>09
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_PATH_INFO </SPAN><SPAN class=any1-number>10
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_PATH_TRANSLATED </SPAN><SPAN class=any1-number>11
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SCRIPT_NAME </SPAN><SPAN class=any1-number>12
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_QUERY_STRING </SPAN><SPAN class=any1-number>13
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_HOST </SPAN><SPAN class=any1-number>14
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_ADDR </SPAN><SPAN class=any1-number>15
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_USER </SPAN><SPAN class=any1-number>16
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_AUTH_TYPE </SPAN><SPAN class=any1-number>17
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_CONTENT_TYPE </SPAN><SPAN class=any1-number>18
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_CONTENT_LENGTH </SPAN><SPAN class=any1-number>19
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_ANNOTATION_SERVER </SPAN><SPAN class=any1-number>20
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> IF_BUFFER </SPAN><SPAN class=any1-number>65535
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> oHTML := </SPAN><SPAN class=any1-variable>THTML</SPAN><SPAN class=any1-symbol>():</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> hFile, nPos, cString, cBuf, i, cTable, cLine
|
||||
|
||||
oHTML:</SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"function.cfm"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
hFile := </SPAN><SPAN class=any1-function>fOpen</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"list.txt"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
|
||||
cString := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
cBuf := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> cTable := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Builds dynamic table replacement
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> hFile != -</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> .AND. (nPos := </SPAN><SPAN class=any1-function>fRead</SPAN><SPAN class=any1-symbol>( hFile, @cString, IF_BUFFER )) > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> i <= nPos
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cString, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-space> )
|
||||
i := i + </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> cLine := cBuf
|
||||
cBuf := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) <> </SPAN><SPAN class=any1-string>';'
|
||||
</SPAN><SPAN class=any1-space> cTable += </SPAN><SPAN class=any1-string>'<TR>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="50%"><FONT SIZE="2" FACE="Tahoma">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) + </SPAN><SPAN class=any1-string>'</FONT></TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'R'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'S'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'N'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TR>'
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> cBuf := cBuf + </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cString, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> i++
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
oHTML:</SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Functions"</SPAN><SPAN class=any1-symbol>, cTable )
|
||||
oHTML:</SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Uncomment the following if you don't have a Web Server to test
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// this sample
|
||||
|
||||
// oHTML:SaveToFile( "test.htm" )
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// If the above is uncommented, you may comment this line:
|
||||
|
||||
</SPAN><SPAN class=any1-space> oHTML:</SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cString, cDelim, nRet )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cBuf, aElem, nPosFim, nSize, i
|
||||
|
||||
nSize := </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cString ) - </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>StrTran</SPAN><SPAN class=any1-symbol>( cString, cDelim, </SPAN><SPAN class=any1-string>''</SPAN><SPAN class=any1-space> ) ) + </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> aElem := </SPAN><SPAN class=any1-function>array</SPAN><SPAN class=any1-symbol>( nSize )
|
||||
|
||||
cBuf := cString
|
||||
i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FOR</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TO</SPAN><SPAN class=any1-space> nSize
|
||||
nPosFim := </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( cDelim, cBuf )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nPosFim > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> aElem[i] := </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuf, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, nPosFim - </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> aElem[i] := cBuf
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> cBuf := </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuf, nPosFim + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cBuf ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>NEXT</SPAN><SPAN class=any1-space> i
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( aElem[ nRet ] )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Hex2Dec</SPAN><SPAN class=any1-symbol>( cHex )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> aHex := { { </SPAN><SPAN class=any1-string>"0"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>00</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"1"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>01</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"2"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>02</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"3"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>03</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"4"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>04</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"5"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>05</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"6"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>06</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"7"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>07</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"8"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>08</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"9"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>09</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"A"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"B"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>11</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"C"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>12</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"D"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"E"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>14</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"F"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>15</SPAN><SPAN class=any1-space> } }
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRet
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRes
|
||||
|
||||
nRet := </SPAN><SPAN class=any1-function>ascan</SPAN><SPAN class=any1-symbol>( aHex, { |x| </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cHex, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) } )
|
||||
nRes := aHex[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>] * </SPAN><SPAN class=any1-number>16
|
||||
</SPAN><SPAN class=any1-space> nRet := </SPAN><SPAN class=any1-function>ascan</SPAN><SPAN class=any1-symbol>( aHex, { |x| </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>right</SPAN><SPAN class=any1-symbol>( cHex, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) } )
|
||||
nRes += aHex[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>]
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( nRes )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>/*-------------------------------------------------------------------------*/
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> THTML
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> oClass
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> oClass == NIL
|
||||
oClass = </SPAN><SPAN class=any1-variable>HBClass</SPAN><SPAN class=any1-symbol>():</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"THTML"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cTitle"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Page Title
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cBody"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// HTML Body Handler
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cBGColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Background Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cLinkColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Link Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cvLinkColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Visited Link Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cContent"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Page Content Handler
|
||||
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aCGIContents"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aQueryFields"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cHTMLFile"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aReplaceTags"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"New"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// New Method
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SetTitle"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>SetTitle</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Set Page Title
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddHead"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddHead</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add <H1> Header
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddLink"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddLink</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add Hyperlink
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddPara"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddPara</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add Paragraph
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SaveToFile"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>SaveToFile</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Saves Content to File
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ShowResult"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Show Result - SEE Fcn
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Generate"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Generate HTML
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SetHTMLFile"</SPAN><SPAN class=any1-symbol>,@</SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Sets source HTML file
|
||||
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ProcessCGI"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"GetCGIParam"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"QueryFields"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>QueryFields</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddReplaceTag"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-function>Create</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( oClass:</SPAN><SPAN class=any1-variable>Instance</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cTitle := </SPAN><SPAN class=any1-string>"Untitled"
|
||||
</SPAN><SPAN class=any1-space> ::cBGColor := </SPAN><SPAN class=any1-string>"#FFFFFF"
|
||||
</SPAN><SPAN class=any1-space> ::cLinkColor := </SPAN><SPAN class=any1-string>"#0000FF"
|
||||
</SPAN><SPAN class=any1-space> ::cvLinkColor := </SPAN><SPAN class=any1-string>"#FF0000"
|
||||
</SPAN><SPAN class=any1-space> ::cContent := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> ::cBody := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> ::aCGIContents := {}
|
||||
::aQueryFields := {}
|
||||
::aReplaceTags := {}
|
||||
::cHTMLFile := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SetTitle</SPAN><SPAN class=any1-symbol>( cTitle )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cTitle := cTitle
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddLink</SPAN><SPAN class=any1-symbol>( cLinkTo, cLinkName )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<A HREF='"</SPAN><SPAN class=any1-space> + cLinkTo + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + cLinkName + </SPAN><SPAN class=any1-string>"</A>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddHead</SPAN><SPAN class=any1-symbol>( cDescr )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Why this doesn't work?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// ::cBody += ...
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// ???
|
||||
|
||||
</SPAN><SPAN class=any1-space> ::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<H1>"</SPAN><SPAN class=any1-space> + cDescr + </SPAN><SPAN class=any1-string>"</H1>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddPara</SPAN><SPAN class=any1-symbol>( cPara, cAlign )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<P ALIGN='"</SPAN><SPAN class=any1-space> + cAlign + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
cPara + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"</P>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cFile, i, hFile, nPos, cRes := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> lFlag := </SPAN><SPAN class=any1-activedot>.f.
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Is this a meta file or hand generated script?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( ::cHTMLFile )
|
||||
::cContent := ;
|
||||
</SPAN><SPAN class=any1-string>"<HTML><HEAD>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"<TITLE>"</SPAN><SPAN class=any1-space> + ::cTitle + </SPAN><SPAN class=any1-string>"</TITLE>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"<BODY link='"</SPAN><SPAN class=any1-space> + ::cLinkColor + </SPAN><SPAN class=any1-string>"' "</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-string>"vlink='"</SPAN><SPAN class=any1-space> + ::cvLinkColor + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
::cBody + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"</BODY></HTML>"
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> ::cContent := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Does cHTMLFile exists?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> !</SPAN><SPAN class=any1-function>File</SPAN><SPAN class=any1-symbol>( ::cHTMLFile )
|
||||
::cContent := </SPAN><SPAN class=any1-string>"<H1>Server Error</H1><P><I>No such file: "</SPAN><SPAN class=any1-space> + ;
|
||||
::cHTMLFile
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Read from file
|
||||
</SPAN><SPAN class=any1-space> hFile := </SPAN><SPAN class=any1-function>fOpen</SPAN><SPAN class=any1-symbol>( ::cHTMLFile, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
cFile := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
</SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> (nPos := </SPAN><SPAN class=any1-function>fRead</SPAN><SPAN class=any1-symbol>( hFile, @cFile, IF_BUFFER )) > </SPAN><SPAN class=any1-number>0
|
||||
|
||||
</SPAN><SPAN class=any1-space> cFile := </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cFile, nPos )
|
||||
cRes += cFile
|
||||
cFile := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Replace matched tags
|
||||
</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> ::cContent := cRes
|
||||
</SPAN><SPAN class=any1-comment>/* TODO: Replace this DO WHILE with FOR..NEXT */
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> i <= </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( ::aReplaceTags )
|
||||
::cContent := </SPAN><SPAN class=any1-function>strtran</SPAN><SPAN class=any1-symbol>( ::cContent, ;
|
||||
</SPAN><SPAN class=any1-string>"<#"</SPAN><SPAN class=any1-space> + ::aReplaceTags[i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] + </SPAN><SPAN class=any1-string>">"</SPAN><SPAN class=any1-symbol>, ::aReplaceTags[i, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>] )
|
||||
i++
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>/* TODO: Clear remaining (not matched) tags */
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>/*
|
||||
cRes := ""
|
||||
FOR i := 1 TO len( ::cContent )
|
||||
IF substr( ::cContent, i, 1 ) == "<" .AND. ;
|
||||
substr( ::cContent, i + 1, 1 ) == "#"
|
||||
lFlag := .t.
|
||||
ELSEIF substr( ::cContent, i, 1 ) == ">" .AND. lFlag
|
||||
lFlag := .f.
|
||||
ELSEIF !lFlag
|
||||
cRes += substr( ::cContent, i, 1 )
|
||||
ENDIF
|
||||
NEXT i
|
||||
|
||||
::cContent := cRes
|
||||
*/
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ;
|
||||
</SPAN><SPAN class=any1-string>"HTTP/1.0 200 OK"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"CONTENT-TYPE: TEXT/HTML"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
::cContent )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SaveToFile</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> hFile := </SPAN><SPAN class=any1-function>fCreate</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-function>fWrite</SPAN><SPAN class=any1-symbol>( hFile, ::cContent )
|
||||
</SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cQuery := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cBuff := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nBuff := </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> i
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( ::aCGIContents )
|
||||
::aCGIContents := { ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_SOFTWARE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_NAME"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"GATEWAY_INTERFACE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_PROTOCOL"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_PORT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REQUEST_METHOD"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_ACCEPT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_USER_AGENT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_REFERER"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"PATH_INFO"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"PATH_TRANSLATED"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SCRIPT_NAME"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"QUERY_STRING"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_HOST"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_ADDR"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_USER"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AUTH_TYPE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"CONTENT_TYPE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"CONTENT_LENGTH"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ANNOTATION_SERVER"</SPAN><SPAN class=any1-space> ) ;
|
||||
}
|
||||
|
||||
cQuery := ::</SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>( CGI_QUERY_STRING )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> !</SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( cQuery )
|
||||
|
||||
::aQueryFields := {}
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FOR</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cQuery ) + </SPAN><SPAN class=any1-number>1
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> i > </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cQuery ) .OR. </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) == </SPAN><SPAN class=any1-string>"&"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>aadd</SPAN><SPAN class=any1-symbol>( ::aQueryFields, ;
|
||||
{ </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuff, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) - </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>strtran</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuff, </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cBuff ) - </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ), </SPAN><SPAN class=any1-string>"+"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>" "</SPAN><SPAN class=any1-space> ) } )
|
||||
cBuff := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>"%"
|
||||
</SPAN><SPAN class=any1-space> cBuff += </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>Hex2Dec</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) ) )
|
||||
nBuff := </SPAN><SPAN class=any1-number>3
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nBuff = </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> cBuff += </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> nBuff--
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>NEXT
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>( nParam )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nParam > </SPAN><SPAN class=any1-number>20</SPAN><SPAN class=any1-space> .OR. nParam < </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>outerr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Invalid CGI parameter"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( ::aCGIContents[nParam] )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>QueryFields</SPAN><SPAN class=any1-symbol>( cQueryName )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cRet := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRet
|
||||
|
||||
::</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
nRet := </SPAN><SPAN class=any1-function>aScan</SPAN><SPAN class=any1-symbol>( ::aQueryFields, ;
|
||||
{ |x| </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( cQueryName ) } )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nRet > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> cRet := ::aQueryFields[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>]
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( cRet )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cHTMLFile := cFile
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>( cTag, cReplaceText )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>aAdd</SPAN><SPAN class=any1-symbol>( ::aReplaceTags, { cTag, cReplaceText } )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE>
|
||||
</BODY></HTML>
|
||||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
|
||||
<HTML xmlns="http://www.w3.org/1999/xhtml"><HEAD><TITLE>testcgi.prg</TITLE>
|
||||
<META http-equiv=Content-Type content="text/html; charset=iso-8859-1">
|
||||
<META content="MSHTML 6.00.6000.16386" name=GENERATOR>
|
||||
<STYLE type=text/css>
|
||||
<!--
|
||||
body { color: #000000; background-color: #FFFFFF; }
|
||||
.any1-activedot { color: #800080; }
|
||||
.any1-comment { color: #008080; }
|
||||
.any1-constant { color: #800080; }
|
||||
.any1-escapeampersand { color: #00FF00; font-weight: bold; }
|
||||
.any1-function { color: #808000; }
|
||||
.any1-identifier { color: #000000; }
|
||||
.any1-number { color: #FF0000; }
|
||||
.any1-preprocessor { }
|
||||
.any1-reservedword { color: #800000; }
|
||||
.any1-space { }
|
||||
.any1-string { color: #0000FF; }
|
||||
.any1-symbol { }
|
||||
.any1-variable { color: #808000; }
|
||||
-->
|
||||
</STYLE>
|
||||
</HEAD>
|
||||
<BODY bgColor=#ffffff>
|
||||
<PRE><CODE><SPAN style="FONT: 10pt Courier New"><SPAN class=any1-comment>/*
|
||||
*
|
||||
* TestCGI.PRG
|
||||
* Harbour Test of a CGI/HTML-Generator class.
|
||||
*
|
||||
* 1999/05/30 First implementation.
|
||||
*
|
||||
* Tips: - Use ShowResults to make dynamic html (to test dynamic
|
||||
* results, put the exe file on CGI-BIN dir or equivalent);
|
||||
* - Use SaveToFile to make static html page
|
||||
*
|
||||
* 1999/05/31 Initial CGI functionality.
|
||||
* 1999/06/01 Translated %nn to correct chars.
|
||||
* 1999/06/02 Dynamic TAG matching routines (inspired on Delphi).
|
||||
* First attempt to convert Delphi's ISAPI dll of WebSites'
|
||||
* Function List
|
||||
* (See http://www.flexsys-ci.com/harbour-project/functions.htm)
|
||||
* 1999/06/11 List can be viewed online at
|
||||
* http://www.flexsys-ci.com/cgi-bin/testcgi.exe
|
||||
* 1999/07/29 Changed qOut() calls to OutStd() calls.
|
||||
*
|
||||
*/
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_SOFTWARE </SPAN><SPAN class=any1-number>01
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_NAME </SPAN><SPAN class=any1-number>02
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_GATEWAY_INTERFACE </SPAN><SPAN class=any1-number>03
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_PROTOCOL </SPAN><SPAN class=any1-number>04
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SERVER_PORT </SPAN><SPAN class=any1-number>05
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REQUEST_METHOD </SPAN><SPAN class=any1-number>06
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_ACCEPT </SPAN><SPAN class=any1-number>07
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_USER_AGENT </SPAN><SPAN class=any1-number>08
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_HTTP_REFERER </SPAN><SPAN class=any1-number>09
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_PATH_INFO </SPAN><SPAN class=any1-number>10
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_PATH_TRANSLATED </SPAN><SPAN class=any1-number>11
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_SCRIPT_NAME </SPAN><SPAN class=any1-number>12
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_QUERY_STRING </SPAN><SPAN class=any1-number>13
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_HOST </SPAN><SPAN class=any1-number>14
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_ADDR </SPAN><SPAN class=any1-number>15
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_REMOTE_USER </SPAN><SPAN class=any1-number>16
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_AUTH_TYPE </SPAN><SPAN class=any1-number>17
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_CONTENT_TYPE </SPAN><SPAN class=any1-number>18
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_CONTENT_LENGTH </SPAN><SPAN class=any1-number>19
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> CGI_ANNOTATION_SERVER </SPAN><SPAN class=any1-number>20
|
||||
|
||||
</SPAN><SPAN class=any1-constant>#define</SPAN><SPAN class=any1-space> IF_BUFFER </SPAN><SPAN class=any1-number>65535
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Main</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> oHTML := </SPAN><SPAN class=any1-variable>THTML</SPAN><SPAN class=any1-symbol>():</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> hFile, nPos, cString, cBuf, i, cTable, cLine
|
||||
|
||||
oHTML:</SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"function.cfm"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
hFile := </SPAN><SPAN class=any1-function>fOpen</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"list.txt"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
|
||||
cString := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
cBuf := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> cTable := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Builds dynamic table replacement
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> hFile != -</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> .AND. (nPos := </SPAN><SPAN class=any1-function>fRead</SPAN><SPAN class=any1-symbol>( hFile, @cString, IF_BUFFER )) > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> i <= nPos
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cString, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-space> )
|
||||
i := i + </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> cLine := cBuf
|
||||
cBuf := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) <> </SPAN><SPAN class=any1-string>';'
|
||||
</SPAN><SPAN class=any1-space> cTable += </SPAN><SPAN class=any1-string>'<TR>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="50%"><FONT SIZE="2" FACE="Tahoma">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) + </SPAN><SPAN class=any1-string>'</FONT></TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'R'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'S'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'<TD WIDTH="16%">'</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-reservedword>if</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cLine, </SPAN><SPAN class=any1-string>';'</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>'N'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'<CENTER><IMG SRC="images/purple-m.gif">'</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-string>'&nbsp'</SPAN><SPAN class=any1-space> ) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TD>'</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-symbol>)+</SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>(</SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-symbol>) + ;
|
||||
</SPAN><SPAN class=any1-string>'</TR>'
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> cBuf := cBuf + </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cString, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> i++
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
oHTML:</SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Functions"</SPAN><SPAN class=any1-symbol>, cTable )
|
||||
oHTML:</SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Uncomment the following if you don't have a Web Server to test
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// this sample
|
||||
|
||||
// oHTML:SaveToFile( "test.htm" )
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// If the above is uncommented, you may comment this line:
|
||||
|
||||
</SPAN><SPAN class=any1-space> oHTML:</SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ParseString</SPAN><SPAN class=any1-symbol>( cString, cDelim, nRet )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cBuf, aElem, nPosFim, nSize, i
|
||||
|
||||
nSize := </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cString ) - </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>StrTran</SPAN><SPAN class=any1-symbol>( cString, cDelim, </SPAN><SPAN class=any1-string>''</SPAN><SPAN class=any1-space> ) ) + </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> aElem := </SPAN><SPAN class=any1-function>array</SPAN><SPAN class=any1-symbol>( nSize )
|
||||
|
||||
cBuf := cString
|
||||
i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FOR</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TO</SPAN><SPAN class=any1-space> nSize
|
||||
nPosFim := </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( cDelim, cBuf )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nPosFim > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> aElem[i] := </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuf, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, nPosFim - </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> aElem[i] := cBuf
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> cBuf := </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuf, nPosFim + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cBuf ) )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>NEXT</SPAN><SPAN class=any1-space> i
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( aElem[ nRet ] )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Hex2Dec</SPAN><SPAN class=any1-symbol>( cHex )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> aHex := { { </SPAN><SPAN class=any1-string>"0"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>00</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"1"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>01</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"2"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>02</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"3"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>03</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"4"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>04</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"5"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>05</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"6"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>06</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"7"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>07</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"8"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>08</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"9"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>09</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"A"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>10</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"B"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>11</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"C"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>12</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"D"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>13</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"E"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>14</SPAN><SPAN class=any1-space> }, ;
|
||||
{ </SPAN><SPAN class=any1-string>"F"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>15</SPAN><SPAN class=any1-space> } }
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRet
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRes
|
||||
|
||||
nRet := </SPAN><SPAN class=any1-function>ascan</SPAN><SPAN class=any1-symbol>( aHex, {| x | </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cHex, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) } )
|
||||
nRes := aHex[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>] * </SPAN><SPAN class=any1-number>16
|
||||
</SPAN><SPAN class=any1-space> nRet := </SPAN><SPAN class=any1-function>ascan</SPAN><SPAN class=any1-symbol>( aHex, {| x | </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>right</SPAN><SPAN class=any1-symbol>( cHex, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) ) } )
|
||||
nRes += aHex[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>]
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( nRes )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>/*-------------------------------------------------------------------------*/
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> THTML
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> oClass
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> oClass == NIL
|
||||
oClass = </SPAN><SPAN class=any1-variable>HBClass</SPAN><SPAN class=any1-symbol>():</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"THTML"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cTitle"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Page Title
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cBody"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// HTML Body Handler
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cBGColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Background Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cLinkColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Link Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cvLinkColor"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Visited Link Color
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cContent"</SPAN><SPAN class=any1-space> ) </SPAN><SPAN class=any1-comment>// Page Content Handler
|
||||
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aCGIContents"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aQueryFields"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"cHTMLFile"</SPAN><SPAN class=any1-space> )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddData</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"aReplaceTags"</SPAN><SPAN class=any1-space> )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"New"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// New Method
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SetTitle"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>SetTitle</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Set Page Title
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddHead"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddHead</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add <H1> Header
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddLink"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddLink</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add Hyperlink
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddPara"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddPara</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Add Paragraph
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SaveToFile"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>SaveToFile</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Saves Content to File
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ShowResult"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Show Result - SEE Fcn
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Generate"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Generate HTML
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SetHTMLFile"</SPAN><SPAN class=any1-symbol>,@</SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>() ) </SPAN><SPAN class=any1-comment>// Sets source HTML file
|
||||
|
||||
</SPAN><SPAN class=any1-space> oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ProcessCGI"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"GetCGIParam"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"QueryFields"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>QueryFields</SPAN><SPAN class=any1-symbol>() )
|
||||
oClass:</SPAN><SPAN class=any1-variable>AddMethod</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AddReplaceTag"</SPAN><SPAN class=any1-symbol>, @</SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
oClass:</SPAN><SPAN class=any1-function>Create</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( oClass:</SPAN><SPAN class=any1-variable>Instance</SPAN><SPAN class=any1-symbol>() )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>New</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cTitle := </SPAN><SPAN class=any1-string>"Untitled"
|
||||
</SPAN><SPAN class=any1-space> ::cBGColor := </SPAN><SPAN class=any1-string>"#FFFFFF"
|
||||
</SPAN><SPAN class=any1-space> ::cLinkColor := </SPAN><SPAN class=any1-string>"#0000FF"
|
||||
</SPAN><SPAN class=any1-space> ::cvLinkColor := </SPAN><SPAN class=any1-string>"#FF0000"
|
||||
</SPAN><SPAN class=any1-space> ::cContent := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> ::cBody := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> ::aCGIContents := {}
|
||||
::aQueryFields := {}
|
||||
::aReplaceTags := {}
|
||||
::cHTMLFile := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SetTitle</SPAN><SPAN class=any1-symbol>( cTitle )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cTitle := cTitle
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddLink</SPAN><SPAN class=any1-symbol>( cLinkTo, cLinkName )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<A HREF='"</SPAN><SPAN class=any1-space> + cLinkTo + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + cLinkName + </SPAN><SPAN class=any1-string>"</A>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddHead</SPAN><SPAN class=any1-symbol>( cDescr )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Why this doesn't work?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// ::cBody += ...
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// ???
|
||||
|
||||
</SPAN><SPAN class=any1-space> ::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<H1>"</SPAN><SPAN class=any1-space> + cDescr + </SPAN><SPAN class=any1-string>"</H1>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddPara</SPAN><SPAN class=any1-symbol>( cPara, cAlign )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cBody := ::cBody + ;
|
||||
</SPAN><SPAN class=any1-string>"<P ALIGN='"</SPAN><SPAN class=any1-space> + cAlign + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
cPara + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"</P>"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>Generate</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cFile, i, hFile, nPos, cRes := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> lFlag := </SPAN><SPAN class=any1-activedot>.f.
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Is this a meta file or hand generated script?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( ::cHTMLFile )
|
||||
::cContent := ;
|
||||
</SPAN><SPAN class=any1-string>"<HTML><HEAD>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"<TITLE>"</SPAN><SPAN class=any1-space> + ::cTitle + </SPAN><SPAN class=any1-string>"</TITLE>"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"<BODY link='"</SPAN><SPAN class=any1-space> + ::cLinkColor + </SPAN><SPAN class=any1-string>"' "</SPAN><SPAN class=any1-space> + ;
|
||||
</SPAN><SPAN class=any1-string>"vlink='"</SPAN><SPAN class=any1-space> + ::cvLinkColor + </SPAN><SPAN class=any1-string>"'>"</SPAN><SPAN class=any1-space> + + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
::cBody + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"</BODY></HTML>"
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> ::cContent := </SPAN><SPAN class=any1-string>""
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Does cHTMLFile exists?
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> !</SPAN><SPAN class=any1-function>File</SPAN><SPAN class=any1-symbol>( ::cHTMLFile )
|
||||
::cContent := </SPAN><SPAN class=any1-string>"<H1>Server Error</H1><P><I>No such file: "</SPAN><SPAN class=any1-space> + ;
|
||||
::cHTMLFile
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>// Read from file
|
||||
</SPAN><SPAN class=any1-space> hFile := </SPAN><SPAN class=any1-function>fOpen</SPAN><SPAN class=any1-symbol>( ::cHTMLFile, </SPAN><SPAN class=any1-number>0</SPAN><SPAN class=any1-space> )
|
||||
cFile := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
</SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> (nPos := </SPAN><SPAN class=any1-function>fRead</SPAN><SPAN class=any1-symbol>( hFile, @cFile, IF_BUFFER )) > </SPAN><SPAN class=any1-number>0
|
||||
|
||||
</SPAN><SPAN class=any1-space> cFile := </SPAN><SPAN class=any1-function>left</SPAN><SPAN class=any1-symbol>( cFile, nPos )
|
||||
cRes += cFile
|
||||
cFile := </SPAN><SPAN class=any1-function>space</SPAN><SPAN class=any1-symbol>( IF_BUFFER )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
</SPAN><SPAN class=any1-comment>// Replace matched tags
|
||||
</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> ::cContent := cRes
|
||||
</SPAN><SPAN class=any1-comment>/* TODO: Replace this DO WHILE with FOR..NEXT */
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>DO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>WHILE</SPAN><SPAN class=any1-space> i <= </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( ::aReplaceTags )
|
||||
::cContent := </SPAN><SPAN class=any1-function>strtran</SPAN><SPAN class=any1-symbol>( ::cContent, ;
|
||||
</SPAN><SPAN class=any1-string>"<#"</SPAN><SPAN class=any1-space> + ::aReplaceTags[i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] + </SPAN><SPAN class=any1-string>">"</SPAN><SPAN class=any1-symbol>, ::aReplaceTags[i, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>] )
|
||||
i++
|
||||
</SPAN><SPAN class=any1-reservedword>ENDDO
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>/* TODO: Clear remaining (not matched) tags */
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-comment>/*
|
||||
cRes := ""
|
||||
FOR i := 1 TO len( ::cContent )
|
||||
IF substr( ::cContent, i, 1 ) == "<" .AND. ;
|
||||
substr( ::cContent, i + 1, 1 ) == "#"
|
||||
lFlag := .t.
|
||||
ELSEIF substr( ::cContent, i, 1 ) == ">" .AND. lFlag
|
||||
lFlag := .f.
|
||||
ELSEIF !lFlag
|
||||
cRes += substr( ::cContent, i, 1 )
|
||||
ENDIF
|
||||
NEXT i
|
||||
|
||||
::cContent := cRes
|
||||
*/
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ShowResult</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>OutStd</SPAN><SPAN class=any1-symbol>( ;
|
||||
</SPAN><SPAN class=any1-string>"HTTP/1.0 200 OK"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
</SPAN><SPAN class=any1-string>"CONTENT-TYPE: TEXT/HTML"</SPAN><SPAN class=any1-space> + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + </SPAN><SPAN class=any1-variable>HB_OSNewLine</SPAN><SPAN class=any1-symbol>() + ;
|
||||
::cContent )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SaveToFile</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> hFile := </SPAN><SPAN class=any1-function>fCreate</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-function>fWrite</SPAN><SPAN class=any1-symbol>( hFile, ::cContent )
|
||||
</SPAN><SPAN class=any1-function>fClose</SPAN><SPAN class=any1-symbol>( hFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cQuery := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cBuff := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nBuff := </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> i
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( ::aCGIContents )
|
||||
::aCGIContents := { ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_SOFTWARE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_NAME"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"GATEWAY_INTERFACE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_PROTOCOL"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SERVER_PORT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REQUEST_METHOD"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_ACCEPT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_USER_AGENT"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"HTTP_REFERER"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"PATH_INFO"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"PATH_TRANSLATED"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"SCRIPT_NAME"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"QUERY_STRING"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_HOST"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_ADDR"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"REMOTE_USER"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"AUTH_TYPE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"CONTENT_TYPE"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"CONTENT_LENGTH"</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>GetEnv</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"ANNOTATION_SERVER"</SPAN><SPAN class=any1-space> ) ;
|
||||
}
|
||||
|
||||
cQuery := ::</SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>( CGI_QUERY_STRING )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> !</SPAN><SPAN class=any1-function>empty</SPAN><SPAN class=any1-symbol>( cQuery )
|
||||
|
||||
::aQueryFields := {}
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>FOR</SPAN><SPAN class=any1-space> i := </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>TO</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cQuery ) + </SPAN><SPAN class=any1-number>1
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> i > </SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cQuery ) .OR. </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) == </SPAN><SPAN class=any1-string>"&"
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>aadd</SPAN><SPAN class=any1-symbol>( ::aQueryFields, ;
|
||||
{ </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuff, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) - </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ), ;
|
||||
</SPAN><SPAN class=any1-function>strtran</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cBuff, </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, ;
|
||||
</SPAN><SPAN class=any1-function>len</SPAN><SPAN class=any1-symbol>( cBuff ) - </SPAN><SPAN class=any1-function>at</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"="</SPAN><SPAN class=any1-symbol>, cBuff ) + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ), </SPAN><SPAN class=any1-string>"+"</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-string>" "</SPAN><SPAN class=any1-space> ) } )
|
||||
cBuff := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> ) = </SPAN><SPAN class=any1-string>"%"
|
||||
</SPAN><SPAN class=any1-space> cBuff += </SPAN><SPAN class=any1-function>chr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-variable>Hex2Dec</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i + </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-space> ) ) )
|
||||
nBuff := </SPAN><SPAN class=any1-number>3
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nBuff = </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> cBuff += </SPAN><SPAN class=any1-function>substr</SPAN><SPAN class=any1-symbol>( cQuery, i, </SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>ELSE
|
||||
</SPAN><SPAN class=any1-space> nBuff--
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>NEXT
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>GetCGIParam</SPAN><SPAN class=any1-symbol>( nParam )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nParam > </SPAN><SPAN class=any1-number>20</SPAN><SPAN class=any1-space> .OR. nParam < </SPAN><SPAN class=any1-number>1
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-function>outerr</SPAN><SPAN class=any1-symbol>( </SPAN><SPAN class=any1-string>"Invalid CGI parameter"</SPAN><SPAN class=any1-space> )
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( NIL )
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( ::aCGIContents[nParam] )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>QueryFields</SPAN><SPAN class=any1-symbol>( cQueryName )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> cRet := </SPAN><SPAN class=any1-string>""
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> nRet
|
||||
|
||||
::</SPAN><SPAN class=any1-variable>ProcessCGI</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
nRet := </SPAN><SPAN class=any1-function>aScan</SPAN><SPAN class=any1-symbol>( ::aQueryFields, ;
|
||||
{| x | </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( x[</SPAN><SPAN class=any1-number>1</SPAN><SPAN class=any1-symbol>] ) = </SPAN><SPAN class=any1-function>upper</SPAN><SPAN class=any1-symbol>( cQueryName ) } )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>IF</SPAN><SPAN class=any1-space> nRet > </SPAN><SPAN class=any1-number>0
|
||||
</SPAN><SPAN class=any1-space> cRet := ::aQueryFields[nRet, </SPAN><SPAN class=any1-number>2</SPAN><SPAN class=any1-symbol>]
|
||||
</SPAN><SPAN class=any1-reservedword>ENDIF
|
||||
|
||||
</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( cRet )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>SetHTMLFile</SPAN><SPAN class=any1-symbol>( cFile )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
::cHTMLFile := cFile
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>STATIC</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-reservedword>FUNCTION</SPAN><SPAN class=any1-space> </SPAN><SPAN class=any1-variable>AddReplaceTag</SPAN><SPAN class=any1-symbol>( cTag, cReplaceText )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>LOCAL</SPAN><SPAN class=any1-space> Self := </SPAN><SPAN class=any1-variable>QSelf</SPAN><SPAN class=any1-symbol>()
|
||||
|
||||
</SPAN><SPAN class=any1-function>aAdd</SPAN><SPAN class=any1-symbol>( ::aReplaceTags, { cTag, cReplaceText } )
|
||||
|
||||
</SPAN><SPAN class=any1-reservedword>RETURN</SPAN><SPAN class=any1-symbol>( Self )
|
||||
</SPAN></SPAN>
|
||||
</CODE></PRE>
|
||||
</BODY></HTML>
|
||||
|
||||
Reference in New Issue
Block a user