FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin for Harbour/xHarbour Bug in IsOem()/IsAnsi() function
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Bug in IsOem()/IsAnsi() function
Posted: Tue Feb 28, 2006 04:33 PM
The following sample shows .T. and .F. instead of .F. and .T. (CHR( 128 ) is the Euro symbol and is an ANSI code):

#include "Fivewin.ch"


FUNCTION MAIN()

    ? ISOEM( CHR( 128 ) )
    ? ISANSI( CHR( 128 ) )

    RETURN NIL


EMG
Posts: 44158
Joined: Thu Oct 06, 2005 05:47 PM
Bug in IsOem()/IsAnsi() function
Posted: Wed Mar 01, 2006 07:45 AM
Enrico,

In source\winapi\oemansi.c please implement these changes:
CLIPPER ISANSI( PARAMS )         // cString    --> lAnsi
{
   LPBYTE pString = ( LPBYTE ) _parc( 1 );
   WORD  w = 0, wLen = _parclen( 1 );
   BOOL  bAnsi = FALSE;

   while( w < wLen && ! bAnsi )
   {
      bAnsi = ( pString[ w ] >= 224 && pString[ w ] <= 255 ) || pString[ w ] == 128;
      w++;
   }

   _retl( bAnsi );
}

//----------------------------------------------------------------------------//

CLIPPER ISOEM( PARAMS )         // cString    --> lOem
{
   LPBYTE pString = ( LPBYTE ) _parc( 1 );
   WORD  w = 0, wLen = _parclen( 1 );
   BOOL  bOem = FALSE;

   while( w < wLen && ! bOem )
   {
      bOem = pString[ w ] > 128 && pString[ w ] <= 168;
      w++;
   }

   _retl( bOem );
}
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 9020
Joined: Thu Oct 06, 2005 08:17 PM
Bug in IsOem()/IsAnsi() function
Posted: Wed Mar 01, 2006 08:24 AM

Thank you.

EMG

Continue the discussion