2011-05-01 22:20 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
* contrib/hbtip/tests/upld_ftp.prg
* contrib/rddads/tests/datad.prg
* contrib/rddads/tests/testmg.prg
* function main() -> procedure main() + cleanup
* contrib/rddads/tests/datad.prg
* contrib/rddads/tests/testmg.prg
* contrib/rddads/doc/en/adsfuncs.txt
* contrib/rddads/doc/en/readme.txt
* formatted (hbformat, manual)
* fixes
* src/rtl/gtxwc/gtxwc.h
* src/rtl/gtxwc/gtxwc.c
* src/rtl/hbmd5.c
* contrib/gtwvg/tests/demowvg.prg
* contrib/gtwvg/tests/wvgdyndialogs.prg
* contrib/gtwvg/tests/wvgwvtclasses.prg
* contrib/hbtip/thtml.prg
* contrib/hbtip/tests/loadhtml.prg
* tests/server.prg
* examples/hbvpdf/hbvpdft.prg
* Using 'harbour' name in outputs and some comments
* src/rdd/dbcmd.c
* typo
This commit is contained in:
@@ -16,6 +16,34 @@
|
||||
The license applies to all entries newer than 2009-04-28.
|
||||
*/
|
||||
|
||||
2011-05-01 22:20 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* contrib/hbtip/tests/upld_ftp.prg
|
||||
* contrib/rddads/tests/datad.prg
|
||||
* contrib/rddads/tests/testmg.prg
|
||||
* function main() -> procedure main() + cleanup
|
||||
|
||||
* contrib/rddads/tests/datad.prg
|
||||
* contrib/rddads/tests/testmg.prg
|
||||
* contrib/rddads/doc/en/adsfuncs.txt
|
||||
* contrib/rddads/doc/en/readme.txt
|
||||
* formatted (hbformat, manual)
|
||||
* fixes
|
||||
|
||||
* src/rtl/gtxwc/gtxwc.h
|
||||
* src/rtl/gtxwc/gtxwc.c
|
||||
* src/rtl/hbmd5.c
|
||||
* contrib/gtwvg/tests/demowvg.prg
|
||||
* contrib/gtwvg/tests/wvgdyndialogs.prg
|
||||
* contrib/gtwvg/tests/wvgwvtclasses.prg
|
||||
* contrib/hbtip/thtml.prg
|
||||
* contrib/hbtip/tests/loadhtml.prg
|
||||
* tests/server.prg
|
||||
* examples/hbvpdf/hbvpdft.prg
|
||||
* Using 'harbour' name in outputs and some comments
|
||||
|
||||
* src/rdd/dbcmd.c
|
||||
* typo
|
||||
|
||||
2011-05-01 21:41 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* contrib/hbct/tests/datetime.prg
|
||||
* contrib/hbcurl/tests/ftp_uldl.prg
|
||||
|
||||
@@ -102,7 +102,7 @@ PROCEDURE Main()
|
||||
LOCAL nRgt := 75
|
||||
LOCAL nMaxRows := MaxRow()
|
||||
LOCAL nBtnRow := nMaxRows - 1
|
||||
LOCAL cLabel := "(x)Harbour simulated GUI."
|
||||
LOCAL cLabel := "Harbour simulated GUI."
|
||||
LOCAL aObjects := WvtSetObjects( {} )
|
||||
|
||||
SET DATE BRITISH
|
||||
@@ -127,7 +127,7 @@ PROCEDURE Main()
|
||||
|
||||
pGT := SetGT( 1, hb_gtSelect() )
|
||||
|
||||
// Force mouse pointer right below the xHarbour label
|
||||
// Force mouse pointer right below the Harbour label
|
||||
//
|
||||
Wvt_SetMousePos( 2,40 )
|
||||
|
||||
@@ -375,7 +375,7 @@ PROCEDURE WvtNextGets_X()
|
||||
clr := SetColor( "N/W,N/GR*,,,N/W*" )
|
||||
CLS
|
||||
|
||||
@ MaxRow(), 0 SAY PadC( "(x)Harbour + WVT Console GUI Screen",80 ) COLOR "R+/W"
|
||||
@ MaxRow(), 0 SAY PadC( "Harbour + WVT Console GUI Screen",80 ) COLOR "R+/W"
|
||||
|
||||
@ 6, nColGet SAY "< Date >"
|
||||
@ 9, nColGet SAY "<" + PadC( "Name", 33 ) + ">"
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
/*
|
||||
* $Id$
|
||||
*/
|
||||
|
||||
/*
|
||||
|
||||
/*
|
||||
* Pritpal Bedi <bedipritpal@hotmail.com>
|
||||
*/
|
||||
|
||||
@@ -13,7 +13,7 @@
|
||||
#include "wvtwin.ch"
|
||||
#include "hbgtinfo.ch"
|
||||
#include "hbgtwvg.ch"
|
||||
#include "wvgparts.ch"
|
||||
#include "wvgparts.ch"
|
||||
|
||||
/*----------------------------------------------------------------------*/
|
||||
|
||||
@@ -31,9 +31,9 @@
|
||||
#define ID_STA_TEXT 71
|
||||
#define ID_STA_IMAGE 72
|
||||
#define ID_ICO_VOUCH 81
|
||||
|
||||
|
||||
#define ID_GRP_COMP 113
|
||||
|
||||
|
||||
#define ID_MNU_FILE 201
|
||||
#define ID_MNU_CONTROL 202
|
||||
|
||||
@@ -96,7 +96,7 @@ FUNCTION DynWinDialog( nInfo )
|
||||
nStyle := WS_CHILD + WS_VISIBLE + WS_TABSTOP + BS_GROUPBOX
|
||||
aDlg := Wvt_AddDlgItem( aDlg, 7, 41, 4, 17, {0,0,4,0},ID_GRP_COMP, "BUTTON" , nStyle, "Compiler" )
|
||||
nStyle := WS_CHILD + WS_VISIBLE + WS_TABSTOP + BS_AUTORADIOBUTTON
|
||||
aDlg := Wvt_AddDlgItem( aDlg, 8, 43, 1, 14, {}, ID_RDO_XH , "BUTTON" , nStyle, "(x)Harbour" )
|
||||
aDlg := Wvt_AddDlgItem( aDlg, 8, 43, 1, 14, {}, ID_RDO_XH , "BUTTON" , nStyle, "Harbour" )
|
||||
aDlg := Wvt_AddDlgItem( aDlg, 9, 43, 1, 14, {}, ID_RDO_CLIP , "BUTTON" , nStyle, "Clipper" )
|
||||
aDlg := Wvt_AddDlgItem( aDlg,10, 43, 1, 14, {}, ID_RDO_XBASE , "BUTTON" , nStyle, "Xbase++" )
|
||||
|
||||
@@ -158,7 +158,7 @@ FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
|
||||
WVG_MessageBox( hDlg, iif( lClicked, "Satisfied", "UnSatisfied" ), "CheckBoxStatus" )
|
||||
|
||||
case wParam == ID_RDO_XH
|
||||
WVG_MessageBox( hDlg, "(x)Harbour", "Compiler" )
|
||||
WVG_MessageBox( hDlg, "Harbour", "Compiler" )
|
||||
|
||||
case wParam == ID_RDO_CLIP
|
||||
WVG_MessageBox( hDlg, "Clipper", "Compiler" )
|
||||
@@ -200,35 +200,35 @@ FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
|
||||
WVG_SetTextColor( wParam, RGB( 255,255,255 ) )
|
||||
WVG_SetBkColor( wParam, RGB( 10,200,45 ) )
|
||||
Return 1
|
||||
ENDIF
|
||||
EXIT
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WM_CTLCOLORSTATIC
|
||||
IF ( WVG_GetDlgItem( hDlg,ID_STA_TEXT ) == lParam )
|
||||
WVG_SetTextColor( wParam, RGB( 255,255,255 ) )
|
||||
Return 1
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
ENDIF
|
||||
EXIT
|
||||
|
||||
CASE WM_INITDIALOG
|
||||
WVG_SetTimer( hDlg, 5001, 1000 ) // 1 sec
|
||||
|
||||
IF empty( aHFonts := SetFonts() )
|
||||
IF ( hFont := Wvt_CreateFont( "Times New Roman", 18 ) ) != 0
|
||||
SetFonts( hFont )
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF len( aHFonts ) > 0
|
||||
WVG_SendMessage( WVG_GetDlgItem( hDlg, ID_MLE ), WM_SETFONT, ahFonts[ 1 ], 0 )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
IF empty( SetIcons() )
|
||||
SetIcons( WVG_LoadIcon( "vr_1.ico" ) )
|
||||
ENDIF
|
||||
ENDIF
|
||||
IF !empty( SetIcons() )
|
||||
WVG_SendMessage( WVG_GetDlgItem( hDlg, ID_ICO_VOUCH ), STM_SETIMAGE, IMAGE_ICON, SetIcons()[ 1 ] )
|
||||
ENDIF
|
||||
ENDIF
|
||||
|
||||
/*
|
||||
if t_hImage == nil
|
||||
@@ -243,7 +243,7 @@ FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
|
||||
|
||||
WVG_CheckRadioButton( hDlg, ID_RDO_XH, ID_RDO_XBASE, ID_RDO_XH )
|
||||
|
||||
Wvt_LBAddString( hDlg, ID_LST_LIST, "(x)Harbour" )
|
||||
Wvt_LBAddString( hDlg, ID_LST_LIST, "Harbour" )
|
||||
Wvt_LBAddString( hDlg, ID_LST_LIST, "Gtwvt" )
|
||||
Wvt_LBAddString( hDlg, ID_LST_LIST, "Wvtgui" )
|
||||
Wvt_LBAddString( hDlg, ID_LST_LIST, "Modeless" )
|
||||
@@ -262,15 +262,15 @@ FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
|
||||
|
||||
WVG_InvalidateRect( hDlg )
|
||||
|
||||
EXIT
|
||||
EXIT
|
||||
|
||||
CASE WM_DESTROY
|
||||
// Do whatevert you want to do with cText
|
||||
// Each box will retrieve its own text.
|
||||
//
|
||||
/* cText := */ WVG_GetDlgItemText( hDlg, ID_MLE )
|
||||
EXIT
|
||||
END
|
||||
EXIT
|
||||
END
|
||||
|
||||
RETURN 0
|
||||
|
||||
@@ -279,13 +279,13 @@ FUNCTION DynDlgProc( hDlg, nMsg, wParam, lParam )
|
||||
STATIC FUNCTION GetEditText()
|
||||
LOCAL cText := ""
|
||||
|
||||
cText += "Welcome in the Wonderful World of (x)Harbour!"
|
||||
cText += "Welcome in the Wonderful World of Harbour!"
|
||||
cText += CRLF + CRLF
|
||||
cText += "When Peter Rees first published GTWVT, a Windows "
|
||||
cText += "Terminal Driver, on 22 Dec 2003, everybody took it "
|
||||
cText += "lightly, except for me, as I was aware that what "
|
||||
cText += "wonderful contribution to (x)Harbour he has made, "
|
||||
cText += "what immense possibilities he has opened for (x)Harbour "
|
||||
cText += "wonderful contribution to Harbour he has made, "
|
||||
cText += "what immense possibilities he has opened for Harbour "
|
||||
cText += "developers, what limitations he has cleared for Clipper "
|
||||
cText += "savvy user base."
|
||||
cText += CRLF + CRLF
|
||||
@@ -334,24 +334,24 @@ FUNCTION DlgSlideShowProc( hDlg, nMsg, wParam, lParam )
|
||||
|
||||
CASE WM_INITDIALOG
|
||||
DrawSlide( hDlg, nSlide )
|
||||
EXIT
|
||||
EXIT
|
||||
|
||||
CASE WM_PAINT
|
||||
DrawSlide( hDlg, nSlide )
|
||||
EXIT
|
||||
EXIT
|
||||
|
||||
CASE WM_TIMER
|
||||
nSlide++
|
||||
IF nSlide > len( t_aSlides )
|
||||
nSlide := 1
|
||||
ENDIF
|
||||
ENDIF
|
||||
DrawSlide( hDlg, nSlide )
|
||||
|
||||
EXIT
|
||||
END
|
||||
EXIT
|
||||
END
|
||||
|
||||
RETURN 0
|
||||
|
||||
|
||||
//-------------------------------------------------------------------//
|
||||
|
||||
FUNCTION DrawSlide( hDlg, nSlide )
|
||||
@@ -367,5 +367,5 @@ FUNCTION DrawSlide( hDlg, nSlide )
|
||||
WVG_ReleaseDC( hDlg,hDC )
|
||||
|
||||
Return NIL
|
||||
|
||||
|
||||
//----------------------------------------------------------------------//
|
||||
|
||||
@@ -112,7 +112,7 @@ STATIC FUNCTION MyDialogOne( oCrt )
|
||||
oDlg:AddObject( oBox )
|
||||
|
||||
oText := WvtLabel():New( oDlg, 101, 4, oDlg:MaxCol()-40, 7,oDlg:MaxCol()-2 )
|
||||
oText:Text := "(x)Harbour"
|
||||
oText:Text := "Harbour"
|
||||
oText:nFontHeight := 36
|
||||
oText:nAlignHorz := 2
|
||||
oText:nAlignVert := 2
|
||||
@@ -135,7 +135,7 @@ STATIC FUNCTION MyDialogOne( oCrt )
|
||||
oTBar:lFloating := .f.
|
||||
oTBar:Tooltip := "Toolbar"
|
||||
oTBar:AddButton( aImg_[ 1 ], {|| oImg:SetImage( aImg_[ 1 ] ) } , "Lock" )
|
||||
oTBar:AddButton( aImg_[ 2 ], {|| oImg:SetImage( aImg_[ 2 ] ), oText:SetText( "(x)Harbour" ) } , "New" )
|
||||
oTBar:AddButton( aImg_[ 2 ], {|| oImg:SetImage( aImg_[ 2 ] ), oText:SetText( "Harbour" ) } , "New" )
|
||||
oTBar:AddButton( aImg_[ 3 ], {|| oImg:SetImage( aImg_[ 3 ] ) } , "Calculator" )
|
||||
oTBar:AddButton()
|
||||
oTBar:AddButton( aImg_[ 5 ], {|| oImg:SetImage( aImg_[ 5 ] ) } , "Restore" )
|
||||
@@ -263,7 +263,7 @@ STATIC FUNCTION MyDialogOne( oCrt )
|
||||
aGets_:= { pad("Pritpal",20 ), pad( "Bedi",20 ), pad( "60, New Professor Colony",30 ), ;
|
||||
pad( "Ludhiana, INDIA",30 ),;
|
||||
"PB", pad( "141004",10 ), ctod( "22/06/04" ), .t., 48, 17000, ;
|
||||
pad( "Wvtgui is a classical example of (x)Harbour capabilities...",65 ) }
|
||||
pad( "Wvtgui is a classical example of Harbour capabilities...",65 ) }
|
||||
|
||||
oGet1 := WvtGets():New( oDlg, , 4, 2, 37, 62 )
|
||||
oGet1:AddGets( nGetRow+00, nGetCol, aGets_[ 1 ], "@ " , "N/W*,N/GR*" )
|
||||
|
||||
@@ -16,7 +16,7 @@ PROCEDURE Main
|
||||
hQUery := hb_Hash()
|
||||
hb_hSetCaseMatch( hQuery, .F. )
|
||||
|
||||
hQuery["q"] := "xHarbour"
|
||||
hQuery["q"] := "Harbour"
|
||||
hQuery["hl"] := "en"
|
||||
hQuery["btnG"] := "Google+Search"
|
||||
|
||||
|
||||
@@ -10,19 +10,16 @@
|
||||
#include "common.ch"
|
||||
#include "directry.ch"
|
||||
|
||||
FUNCTION MAIN( cMask )
|
||||
PROCEDURE MAIN( cMask )
|
||||
|
||||
LOCAL lRet
|
||||
? TRP20FTPEnv( cMask )
|
||||
|
||||
lRet := TRP20FTPEnv( cMask )
|
||||
? lRet
|
||||
|
||||
RETURN nil
|
||||
RETURN
|
||||
|
||||
/**********************************************************************
|
||||
*
|
||||
*
|
||||
* Static Function TRP20FTPEnv()
|
||||
*
|
||||
*
|
||||
**********************************************************************/
|
||||
|
||||
STATIC FUNCTION TRP20FTPEnv( cCarpeta )
|
||||
@@ -63,7 +60,7 @@ STATIC FUNCTION TRP20FTPEnv( cCarpeta )
|
||||
IF oFTP:Open( cUrl )
|
||||
FOR EACH cFile IN afiles
|
||||
? "arquivo : " + cFile[ F_NAME ]
|
||||
IF !oFtp:UploadFile( cFile[ F_NAME ] )
|
||||
IF ! oFtp:UploadFile( cFile[ F_NAME ] )
|
||||
lRetorno := .F.
|
||||
EXIT
|
||||
ELSE
|
||||
|
||||
@@ -1600,7 +1600,7 @@ FUNCTION THtmlIsValid( cTagName, cAttrName )
|
||||
RETURN lRet
|
||||
|
||||
/*
|
||||
HTML Tag data are adopted for xHarbour from Tidy.exe (www.sourceforge.net/tidy)
|
||||
HTML Tag data are adopted for Harbour from Tidy.exe (www.sourceforge.net/tidy)
|
||||
*/
|
||||
STATIC PROCEDURE _Init_Html_TagTypes
|
||||
s_hTagTypes := { => }
|
||||
@@ -1733,7 +1733,7 @@ STATIC PROCEDURE _Init_Html_TagTypes
|
||||
|
||||
|
||||
/*
|
||||
HTML Tag attribute data are adopted for xHarbour from Tidy.exe (www.sourceforge.net/tidy)
|
||||
HTML Tag attribute data are adopted for Harbour from Tidy.exe (www.sourceforge.net/tidy)
|
||||
*/
|
||||
STATIC PROCEDURE _Init_Html_Attributes
|
||||
// attribute NAME TYPE
|
||||
|
||||
@@ -714,19 +714,19 @@
|
||||
* DLLs doing all the indexing. So to do progress meters
|
||||
* you need to implement this.
|
||||
* $EXAMPLES$
|
||||
* FUNCTION Main()
|
||||
* PROCEDURE Main()
|
||||
* ...
|
||||
* AdsRegCallBack( {|nPercent| outputstuff(nPercent)} )
|
||||
* AdsRegCallBack( {| nPercent | outputstuff( nPercent ) } )
|
||||
* /* The above codeblock will be called approximately
|
||||
* every 2 seconds while indexing.
|
||||
* The codeblock can return .T. to abort. */
|
||||
* INDEX ON First+LAST+LABEL1+LABEL2 TAG First
|
||||
* AdsClrCallBack()
|
||||
* RETURN nil
|
||||
* RETURN
|
||||
*
|
||||
* FUNCTION outputstuff(nPercent) /* The "callback" function */
|
||||
* FUNCTION outputstuff( nPercent ) /* The "callback" function */
|
||||
* ? "output stuff", nPercent
|
||||
* RETURN inkey() == 27
|
||||
* RETURN Inkey() == 27
|
||||
* /* If press ESC, returns .T. to abort. */
|
||||
* $STATUS$
|
||||
* R
|
||||
@@ -1219,7 +1219,7 @@
|
||||
* AdsDDAddTable() adds a new table to an ADS data dictionary.
|
||||
* To add the table you must be connected as ADSSYS user using the AdsConnect60() function
|
||||
* $EXAMPLES$
|
||||
* IF adsConnect60("xharbour.add", 7/* All types of connection*/, "ADSSYS", "",)
|
||||
* IF adsConnect60( "harbour.add", 7/* All types of connection*/, "ADSSYS", "",)
|
||||
* // Add one user
|
||||
* AdsDDCreateUser(,"Luiz", "papael", "This is luiz User")
|
||||
* // Add the tables
|
||||
@@ -1228,7 +1228,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* xHarbour extension
|
||||
* Harbour extension
|
||||
* $PLATFORMS$
|
||||
* Windows 32-bit, Linux
|
||||
* $FILES$
|
||||
@@ -1258,7 +1258,7 @@
|
||||
* $STATUS$
|
||||
* R
|
||||
* $COMPLIANCE$
|
||||
* xHarbour extension
|
||||
* Harbour extension
|
||||
* $PLATFORMS$
|
||||
* Windows 32-bit, Linux
|
||||
* $FILES$
|
||||
@@ -1290,7 +1290,7 @@
|
||||
* Adsconnect60() makes the connection to an advantage database server.
|
||||
* See ace.hlp for full details about the Advantage Database Server.
|
||||
* $EXAMPLES$
|
||||
* IF adsConnect60("xharbour.add", 7/* All types of connection*/, "ADSSYS", "",)
|
||||
* IF adsConnect60( "harbour.add", 7/* All types of connection*/, "ADSSYS", "",)
|
||||
* // Add one user
|
||||
* AdsDDCreateUser(, "Luiz", "papael", "This is luiz User")
|
||||
* ENDIF
|
||||
@@ -1485,5 +1485,3 @@ ADSIsRecordEncrypted
|
||||
ADSIsTableEncrypted
|
||||
|
||||
*/
|
||||
|
||||
|
||||
|
||||
@@ -34,7 +34,7 @@
|
||||
*
|
||||
* You also need to include in your PRG file following lines:
|
||||
*
|
||||
* REQUEST _ADS </par>
|
||||
* REQUEST ADS </par>
|
||||
* rddRegister( "ADS", 1 ) </par>
|
||||
* rddsetdefault( "ADS" ) </par>
|
||||
*
|
||||
@@ -62,61 +62,61 @@
|
||||
* increase the setting for the TABLES configuration value in the Advantage
|
||||
* Database Server configuration registry key using the Registry Editor.
|
||||
* For NetWare, edit the configuration file ads.cfg.
|
||||
|
||||
*
|
||||
* See ace.hlp under adslocal.cfg, or the Advantage Error Guide for
|
||||
* error 7005.
|
||||
|
||||
*
|
||||
* SPEED AND PERFORMANCE ISSUES
|
||||
|
||||
*
|
||||
* If you have sluggish browsers, one issue could be the scrollbar.
|
||||
* If it's fast with the scrollbar disabled, the browse/scrolling logic
|
||||
* may not be as optimized as it could be. Scrollbars should always use
|
||||
* ADSGetRelKeyPos() and ADSSetRelKeyPos() instead of key counting functions.
|
||||
|
||||
*
|
||||
* If filtered data seems slower than expected, check these things:
|
||||
* First, optimization is not on by default, so at the top of the app
|
||||
* call
|
||||
|
||||
* set(_SET_OPTIMIZE, .t.)
|
||||
|
||||
*
|
||||
* Set( _SET_OPTIMIZE, .T. )
|
||||
*
|
||||
* or its command equivalent. RDDADS will use an AOF whenever
|
||||
* dbSetFilter is called *if it can*.
|
||||
|
||||
*
|
||||
* Second, make sure the filter is one ADS can understand. UDFs are out,
|
||||
* as are references to public or private variables. It's also best to
|
||||
* remove field aliases from the string. ADS cannot reference aliases for other
|
||||
* related tables, so they're superfluous.
|
||||
* You can call
|
||||
|
||||
*
|
||||
* ? AdsIsExprValid( cFilter )
|
||||
|
||||
*
|
||||
* to check. If this returns False, neither the Local Server nor the
|
||||
* Remote Server can process it, so optimization will never occur (but
|
||||
* the Harbour RDD will process the filtering locally by eval'ing the
|
||||
* codeblock and testing each record). The only way to speed it up is to
|
||||
* fix the filter so ADS understands it.
|
||||
|
||||
*
|
||||
* You can also use dbOrderInfo(DBOI_OPTLEVEL) to see if the current
|
||||
* filter is optimized or not. COMIX users can use:
|
||||
*
|
||||
* func rlOptLevel()
|
||||
* return dbOrderInfo(DBOI_OPTLEVEL)
|
||||
|
||||
* FUNCTION rlOptLevel()
|
||||
* RETURN dbOrderInfo(DBOI_OPTLEVEL)
|
||||
*
|
||||
* This returns the Clipper/COMIX values (not ADS-defined values) because
|
||||
* this is an RDD call, not just a wrapper to the ADS call, which uses different numbers).
|
||||
|
||||
*
|
||||
* $COMPLIANCE$
|
||||
* Every attempt has been made to make the RDD compliant with the
|
||||
* standard dbfcdx RDD at the .prg level.
|
||||
* One important difference is the handling of structural indexes.
|
||||
* ACE will <b>always</b> automatically open an index with the same
|
||||
* name as the data file. There is no way to turn this feature off.
|
||||
|
||||
*
|
||||
* You can use the Set() function call as well as the equivalent
|
||||
* commands for SET DEFAULT TO, DATEFORMAT, DELETE, and EPOCH.
|
||||
* Harbour automatically makes the call to ADS to change its internal
|
||||
* setting to match Harbour's.
|
||||
|
||||
*
|
||||
* INDEXING and Progress Displays:
|
||||
* ace32.dll does not support the EVAL/EVERY clauses. Remember, there
|
||||
* is an external process doing the indexing that knows nothing of
|
||||
@@ -128,19 +128,19 @@
|
||||
* codeblock by the ADS server.
|
||||
*
|
||||
* <table>
|
||||
* FUNCTION Main()
|
||||
* PROCEDURE Main()
|
||||
* ...
|
||||
* AdsRegCallBack( {|nPercent| outputstuff(nPercent)} )
|
||||
* AdsRegCallBack( {| nPercent | outputstuff( nPercent ) } )
|
||||
* /* The above codeblock will be called approximately
|
||||
* every 2 seconds while indexing.
|
||||
* The codeblock can return .T. to abort. */
|
||||
* INDEX ON First+LAST+LABEL1+LABEL2 TAG First
|
||||
* AdsClrCallBack()
|
||||
* RETURN nil
|
||||
* RETURN
|
||||
*
|
||||
* FUNCTION outputstuff(nPercent) /* The "callback" function */
|
||||
* FUNCTION outputstuff( nPercent ) /* The "callback" function */
|
||||
* ? "output stuff", nPercent
|
||||
* RETURN inkey() == 27
|
||||
* RETURN Inkey() == 27
|
||||
* /* If press ESC, returns .T. to abort. */
|
||||
* </table>
|
||||
*
|
||||
@@ -151,7 +151,7 @@
|
||||
* 1) In ACE, skipping backwards to BOF goes to the phantom record and
|
||||
* sets the record number to 0. In RDDADS, the record pointer stays at
|
||||
* the Top record and only the BOF flag is set to True.
|
||||
|
||||
*
|
||||
* 2) In RDDADS, a filter expression can be used that may not be
|
||||
* valid on the server (because of references to public variables or
|
||||
* User-Defined Functions).
|
||||
@@ -159,15 +159,14 @@
|
||||
* but will be filtered by the application running on the client.
|
||||
* These situations lose the benefits of having a data server and should
|
||||
* be avoided, but they will function as they would in a Clipper program.
|
||||
|
||||
*
|
||||
* One problem with this scenario is that index key counting
|
||||
* functions that are supposed to give an accurate count respecting
|
||||
* the filter (e.g. dbOrderInfo(DBOI_KEYCOUNT) will return the values the
|
||||
* Server knows about, so the counts may be inaccurate.
|
||||
|
||||
*
|
||||
* 3) When setting a relation, the expression must be one that can be
|
||||
* evaluated by the Advantage Expression Engine. UDFs will fail.
|
||||
|
||||
*
|
||||
* $END$
|
||||
*/
|
||||
|
||||
@@ -14,14 +14,15 @@ REQUEST ADS
|
||||
# include "rddads.hbx"
|
||||
#endif
|
||||
|
||||
FUNCTION MAIN
|
||||
local n
|
||||
local cErr, cStr
|
||||
local aStru := {{ "ID", "A", 1, 0}, {"Name", "C", 50, 0}, {"address", "C", 50, 0}, {"city", "C", 30, 0}, {"Age", "n", 3, 0}}
|
||||
local hConnection1
|
||||
PROCEDURE MAIN()
|
||||
|
||||
LOCAL n
|
||||
LOCAL cErr, cStr
|
||||
LOCAL aStru := { { "ID", "A", 1, 0 }, { "Name", "C", 50, 0 }, { "address", "C", 50, 0 }, { "city", "C", 30, 0 }, { "Age", "n", 3, 0 } }
|
||||
LOCAL hConnection1
|
||||
|
||||
#if defined( __HBDYNLOAD__RDDADS__ )
|
||||
local l := hb_libLoad( hb_libName( "rddads" ) )
|
||||
LOCAL l := hb_libLoad( hb_libName( "rddads" ) )
|
||||
|
||||
hb_rddadsRegister()
|
||||
|
||||
@@ -30,47 +31,49 @@ FUNCTION MAIN
|
||||
|
||||
CLS
|
||||
|
||||
RddSetDefault( "ADSADT" )
|
||||
AdsSetServerType ( 7 )
|
||||
rddSetDefault( "ADSADT" )
|
||||
AdsSetServerType( 7 )
|
||||
SET FILETYPE TO ADT
|
||||
|
||||
? "Default connection is 0:", adsConnection()
|
||||
|
||||
fErase("harbour.add")
|
||||
fErase("harbour.ai")
|
||||
fErase("harbour.am")
|
||||
fErase("Table1.adt")
|
||||
fErase("Table1.adi")
|
||||
fErase("Table2.adt")
|
||||
fErase("Table2.adi")
|
||||
FErase( "harbour.add" )
|
||||
FErase( "harbour.ai" )
|
||||
FErase( "harbour.am" )
|
||||
FErase( "Table1.adt" )
|
||||
FErase( "Table1.adi" )
|
||||
FErase( "Table2.adt" )
|
||||
FErase( "Table2.adi" )
|
||||
|
||||
// now Create a Data dictionary and the files if not exist
|
||||
IF !File("harbour.add")
|
||||
ADSDDCREATE("harbour.add",, "(x)Harbour ADS demo for data dictionary")
|
||||
IF ! hb_FileExists( "harbour.add" )
|
||||
|
||||
ADSDDCREATE( "harbour.add", , "Harbour ADS demo for data dictionary" )
|
||||
// This also creates an Administrative Handle that is set as the default
|
||||
? "Default connection is now this admin handle:", adsConnection()
|
||||
AdsDisconnect() // disconnect current default.
|
||||
// if you wanted to retain this connection for later, you could use
|
||||
// hAdminCon := adsConnection(0)
|
||||
// This get/set call would return the current connection, then set it to 0
|
||||
// if you wanted to retain this connection for later, you could use
|
||||
// hAdminCon := adsConnection(0)
|
||||
// This get/set call would return the current connection, then set it to 0
|
||||
|
||||
? "Default connection is now this handle (zero):", adsConnection()
|
||||
|
||||
// now create two free tables with same structure
|
||||
DbCreate("Table1", aStru)
|
||||
DbCreate("Table2", aStru)
|
||||
dbCreate( "Table1", aStru )
|
||||
dbCreate( "Table2", aStru )
|
||||
//now create an index
|
||||
USE table1 new
|
||||
INDEX ON FIELD->id TAG codigo
|
||||
USE table1 NEW
|
||||
INDEX ON FIELD -> id TAG codigo
|
||||
USE
|
||||
|
||||
USE table2 new
|
||||
INDEX ON FIELD->id TAG codigo
|
||||
USE table2 NEW
|
||||
INDEX ON FIELD -> id TAG codigo
|
||||
USE
|
||||
ENDIF
|
||||
|
||||
// now the magic
|
||||
IF adsConnect60("harbour.add", 7/* All types of connection*/, "ADSSYS", "", , @hConnection1 )
|
||||
IF adsConnect60( "harbour.add", 7; /* All types of connection*/
|
||||
, "ADSSYS", "", , @hConnection1 )
|
||||
// The connection handle to harbour.add is now stored in hConnection1,
|
||||
// and this is now the default connection
|
||||
|
||||
@@ -79,10 +82,10 @@ FUNCTION MAIN
|
||||
? " ADS_SYS_ADMIN_CONNECTION=7):", AdsGetHandleType()
|
||||
|
||||
// Add one user
|
||||
AdsDDCreateUser(, "Luiz", "papael", "This is user Luiz")
|
||||
AdsDDCreateUser( , "Luiz", "papael", "This is user Luiz" )
|
||||
|
||||
|
||||
IF adsddGetUserProperty("Luiz", ADS_DD_COMMENT, @cStr, hConnection1)
|
||||
IF adsddGetUserProperty( "Luiz", ADS_DD_COMMENT, @cStr, hConnection1 )
|
||||
? "User comment:", cStr
|
||||
ELSE
|
||||
? "Error retrieving User comment"
|
||||
@@ -90,35 +93,35 @@ FUNCTION MAIN
|
||||
|
||||
|
||||
? "Add the tables"
|
||||
AdsDDaddTable("Table1", "table1.adt", "table1.adi")
|
||||
AdsDDaddTable( "Table1", "table1.adt", "table1.adi" )
|
||||
?
|
||||
IF ! AdsDDaddTable("Customer Data", "table2.adt", "table2.adi")
|
||||
IF ! AdsDDaddTable( "Customer Data", "table2.adt", "table2.adi" )
|
||||
// notice the "long table name" for file Table2.adt. Later open it with "Customer Data" as the table name
|
||||
? "Error adding table:", adsGetLastError(@cErr), cErr
|
||||
? "Error adding table:", adsGetLastError( @cErr ), cErr
|
||||
ENDIF
|
||||
? "Set new admin pword on default connection:", AdsDDSetDatabaseProperty( ADS_DD_ADMIN_PASSWORD, "newPWord" )
|
||||
? "Set new admin pword on explicit connection:", AdsDDSetDatabaseProperty( ADS_DD_ADMIN_PASSWORD, "newPWord", hConnection1 )
|
||||
? "Clear admin pword:", AdsDDSetDatabaseProperty( ADS_DD_ADMIN_PASSWORD, "" )
|
||||
|
||||
|
||||
ELSE
|
||||
? "Error connecting to harbour.add!"
|
||||
ENDIF
|
||||
AdsDisconnect(hConnection1)
|
||||
hConnection1 := nil // you should always reset a variable holding a handle that is no longer valid
|
||||
AdsDisconnect( hConnection1 )
|
||||
hConnection1 := NIL // you should always reset a variable holding a handle that is no longer valid
|
||||
|
||||
? "Default connection is back to 0:", adsConnection()
|
||||
? "Is a Data Dict connection? (AE_INVALID_HANDLE = 5018):", AdsGetHandleType()
|
||||
|
||||
// now open the tables and put some data
|
||||
|
||||
IF AdsConnect60("harbour.add", 7/* All types of connection*/, "Luiz", "papael", , @hConnection1)
|
||||
IF AdsConnect60( "harbour.add", 7; /* All types of connection*/
|
||||
, "Luiz", "papael", , @hConnection1 )
|
||||
? "Default connection is now this handle:", adsConnection()
|
||||
? "Connection type?", AdsGetHandleType()
|
||||
|
||||
FOR n := 1 TO 100
|
||||
IF AdsCreateSqlStatement("Data2", 3)
|
||||
IF !AdsExecuteSqlDirect(" insert into Table1( name,address,city,age) VALUES( '" + strzero(n)+"','"+strzero(n)+"','"+strzero(n)+"'," +str(n)+ ")" )
|
||||
IF AdsCreateSqlStatement( "Data2", 3 )
|
||||
IF ! AdsExecuteSqlDirect( " insert into Table1( name,address,city,age) VALUES( '" + StrZero( n ) + "','" + StrZero( n ) + "','" + StrZero( n ) + "'," + Str( n ) + ")" )
|
||||
ShowAdsError()
|
||||
ENDIF
|
||||
USE
|
||||
@@ -126,8 +129,8 @@ FUNCTION MAIN
|
||||
NEXT
|
||||
|
||||
FOR n := 1 TO 100
|
||||
IF AdsCreateSqlStatement("Data1", 3)
|
||||
IF !AdsExecuteSqlDirect(" insert into " +'"Customer Data"'+"( name,address,city,age) VALUES( '"+ strzero(n)+"','"+strzero(n)+"','"+strzero(n)+"'," +str(n)+")" )
|
||||
IF AdsCreateSqlStatement( "Data1", 3 )
|
||||
IF ! AdsExecuteSqlDirect( " insert into " + '"Customer Data"' + "( name,address,city,age) VALUES( '" + StrZero( n ) + "','" + StrZero( n ) + "','" + StrZero( n ) + "'," + Str( n ) + ")" )
|
||||
ShowAdsError()
|
||||
ENDIF
|
||||
USE
|
||||
@@ -138,22 +141,22 @@ FUNCTION MAIN
|
||||
// AdsUseDictionary(.t.) this function no longer is needed; the system knows if it's using a Data Dictionary connection
|
||||
|
||||
// Open the "long table name" for Table2
|
||||
DbUseArea(.t.,, "Customer Data", "custom", .t., .f.)
|
||||
? "Press a key to browse", alias()
|
||||
inkey(0)
|
||||
dbUseArea( .T. , , "Customer Data", "custom", .T. , .F. )
|
||||
? "Press a key to browse", Alias()
|
||||
Inkey( 0 )
|
||||
Browse()
|
||||
USE
|
||||
USE table1 new
|
||||
USE table1 NEW
|
||||
Browse()
|
||||
USE
|
||||
ENDIF
|
||||
|
||||
AdsDisconnect(hConnection1)
|
||||
@ 24, 0 say ""
|
||||
AdsDisconnect( hConnection1 )
|
||||
|
||||
RETURN NIL
|
||||
RETURN
|
||||
|
||||
PROCEDURE ShowAdsError()
|
||||
|
||||
PROC ShowAdsError()
|
||||
LOCAL cMsg
|
||||
|
||||
AdsGetLastError( @cMsg )
|
||||
|
||||
@@ -60,20 +60,20 @@ REQUEST ADS
|
||||
# include "rddads.hbx"
|
||||
#endif
|
||||
|
||||
function Main()
|
||||
PROCEDURE Main()
|
||||
|
||||
local i
|
||||
local aRay
|
||||
LOCAL i
|
||||
LOCAL aRay
|
||||
|
||||
#if defined( __HBDYNLOAD__RDDADS__ )
|
||||
local l := hb_libLoad( hb_libName( "rddads" ) )
|
||||
LOCAL l := hb_libLoad( hb_libName( "rddads" ) )
|
||||
|
||||
hb_rddadsRegister()
|
||||
|
||||
HB_SYMBOL_UNUSED( l )
|
||||
#endif
|
||||
|
||||
rddsetdefault( "ADS" )
|
||||
rddSetDefault( "ADS" )
|
||||
SET SERVER LOCAL // REMOTE
|
||||
|
||||
// use test // make this available to get some stats on open tables below
|
||||
@@ -87,7 +87,7 @@ function Main()
|
||||
?
|
||||
|
||||
aRay := AdsMgGetInstallInfo()
|
||||
IF len(aRay) > 7
|
||||
IF Len( aRay ) > 7
|
||||
? "Install info:"
|
||||
? aRay[1]
|
||||
? aRay[2]
|
||||
@@ -100,72 +100,72 @@ function Main()
|
||||
?
|
||||
ENDIF
|
||||
|
||||
? "Activity info:"
|
||||
? AdsMgGetActivityInfo(1)
|
||||
? AdsMgGetActivityInfo(2)
|
||||
? "Activity info:"
|
||||
? AdsMgGetActivityInfo( 1 )
|
||||
? AdsMgGetActivityInfo( 2 )
|
||||
|
||||
aRay := AdsMgGetActivityInfo(3)
|
||||
IF len(aRay) > 3
|
||||
aRay := AdsMgGetActivityInfo( 3 )
|
||||
IF Len( aRay ) > 3
|
||||
? "Up Time:", aRay[1], aRay[2], aRay[3], aRay[4]
|
||||
?
|
||||
ENDIF
|
||||
|
||||
? " Item In Use MaxUsed Rejected"
|
||||
aRay := AdsMgGetActivityInfo(4)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 4 )
|
||||
IF Len( aRay ) > 2
|
||||
? "Users: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(5)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 5 )
|
||||
IF Len( aRay ) > 2
|
||||
? "Connections: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(6)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 6 )
|
||||
IF Len( aRay ) > 2
|
||||
? "WorkAreas: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(7)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 7 )
|
||||
IF Len( aRay ) > 2
|
||||
? "Tables: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(8)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 8 )
|
||||
IF Len( aRay ) > 2
|
||||
? "Indexes: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(9)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 9 )
|
||||
IF Len( aRay ) > 2
|
||||
? "Locks: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(10)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 10 )
|
||||
IF Len( aRay ) > 2
|
||||
? "TpsHeaderElems:", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(11)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 11 )
|
||||
IF Len( aRay ) > 2
|
||||
? "TpsVisElems: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(12)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 12 )
|
||||
IF Len( aRay ) > 2
|
||||
? "TpsMemoElems: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
aRay := AdsMgGetActivityInfo(13)
|
||||
IF len(aRay) > 2
|
||||
aRay := AdsMgGetActivityInfo( 13 )
|
||||
IF Len( aRay ) > 2
|
||||
? "WorkerThreads: ", aRay[1], aRay[2], aRay[3]
|
||||
ENDIF
|
||||
|
||||
wait
|
||||
WAIT
|
||||
?
|
||||
|
||||
aRay := AdsMgGetCommStats()
|
||||
IF len(aRay) > 10
|
||||
IF Len( aRay ) > 10
|
||||
? aRay[1] , "% of pkts with checksum failures "
|
||||
? aRay[2] , "Total packets received "
|
||||
? aRay[3] , "Receive packets out of sequence "
|
||||
@@ -179,11 +179,11 @@ function Main()
|
||||
? aRay[11], "SendTo failed (NT only) "
|
||||
ENDIF
|
||||
|
||||
wait
|
||||
WAIT
|
||||
?
|
||||
|
||||
aRay := AdsMgGetConfigInfo(0)
|
||||
IF len(aRay) > 24
|
||||
aRay := AdsMgGetConfigInfo( 0 )
|
||||
IF Len( aRay ) > 24
|
||||
? aRay[1] , " number connections "
|
||||
? aRay[2] , " number work areas "
|
||||
? aRay[3] , " number tables "
|
||||
@@ -212,11 +212,11 @@ function Main()
|
||||
// ? aRay[26], " reserved "
|
||||
ENDIF
|
||||
|
||||
wait
|
||||
WAIT
|
||||
?
|
||||
|
||||
aRay := AdsMgGetConfigInfo(1)
|
||||
IF len(aRay) > 12
|
||||
aRay := AdsMgGetConfigInfo( 1 )
|
||||
IF Len( aRay ) > 12
|
||||
? aRay[1] , " Total mem taken by cfg params "
|
||||
? aRay[2] , " memory taken by connections "
|
||||
? aRay[3] , " memory taken by work areas "
|
||||
@@ -238,9 +238,9 @@ function Main()
|
||||
// Second arg: Max # of users (required for memory allocation, default is 100)
|
||||
aRay := AdsMgGetUserNames()
|
||||
IF aRay != NIL
|
||||
? "Number of connected users: ", len(aRay)
|
||||
FOR i := 1 TO len(aRay)
|
||||
? aRay[i]
|
||||
? "Number of connected users: ", Len( aRay )
|
||||
FOR i := 1 TO Len( aRay )
|
||||
? aRay[ i ]
|
||||
NEXT
|
||||
ENDIF
|
||||
|
||||
@@ -250,4 +250,5 @@ function Main()
|
||||
|
||||
? "end"
|
||||
?
|
||||
return nil
|
||||
|
||||
RETURN
|
||||
|
||||
@@ -19,7 +19,7 @@
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __HARBOUR__ // Harbour and xHarbour
|
||||
#ifdef __HARBOUR__
|
||||
#include "hbclass.ch"
|
||||
#endif
|
||||
|
||||
|
||||
@@ -1217,7 +1217,7 @@ HB_FUNC( ORDCONDSET )
|
||||
lpdbOrdCondInfo->fUseCurrent = hb_parl( 14 );
|
||||
lpdbOrdCondInfo->fCustom = hb_parl( 15 );
|
||||
lpdbOrdCondInfo->fNoOptimize = hb_parl( 16 );
|
||||
/* 18th parameter in[x]Harbour is MEMORY flag added by Alexander for
|
||||
/* 18th parameter in [x]Harbour is MEMORY flag added by Alexander for
|
||||
DBFNTX, so far it was served in hacked way inside SELF_ORDSETCOND()
|
||||
so it was working only if this method was called from ORDCONDSET()
|
||||
function. I also do not like the idea that it was called MEMORY.
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* [x]Harbour Project source code:
|
||||
* Harbour Project source code:
|
||||
* XWindow Console
|
||||
* Copyright 2003 - Giancarlo Niccolai <antispam /at/ niccolai.ws>
|
||||
* Copyright 2004/2006 - Przemyslaw Czerpak <druzus /at/ priv.onet.pl>
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
* [x]Harbour Project source code:
|
||||
* Harbour Project source code:
|
||||
* XWindow Console
|
||||
* Copyright 2003 - Giancarlo Niccolai <antispam /at/ niccolai.ws>
|
||||
* Copyright 2004/2006 - Przemyslaw Czerpak <druzus /at/ priv.onet.pl>
|
||||
|
||||
@@ -56,7 +56,7 @@
|
||||
*/
|
||||
|
||||
/*
|
||||
MD5 digest (based on RFC 1321 only). [x]Harbour implementation
|
||||
MD5 digest (based on RFC 1321 only). Harbour implementation
|
||||
|
||||
PRG functions:
|
||||
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
*/
|
||||
|
||||
***************************************************
|
||||
* X harbour Inet demo server program
|
||||
* Harbour Inet demo server program
|
||||
*
|
||||
* Giancarlo Niccolai
|
||||
*
|
||||
@@ -11,7 +11,7 @@
|
||||
* to demonstrate how to use timeout sockets.
|
||||
*
|
||||
|
||||
Procedure Main( cPort )
|
||||
PROCEDURE Main( cPort )
|
||||
LOCAL Socket, s
|
||||
LOCAL nResponse, cResponse
|
||||
LOCAL nTurn := 0, nTurn1 := 0
|
||||
@@ -26,8 +26,8 @@ Procedure Main( cPort )
|
||||
|
||||
hb_InetInit()
|
||||
|
||||
@ 1, 15 SAY "X H A R B O U R - Inet Api Server Demo"
|
||||
@ 2, 5 SAY "Contact this server using telnet or the xHarbour Inet Client demo"
|
||||
@ 1, 15 SAY "H A R B O U R - Inet Api Server Demo"
|
||||
@ 2, 5 SAY "Contact this server using telnet or the Harbour Inet Client demo"
|
||||
@ 3, 5 SAY "Press a [KEY] to terminate the program"
|
||||
@ 5, 5 SAY "Server listening on port " + cPort + "..."
|
||||
Socket := hb_InetServer( Val( cPort ) )
|
||||
@@ -108,7 +108,7 @@ Procedure Main( cPort )
|
||||
|
||||
hb_InetCleanup()
|
||||
|
||||
RETURN
|
||||
RETURN
|
||||
|
||||
|
||||
PROCEDURE Progress( nProgress, nDrow, nDcol )
|
||||
@@ -136,4 +136,4 @@ PROCEDURE Progress( nProgress, nDrow, nDcol )
|
||||
|
||||
@ nRow, nCol
|
||||
|
||||
RETURN
|
||||
RETURN
|
||||
|
||||
Reference in New Issue
Block a user