REQUEST HB_CODEPAGE_xxx and show possible Codepage

REQUEST HB_CODEPAGE_xxx and show possible Codepage

Postby Jimmy » Tue Aug 15, 2023 9:33 am

hi,

to us a Codepage it must be REQUEST before

i have a Array of Codepage but if not REQUEST i want to "disable" it
but how find out which HB_CODEPAGE_xxx have been REQUEST :?:
greeting,
Jimmy
User avatar
Jimmy
 
Posts: 1584
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: REQUEST HB_CODEPAGE_xxx and show possible Codepage

Postby Jimmy » Tue Aug 15, 2023 11:24 am

hi,
as i say i want to "disable" all Codepage which are not REQUEST
Image

here is my FUNCTION ChangeCodePage()
possible Syntax
ChangeCodePage( cPathcFile, cAlias, oBrw )
ChangeCodePage( cPathcFile, , oBrw )
ChangeCodePage( , , ::oGrid )
ChangeCodePage()

later use (not need when pass cPathcFile.)
Code: Select all  Expand view
  USE (cDBF) EXCLUSIVE CODEPAGE SP_cWinCodepage()


---

Sample use CLASS TGrid() and DEFINE WINDOW but it include also CODE for XBROWSE and DEFINE DIALOG
it work which my TGrid() / WINDOW but how with XBROWSE / DIALOG :?:

Code: Select all  Expand view
MEMVAR BFcolor, BGcolor
MEMVAR oFontDefault, bGradient

FUNCTION ChangeCodePage( cPathcFile, cAlias, oBrw, nIcoLarge, nIcoSmall )
LOCAL oWnd
LOCAL ii, iMax
LOCAL oGrid, aItem, oBrwDBF
LOCAL aCDP     := Get_cdpSelect()
LOCAL nStart   := 0
LOCAL cDrive   := SPACE( 80 )
LOCAL bAction  := { | x | nil }
LOCAL cMsg     := ""
LOCAL aHeader  := {}
LOCAL nRec     := RECNO()
LOCAL lExit    := .F.

   DEFAULT nIcoLarge := 256                                           // 32
   DEFAULT nIcoSmall := 32                                            // 16

   nStart := ASCAN( aCDP, { | e | TRIM( e[ LANG_CODEPAGE ] ) == TRIM( SP_cWinCodepage() ) } )
   IF EMPTY( nStart )
      nStart := 1
   ENDIF

   fwlog nStart, PROCNAME( 2 ), PROCLINE( 2 ), cPathcFile, cAlias, oBrw, nIcoLarge, nIcoSmall

* #define use_win
#ifdef use_win
   DEFINE WINDOW oWnd FROM 0, 0 TO 1024, 470 PIXEL TITLE "Codepage" ICON "A1MAIN" COLOR BFcolor, BGcolor NOMINIMIZE NOMAXIMIZE

      oGrid := TGrid() :New( 0, 0,, bAction, oWnd, ;
                       BFcolor, BGcolor, .T., .F., ;
                       470, 1024, cMsg, nIcoLarge, nIcoSmall )

      AADD( aHeader, { "Country", 250, LVCFMT_LEFT, "C" } )
      AADD( aHeader, { "Codepage", 200, LVCFMT_LEFT, "C" } )

      oGrid:aHeader := aHeader
      oGrid:aSource := aCDP

      oGrid:CreateHeaderColumn()

      iMax := LEN( aCDP )
      FOR ii := 1 TO iMax
         aItem := { aCDP[ ii ] [ 1 ], aCDP[ ii ] [ 6 ] }
         LV_ADDITEM( oGrid:hLv, aItem )
      NEXT

      oGrid:Setfocus()
      IF !EMPTY( nStart )
         LV_SETITEMSELECT( oGrid:hLv, nStart )
      ENDIF

      oGrid:bClick := { | nItem | DoSetNewCP( cPathcFile, aCDP[ nItem ] [ 6 ], cAlias, oBrw, @lExit ), oWnd:End() }

      oWnd:oClient := oGrid

#else
      DEFINE DIALOG oWnd TITLE "Codepage" SIZE 1024, 470 PIXEL COLOR BFcolor, BGcolor                                                       // FONT oFontDefault

         @  0,  0 XBROWSE oBrwDBF SIZE 1024, 470 PIXEL OF oWnd ;
                 DATASOURCE aCDP ;
                 COLUMNS 1, 6 ;
                 FONT oFontDefault ;
                 COLOR BFcolor, BGcolor ;
                 CELL LINES NOBORDER AUTOCOLS AUTOSORT FASTEDIT

         oBrwDBF:lRecordSelector := .F.
         oBrwDBF:bClrHeader := { || { BFcolor, BGcolor } }
         oBrwDBF:bClrGrad := bGradient
         oBrwDBF:bClrStd := { || { IF( ( oBrwDBF:cAlias )->( DELETED() ), ;
                              CLR_GRAY, BFcolor ), BGcolor } }

         //      oBrwDBF:bClick := { | nItem | DoSetNewCP( cPathcFile, aCDP[ nItem ] [ 6 ], cAlias , , @lExit ), oWnd:End() }

         oBrwDBF:CreateFromCode()

         oWnd:oClient := oBrwDBF

#endif

         oWnd:bKeyDown := { | nKey, nFlag | IF( nKey = VK_ESCAPE, ( lExit := .T., oWnd:End() ), nil ) }
         oWnd:bResized := { | nType, nWidth, nHeight | oWnd:SetSize( 470, 1024 ) }

#ifdef use_win
      END WINDOW
      ACTIVATE WINDOW oWnd ON INIT MakeTop( oWnd, oGrid ) CENTER VALID lExit
#else
   END DIALOG
   ACTIVATE DIALOG oWnd ON INIT MakeTop( oWnd, oBrwDBF ) CENTER
#endif

   IF VALTYPE( oBrw ) = "O"
      oBrw:Refresh()
      IF !EMPTY( cAlias )
         DBGOTO( nRec )
      ENDIF
   ENDIF

RETURN NIL

Code: Select all  Expand view
STATIC PROCEDURE DoSetNewCP( cPathcFile, cCodepage, cAlias, oBrw, lExit )
LOCAL cVia

   IF EMPTY( cAlias )
      hb_CDPSELECT( TRIM( cCodepage ) )
      IF VALTYPE( oBrw ) = "O"
         oBrw:Refresh()
      ENDIF
   ELSE
      IF SP_cInxExt() = "CDX"
         cVia := "DBFCDX"
      ELSE
         cVia := "DBFNTX"
      ENDIF

      CLOSE
      IF SP_lShared()
         USE (cPathcFile) VIA (cVia) NEW SHARED ALIAS (cAlias) CODEPAGE TRIM(cCodepage)
      ELSE
         USE (cPathcFile) VIA (cVia) NEW EXCLUSIVE ALIAS (cAlias) CODEPAGE TRIM(cCodepage)
      ENDIF
   ENDIF
   SP_cWinCodepage( TRIM( cCodepage ) )

   lExit := .T.
RETURN

Code: Select all  Expand view
STATIC FUNCTION Get_cdpSelect()
LOCAL aCDP := {}

   AADD( aCDP, { "Bulgarian            ", "866         ", "BG866 ", "cp866     ", "866         ", "BG866 " } )
   AADD( aCDP, { "Bulgarian            ", "ISO-8859-5  ", "BGISO ", "iso8859-5 ", "ISO-8859-5  ", "BGISO " } )
   AADD( aCDP, { "Bulgarian            ", "MIK         ", "BGMIK ", "bg-mik    ", "MIK         ", "BGMIK " } )
   AADD( aCDP, { "Bulgarian            ", "Windows-1251", "BGWIN ", "cp1251    ", "Windows-1251", "BGWIN " } )
   AADD( aCDP, { "Croatian             ", "437         ", "HR437 ", "          ", "437         ", "HR437 " } )                              // no
   AADD( aCDP, { "Croatian             ", "852         ", "HR852 ", "          ", "852         ", "HR852 " } )
   AADD( aCDP, { "Croatian             ", "Windows-1250", "HR1250", "          ", "Windows-1250", "HRWIN " } )
   AADD( aCDP, { "Czech                ", "852         ", "CS852 ", "cp852     ", "852         ", "CS852 " } )
   AADD( aCDP, { "Czech                ", "ISO-8859-2  ", "CSISO ", "iso8859-2 ", "ISO-8859-2  ", "CSISO " } )
   AADD( aCDP, { "Czech                ", "KAM         ", "CSKAM ", "kamenicky ", "KAM         ", "CSKAM " } )                              // no
   AADD( aCDP, { "Czech                ", "Windoes-1250", "CSWIN ", "cp1250    ", "Windoes-1250", "CSWIN " } )
   AADD( aCDP, { "English              ", "437         ", "EN    ", "          ", "437         ", "EN    " } )
   AADD( aCDP, { "French               ", "850         ", "FR    ", "          ", "850         ", "FR850 " } )
   AADD( aCDP, { "German OEM           ", "850         ", "DE    ", "          ", "850         ", "DE850 " } )
   AADD( aCDP, { "German ANSI          ", "ISO-8859-1  ", "DEWIN ", "cp1252    ", "ISO-8859-1  ", "DEWIN " } )
   AADD( aCDP, { "Greek                ", "737         ", "EL    ", "cp737     ", "737         ", "EL737 " } )
   AADD( aCDP, { "Greek                ", "Windows-1253", "ELWIN ", "cp1253    ", "Windows-1253", "ELWIN " } )
   AADD( aCDP, { "Hungarian (ntxhu852) ", "852         ", "HU852 ", "          ", "852         ", "HU852C" } )
   AADD( aCDP, { "Hungarian (sixhu852) ", "852         ", "HU852S", "          ", "852         ", "HU852 " } )
   AADD( aCDP, { "Hungarian (ntxhu852) ", "ISO-8859-2  ", "HUISO ", "          ", "CWI-2       ", "HUCWI " } )                              // ?
   AADD( aCDP, { "Hungarian (sixhu852) ", "ISO-8859-2  ", "HUISOS", "          ", "ISO-8859-2  ", "HUISO " } )
   AADD( aCDP, { "Hungarian (ntxhu852) ", "Windows-1250", "HUWIN ", "          ", "Windows-1250", "HUWIN " } )
   AADD( aCDP, { "Hungarian (sixhu852) ", "Windows-1250", "HUWINS", "          ", "            ", "HUWINS" } )                              // ?
   AADD( aCDP, { "Italian              ", "437         ", "IT437 ", "          ", "437         ", "IT437 " } )
   AADD( aCDP, { "Italian              ", "850         ", "IT850 ", "          ", "850         ", "IT850 " } )
   AADD( aCDP, { "Italian              ", "ISO-8859-1b ", "ITISB ", "iso8859-1b", "ISO-8859-1b ", "ITISB " } )
   AADD( aCDP, { "Italian              ", "ISO-8859-1  ", "ITISO ", "          ", "ISO-8859-1  ", "ITISO " } )
   AADD( aCDP, { "Lithuanian           ", "Windows-1257", "LT    ", "cp1257    ", "Windows-1257", "LTWIN " } )
   AADD( aCDP, { "Polish               ", "852         ", "PL852 ", "          ", "852         ", "PL852 " } )
   AADD( aCDP, { "Polish               ", "ISO-8859-2  ", "PLISO ", "          ", "ISO-8859-2  ", "PLISO " } )
   AADD( aCDP, { "Polish               ", "Mazowia     ", "PLMAZ ", "mazovia   ", "Mazowia     ", "PLMAZ " } )
   AADD( aCDP, { "Polish               ", "Windows-1250", "PLWIN ", "          ", "Windows-1250", "PLWIN " } )
   AADD( aCDP, { "Portuguese           ", "850         ", "PT850 ", "          ", "850         ", "PT850 " } )
   AADD( aCDP, { "Portuguese           ", "ISO-8859-1  ", "PTISO ", "          ", "ISO-8859-1  ", "PTISO " } )
   AADD( aCDP, { "Russian              ", "866         ", "RU866 ", "          ", "866         ", "RU866 " } )
   AADD( aCDP, { "Russian              ", "KOI-8       ", "RUKOI8", "koi-8     ", "KOI-8       ", "RUKOI8" } )
   AADD( aCDP, { "Russian              ", "Windows-1251", "RU1251", "          ", "Windows-1251", "RU1251" } )
   AADD( aCDP, { "Serbian              ", "Windows-1251", "SRWIN ", "          ", "Windows-1251", "SRWIN " } )
   AADD( aCDP, { "Slovak               ", "852         ", "SK852 ", "          ", "852         ", "SK852 " } )
   AADD( aCDP, { "Slovak               ", "ISO-8859-2  ", "SKISO ", "          ", "ISO-8859-2  ", "SKISO " } )
   AADD( aCDP, { "Slovak               ", "Kamenicky   ", "SKKAM ", "          ", "Kamenicky   ", "SKKAM " } )                              // no
   AADD( aCDP, { "Slovak               ", "Windows-1250", "SKWIN ", "          ", "Windows-1250", "SKWIN " } )
   AADD( aCDP, { "Slovenian            ", "437         ", "SL437 ", "          ", "437         ", "SL437 " } )                              // no
   AADD( aCDP, { "Slovenian            ", "852         ", "SL852 ", "          ", "852         ", "SL852 " } )
   AADD( aCDP, { "Slovenian            ", "ISO-8859-2  ", "SLISO ", "          ", "ISO-8859-2  ", "SLISO " } )
   AADD( aCDP, { "Slovenian            ", "Windows-1250", "SLWIN ", "          ", "Windows-1250", "SLWIN " } )
   AADD( aCDP, { "Spanish              ", "850         ", "ES    ", "          ", "850         ", "ES850 " } )
   AADD( aCDP, { "Spanish              ", "ISO-8859-1  ", "ESWIN ", "          ", "ISO-8859-1  ", "ESWIN " } )
   AADD( aCDP, { "Spanish Modern       ", "ISO-8859-1  ", "ESMWIN", "          ", "ISO-8859-1  ", "ESMWIN" } )
   AADD( aCDP, { "Swedish              ", "850         ", "SV850 ", "          ", "850         ", "SV850 " } )
   AADD( aCDP, { "Swedish (Clipper)    ", "437         ", "SVCLIP", "          ", "437         ", "SV437C" } )
   AADD( aCDP, { "Swedish              ", "ISO-8859-1  ", "SVWIN ", "          ", "ISO-8859-1  ", "SVWIN " } )
   AADD( aCDP, { "Turkish              ", "857         ", "TR857 ", "cp857     ", "857         ", "TR857 " } )
   AADD( aCDP, { "Turkish              ", "Windows-1254", "TRWIN ", "cp1254    ", "Windows-1254", "TRWIN " } )
   AADD( aCDP, { "Ukrainian            ", "866         ", "UA866 ", "          ", "866         ", "UA866 " } )
   AADD( aCDP, { "Ukrainian            ", "KOI-8U      ", "UAKOI8", "koi-8u    ", "KOI-8U      ", "UAKOI8" } )
   AADD( aCDP, { "Ukrainian            ", "Windows-1251", "UA1251", "          ", "Windows-1251", "UA1251" } )
   AADD( aCDP, { "UTF-8                ", "UTF8        ", "UTF8  ", "          ", "            ", "UTF8  " } )
   AADD( aCDP, { "UTF-8 BOM            ", "UTF8EX      ", "UTF8EX", "          ", "            ", "UTF8EX" } )

   // not exact identify

   AADD( aCDP, { "Czech                ", "CS852C      ", "      ", "          ", "            ", "CS852C" } )
   AADD( aCDP, { "Czech                ", "CSKAMC      ", "      ", "          ", "            ", "CSKAMC" } )
   AADD( aCDP, { "German               ", "DE850M      ", "      ", "          ", "            ", "DE850M" } )
   AADD( aCDP, { "German               ", "DEISO       ", "      ", "          ", "            ", "DEISO " } )
   AADD( aCDP, { "Danmark              ", "DK865       ", "      ", "          ", "            ", "DK865 " } )
   AADD( aCDP, { "Greek                ", "EL437       ", "      ", "          ", "            ", "EL437 " } )
   AADD( aCDP, { "Greek                ", "ELISO       ", "      ", "          ", "            ", "ELISO " } )
   AADD( aCDP, { "Spanish              ", "ES850C      ", "      ", "          ", "            ", "ES850C" } )
   AADD( aCDP, { "Spanish              ", "ES850M      ", "      ", "          ", "            ", "ES850M" } )
   AADD( aCDP, { "Spanish              ", "ESISO       ", "      ", "          ", "            ", "ESISO " } )
   AADD( aCDP, { "Finnland             ", "FI850       ", "      ", "          ", "            ", "FI850 " } )
   AADD( aCDP, { "French               ", "FR850C      ", "      ", "          ", "            ", "FR850C" } )
   AADD( aCDP, { "French               ", "FR850M      ", "      ", "          ", "            ", "FR850M" } )
   AADD( aCDP, { "French               ", "FRISO       ", "      ", "          ", "            ", "FRISO " } )
   AADD( aCDP, { "French               ", "FRWIN       ", "      ", "          ", "            ", "FRWIN " } )
   AADD( aCDP, { "Hebrew               ", "HE862       ", "      ", "          ", "            ", "HE862 " } )
   AADD( aCDP, { "Hebrew               ", "HEWIN       ", "      ", "          ", "            ", "HEWIN " } )
   AADD( aCDP, { "Croatian             ", "HRISO       ", "      ", "          ", "            ", "HRISO " } )
   AADD( aCDP, { "Icelandic            ", "IS850       ", "      ", "          ", "            ", "IS850 " } )
   AADD( aCDP, { "Icelandic            ", "IS861       ", "      ", "          ", "            ", "IS861 " } )
   AADD( aCDP, { "Italian              ", "IT850M      ", "      ", "          ", "            ", "IT850M" } )
   AADD( aCDP, { "Italian              ", "ITWIN       ", "      ", "          ", "            ", "ITWIN " } )
   AADD( aCDP, { "Lithuanian           ", "LT775       ", "      ", "          ", "            ", "LT775 " } )
   AADD( aCDP, { "Nederland            ", "NL850       ", "      ", "          ", "            ", "NL850 " } )
   AADD( aCDP, { "Nederland            ", "NL850M      ", "      ", "          ", "            ", "NL850M" } )
   AADD( aCDP, { "Norway               ", "NO865       ", "      ", "          ", "            ", "NO865 " } )
   AADD( aCDP, { "Portuguese           ", "PT860       ", "      ", "          ", "            ", "PT860 " } )
   AADD( aCDP, { "Romanian             ", "RO852       ", "      ", "          ", "            ", "RO852 " } )
   AADD( aCDP, { "Romanian             ", "ROISO       ", "      ", "          ", "            ", "ROISO " } )
   AADD( aCDP, { "Romanian             ", "ROWIN       ", "      ", "          ", "            ", "ROWIN " } )
   AADD( aCDP, { "Russian              ", "RUISO       ", "      ", "          ", "            ", "RUISO " } )
   AADD( aCDP, { "Slovak               ", "SK852C      ", "      ", "          ", "            ", "SK852C" } )
   AADD( aCDP, { "Slovak               ", "SKKAMC      ", "      ", "          ", "            ", "SKKAMC" } )
   AADD( aCDP, { "Slovenian            ", "SL646       ", "      ", "          ", "            ", "SL646 " } )
   AADD( aCDP, { "Serbian              ", "SR646       ", "      ", "          ", "            ", "SR646 " } )
   AADD( aCDP, { "Serbian              ", "SR646C      ", "      ", "          ", "            ", "SR646C" } )
   AADD( aCDP, { "Swedish              ", "SV850M      ", "      ", "          ", "            ", "SV850M" } )
   AADD( aCDP, { "Turkish              ", "TRISO       ", "      ", "          ", "            ", "TRISO " } )
   AADD( aCDP, { "Ukrainian            ", "UA1125      ", "      ", "          ", "            ", "UA1125" } )
   AADD( aCDP, { "UTF16LE              ", "UTF16LE     ", "      ", "          ", "            ", "UTF16LE" } )

RETURN ASORT( aCDP,,, { | aX, aY | aX[ 1 ] + aX[ 2 ] < aY[ 1 ] + aY[ 2 ] } )

Code: Select all  Expand view
FUNCTION SP_lShared( lValue )
STATIC lShared := .T.
   IF PCOUNT() > 0
      lShared := lValue
   ENDIF
RETURN lShared

FUNCTION SP_cWinCodepage( cValue )
STATIC cWinCodepage := "DEWIN"
   IF PCOUNT() > 0
      cWinCodepage := cValue
   ENDIF
RETURN cWinCodepage
 
greeting,
Jimmy
User avatar
Jimmy
 
Posts: 1584
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany

Re: REQUEST HB_CODEPAGE_xxx and show possible Codepage

Postby nageswaragunupudi » Tue Aug 15, 2023 4:57 pm

I am not sure but please try
Code: Select all  Expand view
? Empty( HB_FuncPtr( cCodePage ) )
Regards

G. N. Rao.
Hyderabad, India
User avatar
nageswaragunupudi
 
Posts: 10247
Joined: Sun Nov 19, 2006 5:22 am
Location: India

Re: REQUEST HB_CODEPAGE_xxx and show possible Codepage

Postby Jimmy » Wed Aug 16, 2023 5:11 am

hi,
nageswaragunupudi wrote:
Code: Select all  Expand view
? Empty( HB_FuncPtr( cCodePage ) )

i will try it, thx
greeting,
Jimmy
User avatar
Jimmy
 
Posts: 1584
Joined: Thu Sep 05, 2019 5:32 am
Location: Hamburg, Germany


Return to FiveWin for Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 67 guests