From 520c8ea3f90d6c5f1fbc377029e9ea71cbebabbd Mon Sep 17 00:00:00 2001 From: Viktor Szakats Date: Thu, 27 Sep 2012 23:22:07 +0000 Subject: [PATCH] 2012-09-28 01:20 UTC+0200 Viktor Szakats (harbour syenar.net) + contrib/hbnf/hbmk.hbm + added .hbm for to make it easy to build embedded test code protected by FT_TEST macro (note most/some test code will fail in -w3 mode) * contrib/hbnf/nwuid.prg * contrib/hbnf/tempfile.prg * minor in comment * contrib/hbnf/pchr.prg * use string literals instead of Chr() call * minor formatting * contrib/hbnf/dispmsg.prg ! fixed test code to compile in -w3 mode ! fixed key handling for unicode (including one regression from recent days) * formatted // comments * contrib/hbnf/aredit.prg * use Asc() instead of using hardwired char codes * contrib/hbnf/clrsel.prg ! fixed test code to compile in -w3 mode ! replaced Chr() calls for CP437 chars to unicode strings * formatted // comments * contrib/hbnf/woy.prg * use Tone() instead of Chr( 7 ) * utils/hbmk2/hbmk2.prg + hbshell_gtInteractive() to set hb_SetTermCP() ! for pure unicode mode, set HB_GTI_BOXCP to UTF8EX (note this will cause problems with current default box drawing chars used in RTL) --- harbour/ChangeLog | 37 +++++++++ harbour/contrib/hbnf/aredit.prg | 34 ++++---- harbour/contrib/hbnf/clrsel.prg | 125 +++++++++++++++--------------- harbour/contrib/hbnf/dispmsg.prg | 17 ++-- harbour/contrib/hbnf/hbmk.hbm | 9 +++ harbour/contrib/hbnf/nwuid.prg | 2 +- harbour/contrib/hbnf/pchr.prg | 8 +- harbour/contrib/hbnf/tempfile.prg | 2 +- harbour/contrib/hbnf/woy.prg | 2 +- harbour/utils/hbmk2/hbmk2.prg | 3 + 10 files changed, 143 insertions(+), 96 deletions(-) create mode 100644 harbour/contrib/hbnf/hbmk.hbm diff --git a/harbour/ChangeLog b/harbour/ChangeLog index 6efeffdc12..0ff3c9756f 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -16,6 +16,43 @@ The license applies to all entries newer than 2009-04-28. */ +2012-09-28 01:20 UTC+0200 Viktor Szakats (harbour syenar.net) + + contrib/hbnf/hbmk.hbm + + added .hbm for to make it easy to build embedded test + code protected by FT_TEST macro + (note most/some test code will fail in -w3 mode) + + * contrib/hbnf/nwuid.prg + * contrib/hbnf/tempfile.prg + * minor in comment + + * contrib/hbnf/pchr.prg + * use string literals instead of Chr() call + * minor formatting + + * contrib/hbnf/dispmsg.prg + ! fixed test code to compile in -w3 mode + ! fixed key handling for unicode (including one + regression from recent days) + * formatted // comments + + * contrib/hbnf/aredit.prg + * use Asc() instead of using hardwired char codes + + * contrib/hbnf/clrsel.prg + ! fixed test code to compile in -w3 mode + ! replaced Chr() calls for CP437 chars to unicode strings + * formatted // comments + + * contrib/hbnf/woy.prg + * use Tone() instead of Chr( 7 ) + + * utils/hbmk2/hbmk2.prg + + hbshell_gtInteractive() to set hb_SetTermCP() + ! for pure unicode mode, set HB_GTI_BOXCP to UTF8EX + (note this will cause problems with current default + box drawing chars used in RTL) + 2012-09-27 23:44 UTC+0200 Viktor Szakats (vszakats syenar.net) * utils/hbmk2/examples/plug_bis.hb % minor cleanup diff --git a/harbour/contrib/hbnf/aredit.prg b/harbour/contrib/hbnf/aredit.prg index 37a66c92fc..7b68595f48 100644 --- a/harbour/contrib/hbnf/aredit.prg +++ b/harbour/contrib/hbnf/aredit.prg @@ -54,21 +54,21 @@ PROCEDURE Main() -// Thanks to Jim Gale for helping me understand the basics + // Thanks to Jim Gale for helping me understand the basics LOCAL i, ar[ 3, 26 ], aBlocks[ 3 ], aHeadings[ 3 ], nElem := 1, bGetFunc, cRet -// set up 2 dimensional array ar[] + // set up 2 dimensional array ar[] FOR i := 1 TO 26 - ar[ 1, i ] := i // 1 -> 26 Numeric - ar[ 2, i ] := Chr( i + 64 ) // "A" -> "Z" Character - ar[ 3, i ] := Chr( 91 - i ) // "Z" -> "A" Character + ar[ 1, i ] := i // 1 -> 26 Numeric + ar[ 2, i ] := Chr( Asc( "A" ) + i - 1 ) // "A" -> "Z" Character + ar[ 3, i ] := Chr( Asc( "Z" ) - i + 1 ) // "Z" -> "A" Character NEXT i -// Set Up aHeadings[] for column headings + // Set Up aHeadings[] for column headings aHeadings := { "Numbers", "Letters", "Reverse" } -// Set Up Blocks Describing Individual Elements in Array ar[] + // Set Up Blocks Describing Individual Elements in Array ar[] aBlocks[ 1 ] := {|| Str( ar[ 1, nElem ], 2 ) } // to prevent default 10 spaces aBlocks[ 2 ] := {|| ar[ 2, nElem ] } aBlocks[ 3 ] := {|| ar[ 3, nElem ] } -// Set up TestGet() as bGetFunc + // Set up TestGet() as bGetFunc bGetFunc := {| b, ar, nDim, nElem | TestGet( b, ar, nDim, nElem ) } SET SCOREBOARD OFF @@ -120,13 +120,13 @@ FUNCTION TestGet( b, ar, nDim, nElem ) FUNCTION FT_ArEdit( nTop, nLeft, nBot, nRight, ; ar, nElem, aHeadings, aBlocks, bGetFunc ) -// ANYTYPE[] ar - Array to browse -// NUMERIC nElem - Element In Array -// CHARACTER[] aHeadings - Array of Headings for each column -// BLOCK[] aBlocks - Array containing code block for each column. -// CODE BLOCK bGetFunc - Code Block For Special Get Processing -// NOTE: When evaluated a code block is passed the array element to -// be edited + // ANYTYPE[] ar - Array to browse + // NUMERIC nElem - Element In Array + // CHARACTER[] aHeadings - Array of Headings for each column + // BLOCK[] aBlocks - Array containing code block for each column. + // CODE BLOCK bGetFunc - Code Block For Special Get Processing + // NOTE: When evaluated a code block is passed the array element to + // be edited LOCAL exit_requested, nKey, meth_no LOCAL cSaveWin, i, b, column @@ -160,7 +160,7 @@ FUNCTION FT_ArEdit( nTop, nLeft, nBot, nRight, ; b:gotopblock := {|| nElem := 1 } b:gobottomblock := {|| nElem := Len( ar[ 1 ] ) } -// skipblock originally coded by Robert DiFalco + // skipblock originally coded by Robert DiFalco b:SkipBlock := {| nSkip, nStart | nStart := nElem, ; nElem := Max( 1, Min( Len( ar[ 1 ] ), nElem + nSkip ) ), ; nElem - nStart } @@ -233,7 +233,7 @@ FUNCTION FT_ArEdit( nTop, nLeft, nBot, nRight, ; ENDDO RestScreen( nTop, nLeft, nBot, nRight, cSaveWin ) -// if no bGetFunc then ESC returns 0, otherwise return value of last element + // if no bGetFunc then ESC returns 0, otherwise return value of last element // TOFIX: ValType() never returns NIL RETURN iif( ValType( bGetFunc ) == NIL .AND. nKey == K_ESC, ; 0, ar[ b:colPos, nElem ] ) diff --git a/harbour/contrib/hbnf/clrsel.prg b/harbour/contrib/hbnf/clrsel.prg index a1d6124ca6..758d13deb7 100644 --- a/harbour/contrib/hbnf/clrsel.prg +++ b/harbour/contrib/hbnf/clrsel.prg @@ -98,11 +98,10 @@ PROCEDURE Main( cVidMode ) LOCAL nRowDos := Row() LOCAL nColDos := Col() - LOCAL lBlink := SetBlink( .F. ) // make sure it starts out .F. LOCAL aEnvDos := FT_SaveSets() LOCAL cScrDos := SaveScreen( 0, 0, MaxRow(), MaxCol() ) - LOCAL lColour := .F. - LOCAL aClrs := {} + LOCAL lColour + LOCAL aClrs DEFAULT cVidMode TO "" NoSnow( ( "NOSNOW" $ Upper( cVidMode ) ) ) @@ -116,26 +115,28 @@ PROCEDURE Main( cVidMode ) SET SCOREBOARD OFF SetCursor( SC_NONE ) - lBlink := SetBlink( .F. ) + SetBlink( .F. ) -//.... a typical application might have the following different settings -// normally these would be stored in a .dbf/.dbv + //.... a typical application might have the following different settings + // normally these would be stored in a .dbf/.dbv aClrs := { ; - { "Desktop", "N/BG", "D", hb_UTF8ToStr( "▒" ) }, ; - { "Title", "N/W", "T" }, ; - { "Top Menu", "N/BG,N/W,W+/BG,W+/N,GR+/N", "M" }, ; - { "Sub Menu", "W+/N*,GR+/N*,GR+/N*,W+/R,G+/R", "M" }, ; - { "Standard Gets", "W/B, W+/N,,, W/N", "G" }, ; - { "Nested Gets", "N/BG, W+/N,,, W/N", "G" }, ; - { "Help", "N/G, W+/N,,, W/N", "W" }, ; - { "Error Messages", "W+/R*,N/GR*,,,N/R*", "W" }, ; - { "Database Query", "N/BG, N/GR*,,,N+/BG", "B" }, ; - { "Pick List", "N/GR*,W+/B,,, BG/GR*", "A" } ; + { "Desktop", "N/BG", "D", hb_UTF8ToStr( "▒" ) }, ; + { "Title", "N/W", "T" }, ; + { "Top Menu", "N/BG,N/W,W+/BG,W+/N,GR+/N", "M" }, ; + { "Sub Menu", "W+/N*,GR+/N*,GR+/N*,W+/R,G+/R", "M" }, ; + { "Standard Gets", "W/B, W+/N,,, W/N", "G" }, ; + { "Nested Gets", "N/BG, W+/N,,, W/N", "G" }, ; + { "Help", "N/G, W+/N,,, W/N", "W" }, ; + { "Error Messages", "W+/R*,N/GR*,,,N/R*", "W" }, ; + { "Database Query", "N/BG, N/GR*,,,N+/BG", "B" }, ; + { "Pick List", "N/GR*,W+/B,,, BG/GR*", "A" } ; } aClrs := FT_ClrSel( aClrs, lColour ) -//.... restore the DOS environment + HB_SYMBOL_UNUSED( aClrs ) + + //.... restore the DOS environment FT_RestSets( aEnvDos ) RestScreen( 0, 0, MaxRow(), MaxCol(), cScrDos ) SetPos( nRowDos, nColDos ) @@ -149,8 +150,8 @@ PROCEDURE Main( cVidMode ) FUNCTION FT_ClrSel( aClrs, lColour, cChr ) -// Colour selection routine -// Return -> the same array that was passed but with modified colours + // Colour selection routine + // Return -> the same array that was passed but with modified colours LOCAL aClrOld := AClone( aClrs ) LOCAL aOptions @@ -167,40 +168,40 @@ FUNCTION FT_ClrSel( aClrs, lColour, cChr ) LOCAL cScrSav := SaveScreen( 0, 0, MaxRow(), MaxCol() ) DEFAULT lColour TO IsColor() - DEFAULT cChr TO Chr( 254 ) + Chr( 254 ) + DEFAULT cChr TO hb_UTF8ToStr( "■■" ) cChr := PadR( cChr, 2 ) SetCursor( SC_NONE ) SetColor( iif( lColour, "GR+/N,,N/N", "W+/N,,N/N" ) ) CLS -//.... initialize the colour palette + //.... initialize the colour palette aClrPal := _ftInitPal( iif( lColour, aClrTab, aClrBW ) ) -//.... paint the colours on the screen + //.... paint the colours on the screen _ftShowPal( aClrPal, cChr ) -//.... Determine length of longest name and make sure not greater than 20 + //.... Determine length of longest name and make sure not greater than 20 AEval( aClrs, {| aOpt | nLen := Max( nLen, Len( aOpt[ C_NAME ] ) ) } ) nLen := Min( Max( nLen, 1 ), 20 ) + 2 -//.... prepare an array for use with aChoice(); truncate names at 20 chrs. + //.... prepare an array for use with aChoice(); truncate names at 20 chrs. aPrompt := Array( Len( aClrs ) ) AEval( aClrs, ; {| aOpt, nE | aPrompt[ nE ] := " " + SubStr( aOpt[ C_NAME ], 1, nLen - 2 ) + " " }; ) -//.... determine co-ordinates for the achoice window + //.... determine co-ordinates for the achoice window nT := Max( Int( ( 18 - Len( aPrompt ) ) /2 ) - 1, 1 ) nB := Min( nT + Len( aPrompt ) + 1, 17 ) nL := Max( Int( ( 27 - nLen ) /2 ) - 2, 1 ) nR := Min( nL + nLen + 3, 26 ) -//.... set up the window for aChoice + //.... set up the window for aChoice SetColor( iif( lColour, "N/W,W+/R", "N/W,W+/N" ) ) ClearS( nT, nL, nB, nR ) -//.... prompt for colour setting and modify + //.... prompt for colour setting and modify DO WHILE nChoice != 0 Double( nT, nL + 1, nB, nR - 1 ) nChoice := AChoice( nt + 1, nL + 2, nB - 1, nR - 2, aPrompt, , , nChoice ) @@ -226,11 +227,11 @@ FUNCTION FT_ClrSel( aClrs, lColour, cChr ) //------------------------------------------------ -STATIC FUNCTION _ftHiLite( nRow, nCol, cStr, nLen ) - // Highlight the current selected aChoice element // Return -> NIL +STATIC FUNCTION _ftHiLite( nRow, nCol, cStr, nLen ) + LOCAL cClr := SetColor() LOCAL aClr := _ftChr2Arr( cClr ) @@ -242,11 +243,11 @@ STATIC FUNCTION _ftHiLite( nRow, nCol, cStr, nLen ) //------------------------------------------------ -STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) - // Colour selection for specific type of colour setting // Return -> aOpt with modified colour strings +STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) + LOCAL nB, nT, nL, nR LOCAL nX LOCAL aClrs := {} @@ -265,7 +266,7 @@ STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) DEFAULT lColour TO IsColor() -//.... display appropriate prompts based on type of colour setting + //.... display appropriate prompts based on type of colour setting nChoice := 1 DO CASE CASE aOpt[ C_TYPE ] == "D" @@ -346,7 +347,7 @@ STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) ENDDO -//.... restore the lower 1/2 of screen, and colour + //.... restore the lower 1/2 of screen, and colour RestScreen( 18, 00, MaxRow(), MaxCol(), cScrSav ) SetColor( cColour ) @@ -354,11 +355,11 @@ STATIC FUNCTION _ftColours( aOpt, aClrPal, lColour ) //------------------------------------------------ -STATIC FUNCTION _ftShowIt( aOpt ) - // Show an example of the colour setting // Return -> NIL +STATIC FUNCTION _ftShowIt( aOpt ) + LOCAL aClr := _ftChr2Arr( aOpt[ C_CLR ] ) IF !( aOpt[ C_TYPE ] == "M" ) // no borders in menu colour selection @@ -378,7 +379,7 @@ STATIC FUNCTION _ftShowIt( aOpt ) CASE aOpt[ C_TYPE ] == "M" // Menus SetColor( "W/N" ) - BkGrnd( 19, 41, 23, 66, Chr( 177 ) ) + BkGrnd( 19, 41, 23, 66, hb_UTF8ToStr( "▒" ) ) SetColor( aClr[ 1 ] ) Single( 19, 43, 22, 60 ) @ 18, 41 SAY " Report Inquiry Quit " @@ -457,12 +458,12 @@ STATIC FUNCTION _ftShowIt( aOpt ) //------------------------------------------------ -STATIC FUNCTION _ftClrSel( aClrPal, cClr, nElem, aOpt ) - // select the colour combination from aClrPal and place in cClr // cClr is the current colour being modified // Return -> selected colour combination +STATIC FUNCTION _ftClrSel( aClrPal, cClr, nElem, aOpt ) + LOCAL nR LOCAL nC := 1 LOCAL lFound := .F. @@ -478,7 +479,7 @@ STATIC FUNCTION _ftClrSel( aClrPal, cClr, nElem, aOpt ) SetColor( "W+/N" ) -//.... find the starting row and column for the current colour + //.... find the starting row and column for the current colour FOR nR := 1 TO nDim FOR nC := 1 TO nDim IF aClrPal[ nR, nC ] == AllTrim( cClr ) @@ -532,11 +533,11 @@ STATIC FUNCTION _ftClrSel( aClrPal, cClr, nElem, aOpt ) //------------------------------------------------ -STATIC FUNCTION _ftClrPut( cClrStr, nElem, cClr ) - // Place a colour setting in the colour string // Return -> modified colour string +STATIC FUNCTION _ftClrPut( cClrStr, nElem, cClr ) + LOCAL aClr := _ftChr2Arr( cClrStr ) aClr[ nElem ] := cClr @@ -545,23 +546,23 @@ STATIC FUNCTION _ftClrPut( cClrStr, nElem, cClr ) //------------------------------------------------ -STATIC FUNCTION _ftDeskChar( aOpt ) - // Select the character to be used for the desktop background // Return -> same array with new character - LOCAL aChar := { Chr( 32 ), Chr( 176 ), Chr( 177 ), Chr( 178 ) } +STATIC FUNCTION _ftDeskChar( aOpt ) + + LOCAL aChar := { " ", hb_UTF8ToStr( "░" ), hb_UTF8ToStr( "▒" ), hb_UTF8ToStr( "▓" ) } LOCAL cChar := aOpt[ C_CHAR ] LOCAL cClr := aOpt[ C_CLR ] LOCAL nElem := AScan( aChar, cChar ) LOCAL n, nKey - IF nElem == 0 // this allows another character to be selected + IF nElem == 0 // this allows another character to be selected AAdd( aChar, cChar ) // but there is the possibility that it will nElem := 5 // not be available if they ever select another - ENDIF // char and store it. It's up to you to put it in + ENDIF // char and store it. It's up to you to put it in -//.... draw the choices on the screen + //.... draw the choices on the screen SetColor( cClr ) FOR n := 1 TO Len( aChar ) @ n + 18, 29 SAY REPLICATE( aChar[ n ], 10 ) @@ -585,10 +586,10 @@ STATIC FUNCTION _ftDeskChar( aOpt ) //.... check key movement and modify co-ordinates DO CASE - CASE nKey == K_ESC ; aOpt[ C_CHAR ] := cChar ; EXIT - CASE nKey == K_ENTER ; EXIT - CASE nKey == K_UP ; --n - CASE nKey == K_DOWN ; ++n + CASE nKey == K_ESC ; aOpt[ C_CHAR ] := cChar ; EXIT + CASE nKey == K_ENTER ; EXIT + CASE nKey == K_UP ; --n + CASE nKey == K_DOWN ; ++n ENDCASE ENDDO @@ -600,11 +601,11 @@ STATIC FUNCTION _ftDeskChar( aOpt ) //------------------------------------------------ -STATIC FUNCTION _ftChr2Arr( cString, cDelim ) - // Convert a chr string to an array // Return -> array +STATIC FUNCTION _ftChr2Arr( cString, cDelim ) + LOCAL n, aArray := {} DEFAULT cDelim TO "," @@ -624,11 +625,11 @@ STATIC FUNCTION _ftChr2Arr( cString, cDelim ) //------------------------------------------------ -STATIC FUNCTION _ftArr2Chr( aArray, cDelim ) - // convert an array to a chr string // Return -> string +STATIC FUNCTION _ftArr2Chr( aArray, cDelim ) + LOCAL cString := "" DEFAULT aArray TO {} @@ -640,18 +641,18 @@ STATIC FUNCTION _ftArr2Chr( aArray, cDelim ) //------------------------------------------------ -STATIC FUNCTION _ftShowPal( aClrPal, cChr ) - // Paint the palette on the screen // Return -> NIL +STATIC FUNCTION _ftShowPal( aClrPal, cChr ) + LOCAL nF, nB LOCAL nTop := 0 LOCAL nLeft := 28 LOCAL nBottom := nTop + Len( aClrPal ) + 1 LOCAL nRight := nLeft + ( Len( aClrPal ) * 3 ) + 2 -//.... Buffer the screen output + //.... Buffer the screen output DispBegin() Single( nTop, nLeft, nBottom, nRight ) FOR nF := 1 TO Len( aClrPal ) @@ -666,12 +667,12 @@ STATIC FUNCTION _ftShowPal( aClrPal, cChr ) //------------------------------------------------ -STATIC FUNCTION _ftInitPal( aClrTab ) - // Initialise the colour palette based on the passed colour table aClrTab // Load the palette with colours // Return -> Colour pallette array +STATIC FUNCTION _ftInitPal( aClrTab ) + LOCAL nF, nB LOCAL nDim := Len( aClrTab ) LOCAL aClrPal := Array( nDim * 2, nDim * 2 ) @@ -688,11 +689,11 @@ STATIC FUNCTION _ftInitPal( aClrTab ) //------------------------------------------------ -STATIC FUNCTION _ftIdentArr( aArr1, aArr2 ) - // Compares the contents of 2 arrays // Return -> logical +STATIC FUNCTION _ftIdentArr( aArr1, aArr2 ) + LOCAL lIdentical := Len( aArr1 ) == Len( aArr2 ) LOCAL n := 1 diff --git a/harbour/contrib/hbnf/dispmsg.prg b/harbour/contrib/hbnf/dispmsg.prg index a1129d278d..6167c596d6 100644 --- a/harbour/contrib/hbnf/dispmsg.prg +++ b/harbour/contrib/hbnf/dispmsg.prg @@ -32,7 +32,7 @@ // beginning of demo program #ifdef FT_TEST -PROCEDURE Main( cCmdLine ) +PROCEDURE Main() LOCAL cDosScrn LOCAL nDosRow @@ -42,9 +42,9 @@ PROCEDURE Main( cCmdLine ) LOCAL nType // color variables - LOCAL cNormH, cNormN, cNormE - LOCAL cWindH, cWindN, cWindE - LOCAL cErrH, cErrN, cErrE + LOCAL cNormH, cNormN + LOCAL cWindH, cWindN + LOCAL cErrH, cErrN // main routine starts here SET SCOREBOARD OFF @@ -53,13 +53,10 @@ PROCEDURE Main( cCmdLine ) cNormH := iif( lColor, "W+/BG", "W+/N" ) cNormN := iif( lColor, "N/BG" , "W/N" ) - cNormE := iif( lColor, "N/W" , "N/W" ) cWindH := iif( lColor, "W+/B", "W+/N" ) cWindN := iif( lColor, "W/B" , "W/N" ) - cWindE := iif( lColor, "N/W" , "N/W" ) cErrH := iif( lColor, "W+/R", "W+/N" ) cErrN := iif( lColor, "W/R" , "W/N" ) - cErrE := iif( lColor, "N/W" , "N/W" ) cDosScrn := SaveScreen() nDosRow := Row() @@ -84,7 +81,7 @@ PROCEDURE Main( cCmdLine ) "Create Or Edit [B]ack Order", ; "Create Or Edit [Q]uote", ; "[Esc] To Exit" }, ; - { cWindN, , , , , cWindH } }, "BIOQ" + Chr( 27 ) ) + { cWindN, , , , , cWindH } }, "BIOQ" + Chr( K_ESC ) ) SetColor( "W/N" ) SetCursor( SC_NORMAL ) @@ -216,12 +213,12 @@ FUNCTION FT_DispMsg( aInfo, cKey, nBoxTop, nBoxLeft, cnBoxString, lShadow ) IF cKey != NIL IF Len( cKey ) == 1 nOption := FT_SInkey( 0 ) - IF Upper( hb_keyChar( nOption ) ) == cKey + IF Upper( Chr( nOption ) ) == cKey xRtnVal := .T. ENDIF ELSE nOption := 0 - DO WHILE At( Upper( hb_keyChar( nOption ) ), Upper( cKey ) ) == 0 + DO WHILE hb_BAt( Upper( Chr( nOption ) ), Upper( cKey ) ) == 0 nOption := FT_SInkey( 0 ) ENDDO xRtnVal := nOption diff --git a/harbour/contrib/hbnf/hbmk.hbm b/harbour/contrib/hbnf/hbmk.hbm new file mode 100644 index 0000000000..9ac760c101 --- /dev/null +++ b/harbour/contrib/hbnf/hbmk.hbm @@ -0,0 +1,9 @@ +# +# $Id$ +# + +hbnf.hbc + +-w3 -es2 + +-DFT_TEST diff --git a/harbour/contrib/hbnf/nwuid.prg b/harbour/contrib/hbnf/nwuid.prg index 0c679dc284..47d4e73c5a 100644 --- a/harbour/contrib/hbnf/nwuid.prg +++ b/harbour/contrib/hbnf/nwuid.prg @@ -19,7 +19,7 @@ * Minor edit to file header * * Rev 1.2 14 Jun 1991 04:31:30 GLENN - * Return value still needs to have nulls (chr(0)) removed. Put that back + * Return value still needs to have nulls (hb_bchar(0)) removed. Put that back * in. * * Rev 1.1 12 Jun 1991 02:25:22 GLENN diff --git a/harbour/contrib/hbnf/pchr.prg b/harbour/contrib/hbnf/pchr.prg index f1b9ed4e01..45e2b0de2b 100644 --- a/harbour/contrib/hbnf/pchr.prg +++ b/harbour/contrib/hbnf/pchr.prg @@ -42,18 +42,18 @@ FUNCTION FT_PCHR( c_nums ) DO WHILE ! ( c_part == "~" .OR. c_part == "" ) - IF SubStr( c_part, 1, 1 ) == Chr( 34 ) + IF SubStr( c_part, 1, 1 ) == '"' - c_st2 := At( Chr( 34 ), SubStr( c_part,2 ) ) + 1 + c_st2 := At( '"', SubStr( c_part,2 ) ) + 1 c_ret := c_ret + SubStr( c_part, 2, c_st2 - 2 ) ELSEIF SubStr( c_part, 1, 1 ) == "&" c_upper := Upper( c_part ) c_t1 := At( SubStr( c_upper, 2, 1 ), c_hex ) - 1 - IF c_t1 >- 1 + IF c_t1 > -1 c_t2 := At( SubStr( c_upper, 3, 1 ), c_hex ) - 1 - IF c_t2 >- 1 + IF c_t2 > -1 c_t1 := c_t1 * 16 + c_t2 ENDIF c_ret := c_ret + Chr( c_t1 ) diff --git a/harbour/contrib/hbnf/tempfile.prg b/harbour/contrib/hbnf/tempfile.prg index ea35a149d7..b3d0fcbc43 100644 --- a/harbour/contrib/hbnf/tempfile.prg +++ b/harbour/contrib/hbnf/tempfile.prg @@ -24,7 +24,7 @@ * Forest Belt proofread/edited/cleaned up doc * * Rev 1.4 17 Jul 1991 22:11:18 GLENN - * Stripped off chr(0)s in the return value (aRegs[DS]) + * Stripped off hb_bchar(0)s in the return value (aRegs[DS]) * * Rev 1.3 03 Jul 1991 01:08:08 GLENN * Changed one line in FT_TEST driver ( cHide == "Y" ) diff --git a/harbour/contrib/hbnf/woy.prg b/harbour/contrib/hbnf/woy.prg index 0f53a1921b..6ce45dc13b 100644 --- a/harbour/contrib/hbnf/woy.prg +++ b/harbour/contrib/hbnf/woy.prg @@ -56,7 +56,7 @@ PROCEDURE Main( cCent ) ENDIF IF Left( DToC( CToD( cDate ) ), 1 ) == " " - QQOut( Chr( 7 ) ) + Tone( 800, 1 ) @ 4, 24 SAY "INVALID DATE" Inkey( 2 ) LOOP diff --git a/harbour/utils/hbmk2/hbmk2.prg b/harbour/utils/hbmk2/hbmk2.prg index 313db685b5..672ac36d13 100644 --- a/harbour/utils/hbmk2/hbmk2.prg +++ b/harbour/utils/hbmk2/hbmk2.prg @@ -13180,6 +13180,8 @@ FUNCTION hbshell_ProgName() FUNCTION hbshell_gtInteractive() IF !( "GT" + hb_gtVersion( 0 ) == __hbshell_gtDefault() ) hb_gtSelect( hb_gtCreate( __hbshell_gtDefault() ) ) + hb_SetTermCP( hb_cdpTerm() ) + hb_gtInfo( HB_GTI_BOXCP, hb_cdpSelect() ) ENDIF RETURN NIL @@ -13623,6 +13625,7 @@ STATIC PROCEDURE SetUILang( cUILNG ) /* Setup input CP of the translation */ hb_cdpSelect( "UTF8EX" ) + hb_gtInfo( HB_GTI_BOXCP, hb_cdpSelect() ) /* Configure terminal and OS codepage */ hb_SetTermCP( hb_cdpTerm() )