From 74c14c6fa8ca70f615c8f05d7b0e272376e1a718 Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Fri, 27 Mar 2009 00:55:52 +0000 Subject: [PATCH] 2009-03-27 01:52 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * utils/hbmk2/hbmk2.prg * contrib/hbole/tests/hbole.hbp * contrib/gtwvg/tests/gtwvg.hbp * contrib/hbwin/tests/hbwin.hbp - utils/hbmk2/examples/winapi.hbp + Added all important Windows system libs to all win compilers in hbmk2. - Removed above libs from .hbp files. * contrib/hbodbc/todbc.prg * contrib/hbodbc/browodbc.prg * contrib/hbodbc/odbc.c * Further cleanups. SETNUMLEN() -> SQLNUMSETLEN(). This should probably be a core function by the name HB_NUMSETLEN(). * contrib/hbole/tests/testole.prg * contrib/hbole/tests/sample.odt + Updated to latest hbole code. ; TOFIX: hbole code doesn't compile with MSVC in default C++ even if #define CINTERFACE 1 is enabled. ; TOFIX: OpenOffice example fails at some point. It probably needs array support. * contrib/hbole/olecore.c * Minor formatting. * contrib/hbqt/hbqt_qabstractitemview.cpp ! Fixed backslash to forward slash. * contrib/hbct/tests/ctwtest.prg * contrib/hbnf/dispmsg.prg * contrib/hbnf/pegs.prg * contrib/hbnf/tbwhile.prg * contrib/hbnf/calendar.prg * contrib/gtwvg/tests/demowvg.prg * contrib/examples/terminal/trm_server.prg * contrib/examples/terminal/trm_client.prg ! Using manifest constants. * contrib/hbmysql/mysql.c * contrib/hbodbc/odbc.c * Minor cleanup. * contrib/hbodbc/tests/odbcdemo.prg * contrib/hbodbc/tests/odbccall.prg * contrib/hbodbc/tests/testodbc.prg * Minor. --- harbour/ChangeLog | 50 ++++ .../contrib/examples/terminal/trm_client.prg | 5 +- .../contrib/examples/terminal/trm_server.prg | 4 +- harbour/contrib/gtwvg/tests/demowvg.prg | 5 +- harbour/contrib/gtwvg/tests/gtwvg.hbp | 1 - harbour/contrib/hbct/tests/ctwtest.prg | 3 +- harbour/contrib/hbmysql/mysql.c | 52 ++-- harbour/contrib/hbnf/calendar.prg | 7 +- harbour/contrib/hbnf/dispmsg.prg | 6 +- harbour/contrib/hbnf/pegs.prg | 5 +- harbour/contrib/hbnf/tbwhile.prg | 3 +- harbour/contrib/hbodbc/browodbc.prg | 12 +- harbour/contrib/hbodbc/odbc.c | 37 +-- harbour/contrib/hbodbc/tests/odbccall.prg | 3 +- harbour/contrib/hbodbc/tests/odbcdemo.prg | 3 +- harbour/contrib/hbodbc/tests/testodbc.prg | 4 +- harbour/contrib/hbodbc/todbc.prg | 4 +- harbour/contrib/hbole/olecore.c | 116 ++------ harbour/contrib/hbole/tests/hbole.hbp | 2 +- harbour/contrib/hbole/tests/sample.odt | Bin 7977 -> 14317 bytes harbour/contrib/hbole/tests/testole.prg | 247 ++++++++---------- .../contrib/hbqt/hbqt_qabstractitemview.cpp | 2 +- harbour/contrib/hbwin/tests/hbwin.hbp | 2 +- harbour/utils/hbmk2/examples/winapi.hbp | 9 - harbour/utils/hbmk2/hbmk2.prg | 18 +- 25 files changed, 281 insertions(+), 319 deletions(-) delete mode 100644 harbour/utils/hbmk2/examples/winapi.hbp diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 40385333ab..7a821989d1 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -8,6 +8,56 @@ 2009-12-31 13:59 UTC+0100 Foo Bar (foo.bar foobar.org) */ +2009-03-27 01:52 UTC+0100 Viktor Szakats (harbour.01 syenar hu) + * utils/hbmk2/hbmk2.prg + * contrib/hbole/tests/hbole.hbp + * contrib/gtwvg/tests/gtwvg.hbp + * contrib/hbwin/tests/hbwin.hbp + - utils/hbmk2/examples/winapi.hbp + + Added all important Windows system libs to all + win compilers in hbmk2. + - Removed above libs from .hbp files. + + * contrib/hbodbc/todbc.prg + * contrib/hbodbc/browodbc.prg + * contrib/hbodbc/odbc.c + * Further cleanups. + SETNUMLEN() -> SQLNUMSETLEN(). This should probably be a core + function by the name HB_NUMSETLEN(). + + * contrib/hbole/tests/testole.prg + * contrib/hbole/tests/sample.odt + + Updated to latest hbole code. + ; TOFIX: hbole code doesn't compile with MSVC in default C++ + even if #define CINTERFACE 1 is enabled. + ; TOFIX: OpenOffice example fails at some point. It probably + needs array support. + + * contrib/hbole/olecore.c + * Minor formatting. + + * contrib/hbqt/hbqt_qabstractitemview.cpp + ! Fixed backslash to forward slash. + + * contrib/hbct/tests/ctwtest.prg + * contrib/hbnf/dispmsg.prg + * contrib/hbnf/pegs.prg + * contrib/hbnf/tbwhile.prg + * contrib/hbnf/calendar.prg + * contrib/gtwvg/tests/demowvg.prg + * contrib/examples/terminal/trm_server.prg + * contrib/examples/terminal/trm_client.prg + ! Using manifest constants. + + * contrib/hbmysql/mysql.c + * contrib/hbodbc/odbc.c + * Minor cleanup. + + * contrib/hbodbc/tests/odbcdemo.prg + * contrib/hbodbc/tests/odbccall.prg + * contrib/hbodbc/tests/testodbc.prg + * Minor. + 2009-03-26 22:01 UTC+0100 Viktor Szakats (harbour.01 syenar hu) * contrib/hbodbc/tests/odbcdemo.prg * contrib/hbodbc/tests/testodbc.prg diff --git a/harbour/contrib/examples/terminal/trm_client.prg b/harbour/contrib/examples/terminal/trm_client.prg index b89ff84b07..a9782de944 100644 --- a/harbour/contrib/examples/terminal/trm_client.prg +++ b/harbour/contrib/examples/terminal/trm_client.prg @@ -63,6 +63,7 @@ #include 'hbgtinfo.ch' #include 'fileio.ch' +#include "setcurs.ch" //----------------------------------------------------------------------// @@ -134,7 +135,7 @@ Function Main( cAddress, cPort, cAppln, cParams, cDirectory ) TrmInitFont() - SetCursor( 0 ) + SetCursor( SC_NONE ) SetColor( 'W/N' ) SetBlink( .T. ) @@ -721,7 +722,7 @@ Static Function DispClock() if SetClock() if !empty( aInfo := SetClockInfo() ) - nCrs := SetCursor( 0 ) + nCrs := SetCursor( SC_NONE ) nRow := row() nCol := col() DispOutAt( aInfo[ 1 ], aInfo[ 2 ], time(), aInfo[ 3 ] ) diff --git a/harbour/contrib/examples/terminal/trm_server.prg b/harbour/contrib/examples/terminal/trm_server.prg index e91152acdb..55a59b16a9 100644 --- a/harbour/contrib/examples/terminal/trm_server.prg +++ b/harbour/contrib/examples/terminal/trm_server.prg @@ -62,6 +62,7 @@ //----------------------------------------------------------------------// #include 'inkey.ch' +#include "setcurs.ch" //----------------------------------------------------------------------// @@ -95,8 +96,7 @@ Function Main( cPort ) MutexCount := HB_MutexCreate() SetColor( 'W+/N' ) - SetCursor( 0 ) - SetCursor( .f. ) + SetCursor( SC_NONE ) BuildScreen() diff --git a/harbour/contrib/gtwvg/tests/demowvg.prg b/harbour/contrib/gtwvg/tests/demowvg.prg index b99641e430..714b9d0d26 100644 --- a/harbour/contrib/gtwvg/tests/demowvg.prg +++ b/harbour/contrib/gtwvg/tests/demowvg.prg @@ -31,6 +31,7 @@ #include "hbgtinfo.ch" #include "hbgtwvg.ch" #include "wvgparts.ch" +#include "setcurs.ch" REQUEST DbfCdx REQUEST DbfNtx @@ -772,7 +773,7 @@ FUNCTION WvtMyBrowse_X( oCrt ) LOCAL nLeft := 3 LOCAL nBottom := maxrow() - 2 LOCAL nRight := maxcol() - 3 - LOCAL nCursor := setCursor( 0 ) + LOCAL nCursor := setCursor( SC_NONE ) LOCAL nRow := row() LOCAL nCol := col() LOCAL cColor := SetColor( "N/W*,N/GR*,,,N/W*" ) @@ -3939,7 +3940,7 @@ PROCEDURE GCUIConsole( oCrt ) // hTxt := Wvg_TextBox( 3,57,16,75, {10,10,-10,-10}, 'This is first TextBox Line!', 2, 2 ) // - Wvg_Image( 15,36,16,42, {-3,-3,3,3}, GOBJ_IMAGESOURCE_FILE, 'Vouch1.bmp' ) + Wvg_Image( 15,36,16,42, {-3,-3,3,3}, GOBJ_IMAGESOURCE_FILE, 'vouch1.bmp' ) Wvg_BoxRaised( 15,36,16,42,{-2,-2,2,2} ) // Wvg_ShadedRect( 1,54,18,79, { -5,-5,5,5 }, 0, {65000,21000,7000,56000}, {255,32255,16000,32500} ) diff --git a/harbour/contrib/gtwvg/tests/gtwvg.hbp b/harbour/contrib/gtwvg/tests/gtwvg.hbp index 37ff4bd2f3..5461ad3856 100644 --- a/harbour/contrib/gtwvg/tests/gtwvg.hbp +++ b/harbour/contrib/gtwvg/tests/gtwvg.hbp @@ -4,6 +4,5 @@ {win}gt=gtwvg {win}libs=hbwin -{win}libs=winspool comctl32 comdlg32 shell32 ole32 oleaut32 gui=yes mt=yes diff --git a/harbour/contrib/hbct/tests/ctwtest.prg b/harbour/contrib/hbct/tests/ctwtest.prg index c65421623f..55c58fef6d 100644 --- a/harbour/contrib/hbct/tests/ctwtest.prg +++ b/harbour/contrib/hbct/tests/ctwtest.prg @@ -12,6 +12,7 @@ #define ntrim(n) ltrim(str(n)) #include "inkey.ch" +#include "setcurs.ch" proc main() local aWin:=array(9), y, x, i, k, lFlag:=.f., lBoard:=.t. @@ -90,7 +91,7 @@ while .t. lFlag:=!lFlag setcursor(iif(lFlag,3,1)) elseif k==K_DEL - setcursor(0) + setcursor(SC_NONE) elseif k==K_LEFT wmove(wrow(),wcol()-1) elseif k==K_RIGHT diff --git a/harbour/contrib/hbmysql/mysql.c b/harbour/contrib/hbmysql/mysql.c index b6286afb09..502130ba50 100644 --- a/harbour/contrib/hbmysql/mysql.c +++ b/harbour/contrib/hbmysql/mysql.c @@ -353,32 +353,32 @@ HB_FUNC( MYSQL_ESCAPE_STRING_FROM_FILE ) #if !defined(HB_MYSQL_LEGACY_LEVEL_OFF) -HB_FUNC_EXTERN( MYSQL_GET_SERVER_VERSION ); HB_FUNC( SQLVERSION ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_VERSION ); } -HB_FUNC_EXTERN( MYSQL_REAL_CONNECT ); HB_FUNC( SQLCONNECT ) { HB_FUNC_EXEC( MYSQL_REAL_CONNECT ); } -HB_FUNC_EXTERN( MYSQL_CLOSE ); HB_FUNC( SQLCLOSE ) { HB_FUNC_EXEC( MYSQL_CLOSE ); } -HB_FUNC_EXTERN( MYSQL_COMMIT ); HB_FUNC( SQLCOMMIT ) { HB_FUNC_EXEC( MYSQL_COMMIT ); } -HB_FUNC_EXTERN( MYSQL_ROLLBACK ); HB_FUNC( SQLROLLBACK ) { HB_FUNC_EXEC( MYSQL_ROLLBACK ); } -HB_FUNC_EXTERN( MYSQL_SELECT_DB ); HB_FUNC( SQLSELECTD ) { HB_FUNC_EXEC( MYSQL_SELECT_DB ); } -HB_FUNC_EXTERN( MYSQL_QUERY ); HB_FUNC( SQLQUERY ) { HB_FUNC_EXEC( MYSQL_QUERY ); } -HB_FUNC_EXTERN( MYSQL_STORE_RESULT ); HB_FUNC( SQLSTORER ) { HB_FUNC_EXEC( MYSQL_STORE_RESULT ); } -HB_FUNC_EXTERN( MYSQL_USE_RESULT ); HB_FUNC( SQLUSERES ) { HB_FUNC_EXEC( MYSQL_USE_RESULT ); } -HB_FUNC_EXTERN( MYSQL_FREE_RESULT ); HB_FUNC( SQLFREER ) { HB_FUNC_EXEC( MYSQL_FREE_RESULT ); } -HB_FUNC_EXTERN( MYSQL_FETCH_ROW ); HB_FUNC( SQLFETCHR ) { HB_FUNC_EXEC( MYSQL_FETCH_ROW ); } -HB_FUNC_EXTERN( MYSQL_DATA_SEEK ); HB_FUNC( SQLDATAS ) { HB_FUNC_EXEC( MYSQL_DATA_SEEK ); } -HB_FUNC_EXTERN( MYSQL_NUM_ROWS ); HB_FUNC( SQLNROWS ) { HB_FUNC_EXEC( MYSQL_NUM_ROWS ); } -HB_FUNC_EXTERN( MYSQL_FETCH_FIELD ); HB_FUNC( SQLFETCHF ) { HB_FUNC_EXEC( MYSQL_FETCH_FIELD ); } -HB_FUNC_EXTERN( MYSQL_FIELD_SEEK ); HB_FUNC( SQLFSEEK ) { HB_FUNC_EXEC( MYSQL_FIELD_SEEK ); } -HB_FUNC_EXTERN( MYSQL_NUM_FIELDS ); HB_FUNC( SQLNUMFI ) { HB_FUNC_EXEC( MYSQL_NUM_FIELDS ); } -HB_FUNC_EXTERN( MYSQL_FIELD_COUNT ); HB_FUNC( SQLFICOU ) { HB_FUNC_EXEC( MYSQL_FIELD_COUNT ); } -HB_FUNC_EXTERN( MYSQL_LIST_FIELDS ); HB_FUNC( SQLLISTF ) { HB_FUNC_EXEC( MYSQL_LIST_FIELDS ); } -HB_FUNC_EXTERN( MYSQL_ERROR ); HB_FUNC( SQLGETERR ) { HB_FUNC_EXEC( MYSQL_ERROR ); } -HB_FUNC_EXTERN( MYSQL_LIST_DBS ); HB_FUNC( SQLLISTDB ) { HB_FUNC_EXEC( MYSQL_LIST_DBS ); } -HB_FUNC_EXTERN( MYSQL_LIST_TABLES ); HB_FUNC( SQLLISTTBL ) { HB_FUNC_EXEC( MYSQL_LIST_TABLES ); } -HB_FUNC_EXTERN( MYSQL_AFFECTED_ROWS ); HB_FUNC( SQLAFFROWS ) { HB_FUNC_EXEC( MYSQL_AFFECTED_ROWS ); } -HB_FUNC_EXTERN( MYSQL_GET_HOST_INFO ); HB_FUNC( SQLHOSTINFO ) { HB_FUNC_EXEC( MYSQL_GET_HOST_INFO ); } -HB_FUNC_EXTERN( MYSQL_GET_SERVER_INFO ); HB_FUNC( SQLSRVINFO ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_INFO ); } -HB_FUNC_EXTERN( MYSQL_ESCAPE_STRING ); HB_FUNC( DATATOSQL ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING ); } -HB_FUNC_EXTERN( MYSQL_ESCAPE_STRING_FROM_FILE ); HB_FUNC( FILETOSQLBINARY ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING_FROM_FILE ); } +HB_FUNC( SQLVERSION ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_VERSION ); } +HB_FUNC( SQLCONNECT ) { HB_FUNC_EXEC( MYSQL_REAL_CONNECT ); } +HB_FUNC( SQLCLOSE ) { HB_FUNC_EXEC( MYSQL_CLOSE ); } +HB_FUNC( SQLCOMMIT ) { HB_FUNC_EXEC( MYSQL_COMMIT ); } +HB_FUNC( SQLROLLBACK ) { HB_FUNC_EXEC( MYSQL_ROLLBACK ); } +HB_FUNC( SQLSELECTD ) { HB_FUNC_EXEC( MYSQL_SELECT_DB ); } +HB_FUNC( SQLQUERY ) { HB_FUNC_EXEC( MYSQL_QUERY ); } +HB_FUNC( SQLSTORER ) { HB_FUNC_EXEC( MYSQL_STORE_RESULT ); } +HB_FUNC( SQLUSERES ) { HB_FUNC_EXEC( MYSQL_USE_RESULT ); } +HB_FUNC( SQLFREER ) { HB_FUNC_EXEC( MYSQL_FREE_RESULT ); } +HB_FUNC( SQLFETCHR ) { HB_FUNC_EXEC( MYSQL_FETCH_ROW ); } +HB_FUNC( SQLDATAS ) { HB_FUNC_EXEC( MYSQL_DATA_SEEK ); } +HB_FUNC( SQLNROWS ) { HB_FUNC_EXEC( MYSQL_NUM_ROWS ); } +HB_FUNC( SQLFETCHF ) { HB_FUNC_EXEC( MYSQL_FETCH_FIELD ); } +HB_FUNC( SQLFSEEK ) { HB_FUNC_EXEC( MYSQL_FIELD_SEEK ); } +HB_FUNC( SQLNUMFI ) { HB_FUNC_EXEC( MYSQL_NUM_FIELDS ); } +HB_FUNC( SQLFICOU ) { HB_FUNC_EXEC( MYSQL_FIELD_COUNT ); } +HB_FUNC( SQLLISTF ) { HB_FUNC_EXEC( MYSQL_LIST_FIELDS ); } +HB_FUNC( SQLGETERR ) { HB_FUNC_EXEC( MYSQL_ERROR ); } +HB_FUNC( SQLLISTDB ) { HB_FUNC_EXEC( MYSQL_LIST_DBS ); } +HB_FUNC( SQLLISTTBL ) { HB_FUNC_EXEC( MYSQL_LIST_TABLES ); } +HB_FUNC( SQLAFFROWS ) { HB_FUNC_EXEC( MYSQL_AFFECTED_ROWS ); } +HB_FUNC( SQLHOSTINFO ) { HB_FUNC_EXEC( MYSQL_GET_HOST_INFO ); } +HB_FUNC( SQLSRVINFO ) { HB_FUNC_EXEC( MYSQL_GET_SERVER_INFO ); } +HB_FUNC( DATATOSQL ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING ); } +HB_FUNC( FILETOSQLBINARY ) { HB_FUNC_EXEC( MYSQL_ESCAPE_STRING_FROM_FILE ); } /* NOTE: Use hb_bitAnd() instead. Notice that latter will RTE on wrong arguments. */ HB_FUNC( SQLAND ) diff --git a/harbour/contrib/hbnf/calendar.prg b/harbour/contrib/hbnf/calendar.prg index 2af96d057b..84760e6b2b 100644 --- a/harbour/contrib/hbnf/calendar.prg +++ b/harbour/contrib/hbnf/calendar.prg @@ -96,6 +96,8 @@ * $END$ */ +#include "setcurs.ch" + #ifdef FT_TEST FUNCTION MAIN() local aRet[8], i @@ -136,8 +138,8 @@ FUNCTION FT_CALENDAR (nRow, nCol, cColor, lShadow, lShowHelp) nCol := IIF ( nCol <1 .OR. nCol >63, 63, nCol ) //check col bounds cSavColor := SETCOLOR(cColor) //save current and set display color - cSaveScreen := SAVESCREEN ( nRow-1, nCol-1, nRow+3, nCol+17 ) //save screen - cSaveCursor := SETCURSOR (0) // save current and turn off cursor + cSaveScreen := SAVESCREEN( nRow-1, nCol-1, nRow+3, nCol+17 ) //save screen + cSaveCursor := SETCURSOR( SC_NONE ) // save current and turn off cursor IF lShadow @nRow-1,nCol-1 to nRow+2, nCol+15 @@ -231,4 +233,3 @@ FUNCTION FT_CALENDAR (nRow, nCol, cColor, lShadow, lShowHelp) RETURN ( VAL(SUBSTR(cString,nOffset,nChar)) ) * end of calendar.prg - diff --git a/harbour/contrib/hbnf/dispmsg.prg b/harbour/contrib/hbnf/dispmsg.prg index 951a9a6998..5745a51bc8 100644 --- a/harbour/contrib/hbnf/dispmsg.prg +++ b/harbour/contrib/hbnf/dispmsg.prg @@ -122,6 +122,7 @@ #include "inkey.ch" +#include "setcurs.ch" // beginning of demo program #ifdef FT_TEST @@ -180,7 +181,7 @@ PROCEDURE Main( cCmdLine ) { cWindN,,,,, cWindH } }, "BIOQ" + CHR(27) ) SETCOLOR( "W/N" ) - SETCURSOR( 1 ) + SETCURSOR( SC_NORMAL ) SETBLINK( .T.) RESTSCREEN(,,,, cDosScrn ) SETPOS(nDosRow, nDosCol) @@ -265,7 +266,7 @@ FUNCTION FT_DispMsg( aInfo, cKey, nBoxTop, nBoxLeft, cnBoxString, lShadow ) cOldScreen := SAVESCREEN( nBoxTop, nBoxLeft, nBoxBottom+1, nBoxRight+2 ) - cOldCursor := SETCURSOR( 0 ) + cOldCursor := SETCURSOR( SC_NONE ) // draw box cOldColor := SETCOLOR( aInfo[ 2, LEN( aInfo[2] ) ] ) @@ -333,4 +334,3 @@ FUNCTION FT_DispMsg( aInfo, cKey, nBoxTop, nBoxLeft, cnBoxString, lShadow ) SETCOLOR( cOldColor ) SETCURSOR( cOldCursor ) RETURN xRtnVal - diff --git a/harbour/contrib/hbnf/pegs.prg b/harbour/contrib/hbnf/pegs.prg index f5c0423ba3..18a080eff9 100644 --- a/harbour/contrib/hbnf/pegs.prg +++ b/harbour/contrib/hbnf/pegs.prg @@ -53,6 +53,7 @@ #include "inkey.ch" #include "common.ch" +#include "setcurs.ch" #translate SINGLEBOX(, , , ) => ; @ , , , BOX "ÚÄ¿³ÙÄÀ³ " @@ -194,11 +195,11 @@ return NIL static function err_msg(msg) local buffer := savescreen(23, 33, 23, 47) -setcursor(0) +setcursor(SC_NONE) setcolor('+w/r') @ 23, 33 say msg inkey(2) -setcursor(1) +setcursor(SC_NORMAL) restscreen(23, 33, 23, 47, buffer) return nil diff --git a/harbour/contrib/hbnf/tbwhile.prg b/harbour/contrib/hbnf/tbwhile.prg index 9a01760b06..a7b75a5218 100644 --- a/harbour/contrib/hbnf/tbwhile.prg +++ b/harbour/contrib/hbnf/tbwhile.prg @@ -63,6 +63,7 @@ := IIF( = NIL, , ) ; [; := IIF( = NIL, , ) ] #include "inkey.ch" +#include "setcurs.ch" #ifdef FT_TEST @@ -352,7 +353,7 @@ FUNCTION FT_BRWSWHL(aFields, bWhileCond, cKey, nFreeze, lSaveScrn, ; @ nTop, nLeft CLEAR TO nBottom, nRight SetColor(cColorSave) - nCursSave := SetCursor(0) + nCursSave := SetCursor(SC_NONE) lMore := .t. WHILE (lMore) diff --git a/harbour/contrib/hbodbc/browodbc.prg b/harbour/contrib/hbodbc/browodbc.prg index ef232e67ad..f61e22c957 100644 --- a/harbour/contrib/hbodbc/browodbc.prg +++ b/harbour/contrib/hbodbc/browodbc.prg @@ -60,6 +60,7 @@ #include "common.ch" #include "inkey.ch" +#include "setcurs.ch" FUNCTION BrowseODBC( nTop, nLeft, nBottom, nRight, oDataSource ) @@ -70,12 +71,11 @@ FUNCTION BrowseODBC( nTop, nLeft, nBottom, nRight, oDataSource ) LOCAL lExit := .F. LOCAL bAction LOCAL oColumn - //LOCAL cFName - //TODO: Check if datasource is open - //IF ! Used() - // RETURN .F. - //ENDIF + // TODO: Check if datasource is open +// IF ! Used() +// RETURN .F. +// ENDIF IF PCount() < 4 nTop := 1 @@ -84,7 +84,7 @@ FUNCTION BrowseODBC( nTop, nLeft, nBottom, nRight, oDataSource ) nRight := MaxCol() ENDIF - nOldCursor := SetCursor( 0 ) + nOldCursor := SetCursor( SC_NONE ) cOldScreen := SaveScreen( nTop, nLeft, nBottom, nRight ) @ nTop, nLeft TO nBottom, nRight diff --git a/harbour/contrib/hbodbc/odbc.c b/harbour/contrib/hbodbc/odbc.c index d3d4a02c0b..28589281c3 100644 --- a/harbour/contrib/hbodbc/odbc.c +++ b/harbour/contrib/hbodbc/odbc.c @@ -689,29 +689,30 @@ HB_FUNC( SQLSTOD ) hb_retds( NULL ); } -HB_FUNC( SETNUMLEN ) /* SETNUMLEN( nValue, nSize, nDecimals ) ==> nValue (nSize, nDec) */ +HB_FUNC( SQLNUMSETLEN ) /* SQLNUMSETLEN( nValue, nSize, nDecimals ) ==> nValue (nSize, nDec) */ { hb_retnlen( hb_parnd( 1 ), hb_parni( 2 ), hb_parni( 3 ) ); } #if !defined(HB_ODBC_LEGACY_LEVEL_OFF) -HB_FUNC_EXTERN( SQLALLOCENV ); HB_FUNC( SQLALLOCEN ) { HB_FUNC_EXEC( SQLALLOCENV ); } -HB_FUNC_EXTERN( SQLALLOCCONNECT ); HB_FUNC( SQLALLOCCO ) { HB_FUNC_EXEC( SQLALLOCCONNECT ); } -HB_FUNC_EXTERN( SQLDRIVERCONNECT ); HB_FUNC( SQLDRIVERC ) { HB_FUNC_EXEC( SQLDRIVERCONNECT ); } -HB_FUNC_EXTERN( SQLDISCONNECT ); HB_FUNC( SQLDISCONN ) { HB_FUNC_EXEC( SQLDISCONNECT ); } -HB_FUNC_EXTERN( SQLFREECONNECT ); HB_FUNC( SQLFREECON ) { HB_FUNC_EXEC( SQLFREECONNECT ); } -HB_FUNC_EXTERN( SQLALLOCSTMT ); HB_FUNC( SQLALLOCST ) { HB_FUNC_EXEC( SQLALLOCSTMT ); } -HB_FUNC_EXTERN( SQLFREESTMT ); HB_FUNC( SQLFREESTM ) { HB_FUNC_EXEC( SQLFREESTMT ); } -HB_FUNC_EXTERN( SQLEXECDIRECT ); HB_FUNC( SQLEXECDIR ) { HB_FUNC_EXEC( SQLEXECDIRECT ); } -HB_FUNC_EXTERN( SQLNUMRESULTCOLS ); HB_FUNC( SQLNUMRES ) { HB_FUNC_EXEC( SQLNUMRESULTCOLS ); } -HB_FUNC_EXTERN( SQLDESCRIBECOL ); HB_FUNC( SQLDESCRIB ) { HB_FUNC_EXEC( SQLDESCRIBECOL ); } -HB_FUNC_EXTERN( SQLEXTENDEDFETCH ); HB_FUNC( SQLEXTENDE ) { HB_FUNC_EXEC( SQLEXTENDEDFETCH ); } -HB_FUNC_EXTERN( SQLFETCHSCROLL ); HB_FUNC( SQLFETCHSC ) { HB_FUNC_EXEC( SQLFETCHSCROLL ); } -HB_FUNC_EXTERN( SQLROWCOUNT ); HB_FUNC( SQLROWCOUN ) { HB_FUNC_EXEC( SQLROWCOUNT ); } -HB_FUNC_EXTERN( SQLSETCONNECTATTR ); HB_FUNC( SQLSETCONNECTOPTION ) { HB_FUNC_EXEC( SQLSETCONNECTATTR ); } -HB_FUNC_EXTERN( SQLSETSTMTATTR ); HB_FUNC( SQLSETSTMTOPTION ) { HB_FUNC_EXEC( SQLSETSTMTATTR ); } -HB_FUNC_EXTERN( SQLGETCONNECTATTR ); HB_FUNC( SQLGETCONNECTOPTION ) { HB_FUNC_EXEC( SQLGETCONNECTATTR ); } -HB_FUNC_EXTERN( SQLGETSTMTATTR ); HB_FUNC( SQLGETSTMTOPTION ) { HB_FUNC_EXEC( SQLGETSTMTATTR ); } +HB_FUNC( SQLALLOCEN ) { HB_FUNC_EXEC( SQLALLOCENV ); } +HB_FUNC( SQLALLOCCO ) { HB_FUNC_EXEC( SQLALLOCCONNECT ); } +HB_FUNC( SQLDRIVERC ) { HB_FUNC_EXEC( SQLDRIVERCONNECT ); } +HB_FUNC( SQLDISCONN ) { HB_FUNC_EXEC( SQLDISCONNECT ); } +HB_FUNC( SQLFREECON ) { HB_FUNC_EXEC( SQLFREECONNECT ); } +HB_FUNC( SQLALLOCST ) { HB_FUNC_EXEC( SQLALLOCSTMT ); } +HB_FUNC( SQLFREESTM ) { HB_FUNC_EXEC( SQLFREESTMT ); } +HB_FUNC( SQLEXECDIR ) { HB_FUNC_EXEC( SQLEXECDIRECT ); } +HB_FUNC( SQLNUMRES ) { HB_FUNC_EXEC( SQLNUMRESULTCOLS ); } +HB_FUNC( SQLDESCRIB ) { HB_FUNC_EXEC( SQLDESCRIBECOL ); } +HB_FUNC( SQLEXTENDE ) { HB_FUNC_EXEC( SQLEXTENDEDFETCH ); } +HB_FUNC( SQLFETCHSC ) { HB_FUNC_EXEC( SQLFETCHSCROLL ); } +HB_FUNC( SQLROWCOUN ) { HB_FUNC_EXEC( SQLROWCOUNT ); } +HB_FUNC( SQLSETCONNECTOPTION ) { HB_FUNC_EXEC( SQLSETCONNECTATTR ); } +HB_FUNC( SQLSETSTMTOPTION ) { HB_FUNC_EXEC( SQLSETSTMTATTR ); } +HB_FUNC( SQLGETCONNECTOPTION ) { HB_FUNC_EXEC( SQLGETCONNECTATTR ); } +HB_FUNC( SQLGETSTMTOPTION ) { HB_FUNC_EXEC( SQLGETSTMTATTR ); } +HB_FUNC( SETNUMLEN ) { HB_FUNC_EXEC( SQLNUMSETLEN ); } #endif diff --git a/harbour/contrib/hbodbc/tests/odbccall.prg b/harbour/contrib/hbodbc/tests/odbccall.prg index 9a307658b1..13ef8bb829 100644 --- a/harbour/contrib/hbodbc/tests/odbccall.prg +++ b/harbour/contrib/hbodbc/tests/odbccall.prg @@ -8,12 +8,11 @@ PROCEDURE Main() LOCAL cConStr - LOCAL cDir := hb_DirBase() LOCAL dsFunctions LOCAL Self - cConStr := "DBQ=" + hb_FNameMerge( cDir, "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" + cConStr := "DBQ=" + hb_FNameMerge( hb_DirBase(), "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" dsFunctions := TODBC():New( cConStr ) diff --git a/harbour/contrib/hbodbc/tests/odbcdemo.prg b/harbour/contrib/hbodbc/tests/odbcdemo.prg index e4a656b9c9..44d25acd5e 100644 --- a/harbour/contrib/hbodbc/tests/odbcdemo.prg +++ b/harbour/contrib/hbodbc/tests/odbcdemo.prg @@ -8,11 +8,10 @@ PROCEDURE Main() LOCAL nOp LOCAL dsFunctions LOCAL cConStr - LOCAL cDir := hb_DirBase() LOCAL i - cConStr := "DBQ=" + hb_FNameMerge( cDir, "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" + cConStr := "DBQ=" + hb_FNameMerge( hb_DirBase(), "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" dsFunctions := TODBC():New( cConStr ) diff --git a/harbour/contrib/hbodbc/tests/testodbc.prg b/harbour/contrib/hbodbc/tests/testodbc.prg index 0cc262fe4e..ebe594ae24 100644 --- a/harbour/contrib/hbodbc/tests/testodbc.prg +++ b/harbour/contrib/hbodbc/tests/testodbc.prg @@ -18,9 +18,7 @@ PROCEDURE Main() LOCAL nRows := 0 LOCAL cCode, cFunc, cState, cComm - LOCAL cDir := hb_DirBase() - - cConstrin := "DBQ=" + hb_FNameMerge( cDir, "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" + cConstrin := "DBQ=" + hb_FNameMerge( hb_DirBase(), "test.mdb" ) + ";Driver={Microsoft Access Driver (*.mdb)}" ? padc( "*** ODBC ACCESS TEST ***", 80 ) ? diff --git a/harbour/contrib/hbodbc/todbc.prg b/harbour/contrib/hbodbc/todbc.prg index c671c7ae88..1d810c7e8a 100644 --- a/harbour/contrib/hbodbc/todbc.prg +++ b/harbour/contrib/hbodbc/todbc.prg @@ -730,7 +730,7 @@ METHOD LoadData( nPos ) CLASS TODBC CASE SQL_TIMESTAMP CASE SQL_DATE - uData := SToD( SubStr( uData, 1, 4 ) + SubStr( uData, 6, 2 ) + SubStr( uData, 9, 2 ) ) + uData := hb_SToD( SubStr( uData, 1, 4 ) + SubStr( uData, 6, 2 ) + SubStr( uData, 9, 2 ) ) EXIT CASE SQL_BIT @@ -750,7 +750,7 @@ METHOD LoadData( nPos ) CLASS TODBC uData := StrTran( uData, ",", "." ) uData := Round( Val( uData ), ::Fields[ i ]:DataSize ) ENDIF - uData := SetNumLen( uData, ::Fields[ i ]:DataSize, ::Fields[ i ]:DataDecs ) + uData := SQLNumSetLen( uData, ::Fields[ i ]:DataSize, ::Fields[ i ]:DataDecs ) EXIT ENDSWITCH diff --git a/harbour/contrib/hbole/olecore.c b/harbour/contrib/hbole/olecore.c index 4e16f32a1a..6bda1c66f2 100644 --- a/harbour/contrib/hbole/olecore.c +++ b/harbour/contrib/hbole/olecore.c @@ -268,7 +268,7 @@ static void hb_oleVariantToItem( PHB_ITEM pItem, VARIANT* pVariant ) hb_itemPutNInt( pItem, ( HB_LONG ) pVariant->n1.n2.n3.ulVal ); break; - case VT_UI8: + case VT_UI8: /* TODO: sign is lost. Convertion to double will lose significant digits. */ hb_itemPutNInt( pItem, ( HB_LONG ) pVariant->n1.n2.n3.ullVal ); break; @@ -443,7 +443,7 @@ HB_FUNC( OLEGETACTIVEOBJECT ) /* ( cOleName | cCLSID [, cIID ] ) */ } -HB_FUNC( OLERELEASE ) +HB_FUNC( OLERELEASE ) { IDispatch * pDisp = ( IDispatch* ) hb_parptr( 1 ); @@ -462,89 +462,27 @@ HB_FUNC( OLEERRORTEXT ) { switch( s_lOleError ) { - case S_OK: - hb_retc( "" ); - break; - - case CO_E_CLASSSTRING: - hb_retc( "CO_E_CLASSSTRING" ); - break; - - case OLE_E_WRONGCOMPOBJ: - hb_retc( "OLE_E_WRONGCOMPOBJ" ); - break; - - case REGDB_E_CLASSNOTREG: - hb_retc( "REGDB_E_CLASSNOTREG" ); - break; - - case REGDB_E_WRITEREGDB: - hb_retc( "REGDB_E_WRITEREGDB" ); - break; - - case E_OUTOFMEMORY: - hb_retc( "E_OUTOFMEMORY" ); - break; - - case E_INVALIDARG: - hb_retc( "E_INVALIDARG" ); - break; - - case E_UNEXPECTED: - hb_retc( "E_UNEXPECTED" ); - break; - - case DISP_E_UNKNOWNNAME: - hb_retc( "DISP_E_UNKNOWNNAME" ); - break; - - case DISP_E_UNKNOWNLCID: - hb_retc( "DISP_E_UNKNOWNLCID" ); - break; - - case DISP_E_BADPARAMCOUNT: - hb_retc( "DISP_E_BADPARAMCOUNT" ); - break; - - case DISP_E_BADVARTYPE: - hb_retc( "DISP_E_BADVARTYPE" ); - break; - - case DISP_E_EXCEPTION: - hb_retc( "DISP_E_EXCEPTION" ); - break; - - case DISP_E_MEMBERNOTFOUND: - hb_retc( "DISP_E_MEMBERNOTFOUND" ); - break; - - case DISP_E_NONAMEDARGS: - hb_retc( "DISP_E_NONAMEDARGS" ); - break; - - case DISP_E_OVERFLOW: - hb_retc( "DISP_E_OVERFLOW" ); - break; - - case DISP_E_PARAMNOTFOUND: - hb_retc( "DISP_E_PARAMNOTFOUND" ); - break; - - case DISP_E_TYPEMISMATCH: - hb_retc( "DISP_E_TYPEMISMATCH" ); - break; - - case DISP_E_UNKNOWNINTERFACE: - hb_retc( "DISP_E_UNKNOWNINTERFACE" ); - break; - - case DISP_E_PARAMNOTOPTIONAL: - hb_retc( "DISP_E_PARAMNOTOPTIONAL" ); - break; - - default: - hb_retc( "Unknown OLE error" ); - break; + case S_OK: hb_retc_null(); break; + case CO_E_CLASSSTRING: hb_retc( "CO_E_CLASSSTRING" ); break; + case OLE_E_WRONGCOMPOBJ: hb_retc( "OLE_E_WRONGCOMPOBJ" ); break; + case REGDB_E_CLASSNOTREG: hb_retc( "REGDB_E_CLASSNOTREG" ); break; + case REGDB_E_WRITEREGDB: hb_retc( "REGDB_E_WRITEREGDB" ); break; + case E_OUTOFMEMORY: hb_retc( "E_OUTOFMEMORY" ); break; + case E_INVALIDARG: hb_retc( "E_INVALIDARG" ); break; + case E_UNEXPECTED: hb_retc( "E_UNEXPECTED" ); break; + case DISP_E_UNKNOWNNAME: hb_retc( "DISP_E_UNKNOWNNAME" ); break; + case DISP_E_UNKNOWNLCID: hb_retc( "DISP_E_UNKNOWNLCID" ); break; + case DISP_E_BADPARAMCOUNT: hb_retc( "DISP_E_BADPARAMCOUNT" ); break; + case DISP_E_BADVARTYPE: hb_retc( "DISP_E_BADVARTYPE" ); break; + case DISP_E_EXCEPTION: hb_retc( "DISP_E_EXCEPTION" ); break; + case DISP_E_MEMBERNOTFOUND: hb_retc( "DISP_E_MEMBERNOTFOUND" ); break; + case DISP_E_NONAMEDARGS: hb_retc( "DISP_E_NONAMEDARGS" ); break; + case DISP_E_OVERFLOW: hb_retc( "DISP_E_OVERFLOW" ); break; + case DISP_E_PARAMNOTFOUND: hb_retc( "DISP_E_PARAMNOTFOUND" ); break; + case DISP_E_TYPEMISMATCH: hb_retc( "DISP_E_TYPEMISMATCH" ); break; + case DISP_E_UNKNOWNINTERFACE: hb_retc( "DISP_E_UNKNOWNINTERFACE" ); break; + case DISP_E_PARAMNOTOPTIONAL: hb_retc( "DISP_E_PARAMNOTOPTIONAL" ); break; + default: hb_retc( "Unknown OLE error" ); break; } } @@ -587,7 +525,7 @@ HB_FUNC( HB_OLEAUTO___ONERROR ) if( szMethod[ 0 ] == '_' && hb_pcount() > 0 ) { pMemberArray = &szMethodWide[ 1 ]; - s_lOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, &IID_NULL, &pMemberArray, + s_lOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, &IID_NULL, &pMemberArray, 1, LOCALE_USER_DEFAULT, &dispid ); if ( s_lOleError == S_OK ) @@ -599,9 +537,9 @@ HB_FUNC( HB_OLEAUTO___ONERROR ) dispparam.rgdispidNamedArgs = &lPropPut; dispparam.cNamedArgs = 1; - s_lOleError = pDisp->lpVtbl->Invoke( pDisp, dispid, &IID_NULL, + s_lOleError = pDisp->lpVtbl->Invoke( pDisp, dispid, &IID_NULL, LOCALE_USER_DEFAULT, - DISPATCH_PROPERTYPUT, &dispparam, + DISPATCH_PROPERTYPUT, &dispparam, NULL, &excep, &uiArgErr ); FreeParams( &dispparam ); @@ -615,7 +553,7 @@ HB_FUNC( HB_OLEAUTO___ONERROR ) /* Try property get and invoke */ pMemberArray = szMethodWide; - s_lOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, &IID_NULL, &pMemberArray, + s_lOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, &IID_NULL, &pMemberArray, 1, LOCALE_USER_DEFAULT, &dispid ); hb_xfree( szMethodWide ); diff --git a/harbour/contrib/hbole/tests/hbole.hbp b/harbour/contrib/hbole/tests/hbole.hbp index c25550dbc7..1364855a3e 100644 --- a/harbour/contrib/hbole/tests/hbole.hbp +++ b/harbour/contrib/hbole/tests/hbole.hbp @@ -2,4 +2,4 @@ # $Id$ # -{win}libs=hbole ole32 oleaut32 +{win}libs=hbole diff --git a/harbour/contrib/hbole/tests/sample.odt b/harbour/contrib/hbole/tests/sample.odt index cb66c15059ac39f2e7c664e2a34c9cbd41f5ef78..bd010e7a166d7071bbee32c9e3b0661d21eb1a4a 100644 GIT binary patch literal 14317 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 delta 6799 zcmaKR1yEc|)Ao`CcXtm2cXti$zCf_W7Iz7-1a|_9yL+(U5FCOAhrj~Cg1ZO(llQ*& zzqh`x{(nx@IZsc|R894q>8E@8$f;ZmLtW|RD?GrTRvxCwpMat8>dzNS1xE!n=0QXI zqeS}s{6`7Z`j0YUpX={IJbwXwIKKaCsG#+5IR6*#{ue`^-~|5~Dg1&AqW8mTh65{L zr>6G2+i>4fIwG_Y*Ib(F6UUUw>AsMvo%5lou*#^(#Nw~1OSvZHWN+Kd_LKJZEb-ix z$^#Gj$tc^tWHQ95T^0#t&1C0RBE)#i++MGqtF5_YMJ-i>ECwJ*dFdmQ?K&x(VMfb& zT(H!rK6al9i^8C?y=|2%gq~D)S@x@#o+YOzEy9dw%V?9mLwF*&XSmXKANPCb)NC6~ z3_4*Jo<=3LIra0U2o9aeE0#AYCpvWmMo$!oN_H1SoAoSmKL_OZ;N#fX+3Rka;AaR@ z34z|)Qk=MBbld_YvMoJUV~P1!g7(d?4M1)sh|OX8uC*0bjYL%ukhy|VUU!8{QwQ(U z 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 diff --git a/harbour/contrib/hbole/tests/testole.prg b/harbour/contrib/hbole/tests/testole.prg index a7927b1dd7..b101ba52d5 100644 --- a/harbour/contrib/hbole/tests/testole.prg +++ b/harbour/contrib/hbole/tests/testole.prg @@ -24,7 +24,7 @@ PROCEDURE Main() @ 6, 25 TO 19, 55 DOUBLE @ 8, 28 SAY "Test Harbour OLE with..." - While .t. + DO WHILE .T. @ 10, 32 PROMPT "MS Excel" @ 11, 32 PROMPT "MS Word" @ 12, 32 PROMPT "MS Outlook (1)" @@ -55,7 +55,7 @@ PROCEDURE Main() ELSEIF nOption == 8 EXIT ENDIF - End + ENDDO SetColor("W/N") CLS @@ -69,40 +69,29 @@ STATIC PROCEDURE Exm_CDO() LOCAL oCDOMsg LOCAL oCDOConf - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oCDOMsg := CreateObject( "CDO.Message" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} + IF ( oCDOMsg := CreateObject( "CDO.Message" ) ) != NIL .AND. ; + ( oCDOConf := CreateObject( "CDO.Configuration" ) ) != NIL - oCDOConf := CreateObject( "CDO.Configuration" ) + oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") := 2 // ; cdoSendUsingPort + oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") := "localhost" + oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") := 25 + oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") := 120 + oCDOConf:Fields:Update() - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") := 2 // ; cdoSendUsingPort - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") := "localhost" - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") := 25 - oCDOConf:Fields("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") := 120 - oCDOConf:Fields:Update() + oCDOMsg:Configuration := oCDOConf + oCDOMsg:BodyPart:Charset := "iso-8859-2" // "iso-8859-1" "utf-8" + oCDOMsg:To := "test@localhost" + oCDOMsg:From := "sender@localhost" + oCDOMsg:Subject := "Test message" + oCDOMsg:TextBody := "Test message body" - oCDOMsg:Configuration := oCDOConf - oCDOMsg:BodyPart:Charset := "iso-8859-2" // "iso-8859-1" "utf-8" - oCDOMsg:To := "test@localhost" - oCDOMsg:From := "sender@localhost" - oCDOMsg:Subject := "Test message" - oCDOMsg:TextBody := "Test message body" + oCDOMsg:Send() + ELSE + Alert( "Error: CDO subsystem not available. [" + OLEErrorText()+ "]" ) + ENDIF - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oCDOMsg:Send() - RECOVER - Alert( "Error: CDO send error. [" + Ole2TxtError()+ "]" ) - END SEQUENCE - - oCDOConf := NIL - - END SEQUENCE - - oCDOMsg := NIL - - RECOVER - Alert( "Error: CDO subsystem not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + oCDOConf := NIL + oCDOMsg := NIL RETURN @@ -110,15 +99,12 @@ STATIC PROCEDURE Exm_IExplorer() LOCAL oIE - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oIE := CreateObject( "InternetExplorer.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oIE:Visible := .T. - oIE:Navigate( "http://www.harbour-project.org" ) - END SEQUENCE - RECOVER - Alert( "Error: IExplorer not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + IF ( oIE := CreateObject( "InternetExplorer.Application" ) ) != NIL + oIE:Visible := .T. + oIE:Navigate( "http://www.harbour-project.org" ) + ELSE + Alert( "Error: IExplorer not available. [" + OLEErrorText()+ "]" ) + ENDIF RETURN @@ -129,70 +115,66 @@ STATIC PROCEDURE Exm_MSExcel() LOCAL oWorkSheet LOCAL oAS - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oExcel := CreateObject( "Excel.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} + IF ( oExcel := CreateObject( "Excel.Application" ) ) != NIL - oWorkBook := oExcel:WorkBooks:Add() + oWorkBook := oExcel:WorkBooks:Add() - FOR EACH oWorkSheet IN oWorkBook:WorkSheets - ? oWorkSheet:Name - NEXT + FOR EACH oWorkSheet IN oWorkBook:WorkSheets + ? oWorkSheet:Name + NEXT - oAS := oExcel:ActiveSheet() + oAS := oExcel:ActiveSheet() - oAS:Cells:Font:Name := "Arial" - oAS:Cells:Font:Size := 12 + oAS:Cells:Font:Name := "Arial" + oAS:Cells:Font:Size := 12 - // Explicit use of DEFAULT method by means of #xtranslate above!!! - oAS:Cells( 3, 1 ) := "Explict DEFAULT Method Text:" + // Explicit use of DEFAULT method by means of #xtranslate above!!! + oAS:Cells( 3, 1 ) := "Explict DEFAULT Method Text:" - // Array notation seem to have REVERSED indexs for the Cells Collections!!! - // Implicitly using DEFAULT Method - oAS:Cells[ 2, 3 ] := "Implicit DEFAULT Method using *reversed* array index notation" + // Array notation seem to have REVERSED indexs for the Cells Collections!!! + // Implicitly using DEFAULT Method + oAS:Cells[ 2, 3 ] := "Implicit DEFAULT Method using *reversed* array index notation" - // Operator overloading will attempt explict resolutin using :OleValue - oAS:Cells[ 2, 3 ] += "!" + // Operator overloading will attempt explict resolutin using :OleValue + oAS:Cells[ 2, 3 ] += "!" - oAS:Cells( 4, 1 ):Value := "Numeric:" - oAS:Cells( 4, 2 ):NumberFormat := "#.##0,00" + oAS:Cells( 4, 1 ):Value := "Numeric:" + oAS:Cells( 4, 2 ):NumberFormat := "#.##0,00" - oAS:Cells[ 2, 4 ] := 1234.50 - oAS:Cells[ 2, 4 ] *= 4 - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells[ 2, 4 ] /= 2 - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value + oAS:Cells[ 2, 4 ] := 1234.50 + oAS:Cells[ 2, 4 ] *= 4 + ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value + oAS:Cells[ 2, 4 ] /= 2 + ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells[ 2, 4 ]++ - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells[ 2, 4 ]-- - ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value + oAS:Cells[ 2, 4 ]++ + ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value + oAS:Cells[ 2, 4 ]-- + ? oAS:Cells[ 2, 4 ], oAS:Cells[ 2, 4 ]:Value - oAS:Cells( 5, 1 ):Value := "Logical:" - oAS:Cells( 5, 2 ):Value := .T. - oAS:Cells( 6, 1 ):Value := "Date:" - oAS:Cells( 6, 2 ):Value := DATE() + oAS:Cells( 5, 1 ):Value := "Logical:" + oAS:Cells( 5, 2 ):Value := .T. + oAS:Cells( 6, 1 ):Value := "Date:" + oAS:Cells( 6, 2 ):Value := DATE() - oAS:Columns( 1 ):Font:Bold := .T. - oAS:Columns( 2 ):HorizontalAlignment := -4152 // xlRight + oAS:Columns( 1 ):Font:Bold := .T. + oAS:Columns( 2 ):HorizontalAlignment := -4152 // xlRight - oAS:Columns( 1 ):AutoFit() - oAS:Columns( 2 ):AutoFit() + oAS:Columns( 1 ):AutoFit() + oAS:Columns( 2 ):AutoFit() - oAS:Cells( 1, 1 ):Value := "OLE from Harbour" - oAS:Cells( 1, 1 ):Font:Size := 16 - oAS:Range( "A1:B1" ):HorizontalAlignment := 7 + oAS:Cells( 1, 1 ):Value := "OLE from Harbour" + oAS:Cells( 1, 1 ):Font:Size := 16 + oAS:Range( "A1:B1" ):HorizontalAlignment := 7 - oAS:Cells( 1, 1 ):Select() + oAS:Cells( 1, 1 ):Select() - oExcel:Visible := .T. + oExcel:Visible := .T. - oExcel:Quit() - - END SEQUENCE - RECOVER - Alert( "Error: MS Excel not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + oExcel:Quit() + ELSE + Alert( "Error: MS Excel not available. [" + OLEErrorText()+ "]" ) + ENDIF RETURN @@ -201,26 +183,22 @@ STATIC PROCEDURE Exm_MSWord() LOCAL oWord LOCAL oText - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oWord := CreateObject( "Word.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} + IF ( oWord := CreateObject( "Word.Application" ) ) != NIL - oWord:Documents:Add() + oWord:Documents:Add() - oText := oWord:Selection() + oText := oWord:Selection() - oText:Text := "OLE from Harbour" + hb_OSNewLine() - oText:Font:Name := "Arial" - oText:Font:Size := 48 - oText:Font:Bold := .T. + oText:Text := "OLE from Harbour" + hb_OSNewLine() + oText:Font:Name := "Arial" + oText:Font:Size := 48 + oText:Font:Bold := .T. - oWord:Visible := .T. - oWord:WindowState := 1 // ; Maximize - - END SEQUENCE - RECOVER - Alert( "Error: MS Word not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + oWord:Visible := .T. + oWord:WindowState := 1 // ; Maximize + ELSE + Alert( "Error: MS Word not available. [" + OLEErrorText()+ "]" ) + ENDIF RETURN @@ -229,16 +207,13 @@ STATIC PROCEDURE Exm_MSOutlook() LOCAL oOL LOCAL oList - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oOL := CreateObject( "Outlook.Application" ) - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} - oList := oOL:CreateItem( 7 ) // ; olDistributionListItem - oList:DLName := "Distribution List" - oList:Display( .F. ) - END SEQUENCE - RECOVER - Alert( "Error: MS Outlook not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + IF ( oOL := CreateObject( "Outlook.Application" ) ) != NIL + oList := oOL:CreateItem( 7 ) // ; olDistributionListItem + oList:DLName := "Distribution List" + oList:Display( .F. ) + ELSE + Alert( "Error: MS Outlook not available. [" + OLEErrorText()+ "]" ) + ENDIF RETURN @@ -249,9 +224,9 @@ STATIC PROCEDURE Exm_MSOutlook2() LOCAL oMail LOCAL i - oOL := TOleAuto():New( "Outlook.Application.9" ) + oOL := hb_OleAuto():New( "Outlook.Application.9" ) - IF Ole2TxtError() != "S_OK" + IF OLEErrorText() != "S_OK" Alert("Outlook is not available", "Error") ELSE oMail := oOL:CreateItem( 0 ) // olMailItem @@ -283,36 +258,36 @@ STATIC PROCEDURE Exm_OpenOffice() LOCAL oOO_PropVal01 LOCAL oOO_Doc - LOCAL cDir + IF ( oOO_ServiceManager := CreateObject( "com.sun.star.ServiceManager" ) ) != NIL - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} + IF ( oOO_Desktop := oOO_ServiceManager:createInstance( "com.sun.star.frame.Desktop" ) ) != NIL + IF ( oOO_PropVal01 := oOO_ServiceManager:Bridge_GetStruct( "com.sun.star.beans.PropertyValue" ) ) != NIL + IF ( oOO_Doc := oOO_Desktop:loadComponentFromURL( OO_ConvertToURL( hb_FNameMerge( hb_dirBase(), "sample.odt" ) ), "_blank", 0, { oOO_PropVal01 } ) ) != NIL - oOO_ServiceManager := CreateObject( "com.sun.star.ServiceManager" ) + // ... - BEGIN SEQUENCE WITH {|oErr| Break( oErr )} + oOO_Doc:Close( .T. ) + oOO_Doc := NIL + ELSE + Alert( "Error: #3: " + OO_ConvertToURL( hb_FNameMerge( hb_dirBase(), "sample.odt" ) ) ) + ENDIF - hb_FNameSplit( hb_ArgV( 0 ), @cDir ) - - oOO_Desktop := oOO_ServiceManager:createInstance( "com.sun.star.frame.Desktop" ) - oOO_PropVal01 := oOO_ServiceManager:Bridge_GetStruct( "com.sun.star.beans.PropertyValue" ) - oOO_Doc := oOO_Desktop:loadComponentFromURL( OO_ConvertToURL( hb_FNameMerge( cDir, "sample.odt" ) ), "_blank", 0, { oOO_PropVal01 } ) - - // ... - - oOO_Doc:Close( .T. ) - oOO_Doc := NIL + oOO_PropVal01 := NIL + ELSE + Alert( "Error: #2" ) + ENDIF oOO_Desktop:Terminate() oOO_Desktop := NIL - oOO_PropVal01 := NIL - - END SEQUENCE + ELSE + Alert( "Error: #1" ) + ENDIF oOO_ServiceManager := NIL - RECOVER - Alert( "Error: OpenOffice not available. [" + Ole2TxtError()+ "]" ) - END SEQUENCE + ELSE + Alert( "Error: OpenOffice not available. [" + OLEErrorText()+ "]" ) + ENDIF RETURN diff --git a/harbour/contrib/hbqt/hbqt_qabstractitemview.cpp b/harbour/contrib/hbqt/hbqt_qabstractitemview.cpp index fc8d7a5c4d..59b7fe2a82 100644 --- a/harbour/contrib/hbqt/hbqt_qabstractitemview.cpp +++ b/harbour/contrib/hbqt/hbqt_qabstractitemview.cpp @@ -57,7 +57,7 @@ #if QT_VERSION >= 0x040500 -#include +#include /*----------------------------------------------------------------------*/ /* diff --git a/harbour/contrib/hbwin/tests/hbwin.hbp b/harbour/contrib/hbwin/tests/hbwin.hbp index 212f8315e5..646434df24 100644 --- a/harbour/contrib/hbwin/tests/hbwin.hbp +++ b/harbour/contrib/hbwin/tests/hbwin.hbp @@ -2,4 +2,4 @@ # $Id$ # -{win}libs=hbwin ole32 oleaut32 shell32 winspool +{win}libs=hbwin diff --git a/harbour/utils/hbmk2/examples/winapi.hbp b/harbour/utils/hbmk2/examples/winapi.hbp deleted file mode 100644 index a912c3d966..0000000000 --- a/harbour/utils/hbmk2/examples/winapi.hbp +++ /dev/null @@ -1,9 +0,0 @@ -# -# $Id$ -# - -# Used by Harbour core -{win}libs=kernel32 user32 wsock32 advapi32 gdi32 -# Others -{win}libs=winspool comctl32 comdlg32 shell32 ole32 oleaut32 uuid odbc32 mpr winmm mapi32 -{win&!bcc}libs=odbccp32 diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index a306a8ddcc..87108e2bd1 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -221,6 +221,8 @@ FUNCTION Main( ... ) LOCAL s_aLIBSYS LOCAL s_aLIBPATH LOCAL s_aLIBDYNHAS + LOCAL s_aLIBSYSCORE := {} + LOCAL s_aLIBSYSMISC := {} LOCAL s_aOPTPRG LOCAL s_aOPTC LOCAL s_aOPTL @@ -510,6 +512,8 @@ FUNCTION Main( ... ) cDynLibExt := ".dll" cBinExt := ".exe" cOptPrefix := "-/" + s_aLIBSYSCORE := { "user32", "gdi32", "advapi32", "ws2_32" } + s_aLIBSYSMISC := { "winspool", "comctl32", "comdlg32", "shell32", "ole32", "oleaut32", "uuid", "mpr", "winmm", "mapi32" } OTHERWISE OutErr( "hbmk: Error: Architecture value unknown: " + t_cARCH + hb_osNewLine() ) PauseForKey() @@ -1353,9 +1357,10 @@ FUNCTION Main( ... ) ENDIF IF ! s_lSHARED IF t_cCOMP == "mingwce" - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl", "uuid", "ole32" } ) + s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl" } ) + s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "uuid", "ole32" } ) ELSE - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "winspool", "gdi32", "comctl32", "comdlg32", "ole32", "oleaut32", "uuid", "ws2_32" } ) + s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, s_aLIBSYSCORE, s_aLIBSYSMISC } ) ENDIF ENDIF s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; @@ -1502,7 +1507,7 @@ FUNCTION Main( ... ) IF s_lMAP AAdd( s_aOPTL, "OP MAP" ) ENDIF - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "kernel32", "user32", "ws2_32" } ) + s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, { "kernel32" }, s_aLIBSYSCORE, s_aLIBSYSMISC } ) s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; "harbour-" + cDL_Version_Alter ),; "hbmainstd",; @@ -1682,7 +1687,7 @@ FUNCTION Main( ... ) IF s_lSHARED AAdd( s_aOPTL, "/libpath:{DB}" ) ENDIF - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "user32", "ws2_32", "advapi32", "gdi32" } ) + s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, s_aLIBSYSCORE, s_aLIBSYSMISC } ) DO CASE CASE t_cCOMP $ "msvc|icc" s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; @@ -1766,7 +1771,7 @@ FUNCTION Main( ... ) IF s_lDEBUG AAdd( s_aOPTL, "/debug" ) ENDIF - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "kernel32", "user32", "ws2_32", "advapi32", "gdi32" } ) + s_aLIBSYS := ArrayAJoin( { s_aLIBSYS, { "kernel32" }, s_aLIBSYSCORE, s_aLIBSYSMISC } ) s_aLIBSHARED := { iif( s_lMT, "harbourmt-" + cDL_Version_Alter,; "harbour-" + cDL_Version_Alter ),; "hbmainstd",; @@ -1783,7 +1788,8 @@ FUNCTION Main( ... ) CASE t_cARCH == "win" .AND. t_cCOMP == "poccce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ CASE t_cARCH == "linux" .AND. t_cCOMP == "mingwce" /* NOTE: Cross-platform: wince/ARM on win/x86 */ IF ! s_lSHARED - s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl", "uuid", "ole32" } ) + s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "wininet", "ws2", "commdlg", "commctrl" } ) + s_aLIBSYS := ArrayJoin( s_aLIBSYS, { "uuid", "ole32" } ) ENDIF ENDCASE