Acentuação Hwgui

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Acentuação Hwgui

Mensagem por susviela@bol.com.br »

Testando um exemplo do tutorial estou com problemas de acentuação.

Código: Selecionar todos

#include "hwgui.ch"

REQUEST HB_CODEPAGE_UTF8EX  // ** tentativa de corrigir 

Function Main

	Local oMainWnd, oFont
	Local aCombo := {"Primeiro","Segundo" }

	hb_cdpSelect ( "UTF8EX" )    // ** tentativa de corrigir 
	
	  PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13

	  INIT WINDOW oMainWnd TITLE "Exemplo Olá Mundo." ;
		 FONT oFont ;
		 ON EXIT {||hwg_MsgYesNo("Sair do Sistema ?")}

	  @ 20,10 EDITBOX "Ola mundo!" SIZE 200,30

	  @ 270,10 COMBOBOX aCombo SIZE 100, 150 TOOLTIP "Combobox"

	  @ 120,60 BUTTON "Sair" SIZE 150,30 ;
		 ON CLICK {||oMainWnd:Close()}

	  MENU OF oMainWnd
		 MENUITEM "Sobre" ACTION hwg_MsgInfo("Primeira Aplicação...  !!")
	  ENDMENU

	  ACTIVATE WINDOW oMainWnd

	  hwg_writelog( "Programa Terminado: " + Dtoc(Date()) + " em " + Time() )

Return

Dicas

------------------------------------------------
Maquina virtual - Windows 32
Harbour = caminho: c:\hb32 ( harbour-nightly-win.exe )
hwgui = caminho: c:\hwgui ( hwgui-2.20-b3.mingw.zip )
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Acentuação Hwgui

Mensagem por marcosgambeta »

Baseado no código-fonte do exemplo, você configurou como UTF-8.

Está editando o código-fonte como ANSI ou como UTF-8 ?
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Acentuação Hwgui

Mensagem por susviela@bol.com.br »

Está editando o código-fonte como ANSI ou como UTF-8 ?
Estou usando o NotePad++ UTF-8 (Windows 7/32) Virtualizado
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Acentuação Hwgui

Mensagem por susviela@bol.com.br »

Tentei assim, conforme dica:

Código: Selecionar todos

#include "hwgui.ch"

Function Main
	Local oMainWnd, oFont
	Local aCombo := {"Primeiro","Segundo" }
	
REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
HB_SETCODEPAGE( "PT850" )
HB_LANGSELECT( "PT" )

	
	  PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13

	  INIT WINDOW oMainWnd TITLE "Exemplo Olá Mundo." ;
		 FONT oFont ;
		 ON EXIT {||hwg_MsgYesNo("Sair do Sistema ?")}

	  @ 20,10 EDITBOX "Ola mundo!" SIZE 200,30

	  @ 270,10 COMBOBOX aCombo SIZE 100, 150 TOOLTIP "Combobox"

	  @ 120,60 BUTTON "Sair" SIZE 150,30 ;
		 ON CLICK {||oMainWnd:Close()}

	  MENU OF oMainWnd
		 MENUITEM "Sobre" ACTION hwg_MsgInfo("Primeira Aplicação...  !!")
	  ENDMENU

	  ACTIVATE WINDOW oMainWnd

	  hwg_writelog( "Programa Terminado: " + Dtoc(Date()) + " em " + Time() )

Return
Recebo mensagem de erro, ao compilar
C:\hwgui\teste>hbmk ola2

C:\hwgui\teste>hbmk2 c:\hwgui\hwgui.hbc ola2
hbmk2: Processando opções do ambiente: -comp=mingw
Harbour 3.2.0dev (r1706271037)
Copyright ( c ) 1999-2016, http://harbour-project.org/
Compiling 'ola2.prg'...
Lines 3501, Functions/Procedures 1
Generating C source output to 'C:\Users\Loja\AppData\Local\Temp\hbmk_qru7mc.dir\
ola2.c'... Done.
C:/Users/Loja/AppData/Local/Temp/hbmk_qru7mc.dir/ola2.o:ola2.c:(.data+0x38): und
efined reference to `HB_FUN_HB_SETCODEPAGE'
collect2.exe: error: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
C:\hb32\comp\mingw\bin\gcc.exe C:/Users/Loja/AppData/Local/Temp/hbmk_qru7mc.dir/
ola2.o C:/Users/Loja/AppData/Local/Temp/hbmk_qru7mc.dir/hbmk_aiompt.o -mwindo
ws -Wl,--start-group -lhwgui -lprocmisc -lhbxml -lhwgdebug -lhbextern -lhbdebug
-lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgu
i -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhb
hsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lhbmainwin -lkernel32 -luser32
-lgdi32 -ladvapi32 -lws2_32 -liphlpapi -lwinspool -lcomctl32 -lcomdlg32 -lshell
32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet
-lhbpcre -lhbzlib -Wl,--end-group -oola2.exe -LC:/hb32/lib/win/mingw -Lc:/hwg
ui/lib

hbmk2: Dica: Adicionar opção 'xhb.hbc' faltando nas funções: hb_SetCodepage()

C:\hwgui\teste>
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Acentuação Hwgui

Mensagem por Jairo Maia »

Você está colocando os REQUEST´s dentro da função Main(). Os REQUEST´s devem ficar acima do início da função. Coloque abaixo de #include "hwgui.ch".
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acentuação Hwgui

Mensagem por JoséQuintas »

Opa!
Atenção às mensagens!
Mas não somente ao que ela diz, mas nas "mensagens ocultas".... rs

hbmk2: Dica: Adicionar opção 'xhb.hbc' faltando nas funções: hb_SetCodepage()
Até pode resolver o erro seguindo essa dica mas....
Isso é comando do XHARBOUR, e exige xhb.hbc.
FUJA DELE E DESSA LIB!

Estou acostumado com a codepage default do Windows, SEM UTF-8, e uso apenas o Set( _SETCODEPAGE, "PTISO" ) que já altera tudo de uma vez.
Verifique o correspondente pra Harbour, e se quer alterar somente tela, ou arquivos também.
Mas acho que UTF-8 em tudo pode exigir mudanças em Substr(), Len() e talvez até na estrutura de DBF.
Melhor confirmar com quem está acostumado com UTF-8, se tem alguma coisa extra que não sabemos.

Eu também sempre fiquei curioso sobre esse UTF-8, porque a impressão que dá é que precisaria de muitas coisas extras.
A tela é apenas uma das partes do conjunto.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
marcosgambeta
Usuário Nível 3
Usuário Nível 3
Mensagens: 332
Registrado em: 16 Jun 2005 22:53

Acentuação Hwgui

Mensagem por marcosgambeta »

Para quem quiser se aprofundar no assunto, a Wikipedia pode ser um ponto de partida:

https://pt.wikipedia.org/wiki/UTF-8
https://pt.wikipedia.org/wiki/Unicode

Se entender inglês, os artigos neste idioma costumam trazer mais informações:

https://en.wikipedia.org/wiki/UTF-8
https://en.wikipedia.org/wiki/Unicode

O 'x' da questão é que Unicode pode usar até 4 bytes para armazenar um caractere/símbolo. Sendo assim, o desenvolvedor precisa saber usar corretamente, principalmente na questão de armazenamento de informações nos bancos de dados.

Se o alvo é criar aplicações gráficas em português, ANSI (PTISO) é suficiente e mais simples de lidar. Unicode pode ser estudado/testado à parte e adotado quando o desenvolvedor realmente precisar e entender com clareza como usá-lo.
Atenciosamente,
Marcos Antonio Gambeta
Avatar do usuário
susviela@bol.com.br
Usuário Nível 3
Usuário Nível 3
Mensagens: 236
Registrado em: 30 Jun 2017 11:17
Localização: São José / SC
Contato:

Acentuação Hwgui [ RESOLVIDO ]

Mensagem por susviela@bol.com.br »

Bom povo ... ficou resolvido assim:

1) No notepad++ usar ANSI (Dica outro grupo)

2) Mudei fonte para:

Código: Selecionar todos

#include "hwgui.ch"

Function Main

    Local oMainWnd, oFont
    Local aCombo := {"Primeiro","Segundo" }

	//hb_LangSelect('PT')   
   
      PREPARE FONT oFont NAME "MS Sans Serif" WIDTH 0 HEIGHT -13

      INIT WINDOW oMainWnd TITLE "Exemplo Olá Mundo." ;
         FONT oFont ;
         ON EXIT {||hwg_MsgYesNo("Sair do Sistema ?")}

      @ 20,10 EDITBOX "Ola mundo!" SIZE 200,30

      @ 270,10 COMBOBOX aCombo SIZE 100, 150 TOOLTIP "Combobox"

      @ 120,60 BUTTON "Sair" SIZE 150,30 ;
         ON CLICK {||oMainWnd:Close()}

      MENU OF oMainWnd
         MENUITEM "Sobre" ACTION hwg_MsgInfo("Primeira Aplicação...  !!")
      ENDMENU

      ACTIVATE WINDOW oMainWnd

      hwg_writelog( "Programa Terminado: " + Dtoc(Date()) + " em " + Time() )

Return
3) Alguém pediu para comentar o "hb_LangSelect('PT') " , fiz isso;

3) criei um arquivo HBP para compilar (Vejam e corrijam se for o caso )
-oola2
-inc
-compr=yes
-quiet
-lxhb
-lhbwin
-lhbct
-lhwgui
-lprocmisc
-lhbxml
-lhwgdebug
-gui
ola2.prg
4) Estou compilando assim:

hbmk2 ola.prg c:\hwgui\hwgui.hbc


AINDA ACHO QUE TEM COISAS ERRADAS MAS ASSIM ESTÁ FUNCIONANDO, e os caracteres estão normal

Levei o ola2.exe para uma outra maquina windows e está funcionando certinho.
.
.
"E quando você perder o controle, colherá o que plantou."
=========================================
Carlos Alberto Nunes #Susviela
Site: https://www.PowerInformatica.com.br
=========================================
Blog xBase: https://programandoxbase.wordpress.com/
Blog TI: https://susviela.wordpress.com

( #ProgramandoxBase #AllxBase )
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acentuação Hwgui

Mensagem por JoséQuintas »

Para quem quiser se aprofundar no assunto, a Wikipedia pode ser um ponto de partida:
Esse é o problema, diz tudo mas não diz nada.

Que usa mais de um byte pra definir um caractere já se sabe, que o DBF precisa estrutura alterada já se sabe, mas... e o Harbour? e o aplicativo?

Este exemplo como exemplo:

Código: Selecionar todos

   ?        At( ii, i ),        RAt( ii, i ), "-", PadR( hb_cdpUniID( "FRISO" ), 10 ), "at/rat"
   ?     hb_At( ii, i ),     hb_RAt( ii, i ), "-", PadR( hb_cdpUniID( "FRISO" ), 10 ), "hb_at/rat"
   ? hb_utf8At( ii, i ), hb_utf8RAt( ii, i ), "-", PadR( hb_cdpUniID( "FRISO" ), 10 ), "hb_utf8at/rat"
   ?        At( dd, d ),        RAt( dd, d ), "-", PadR( hb_cdpUniID( "FR850" ), 10 ), "at/rat"
   ?     hb_At( dd, d ),     hb_RAt( dd, d ), "-", PadR( hb_cdpUniID( "FR850" ), 10 ), "hb_at/rat"
   ? hb_utf8At( dd, d ), hb_utf8RAt( dd, d ), "-", PadR( hb_cdpUniID( "FR850" ), 10 ), "hb_utf8at/rat"
   ?        At( uu, u ),        RAt( uu, u ), "-", PadR( "UTF-8", 10 )               , "at/rat"
   ?     hb_At( uu, u ),     hb_RAt( uu, u ), "-", PadR( "UTF-8", 10 )               , "hb_at/rat"
   ? hb_utf8At( uu, u ), hb_utf8RAt( uu, u ), "-", PadR( "UTF-8", 10 )               , "hb_utf8at/rat"
Seria isso mesmo? até alterar funções no fonte?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Acentuação Hwgui

Mensagem por JoséQuintas »

Só um comentário sobre o REQUEST: não precisa ser no início.
Como comecei a separar rotinas do aplicativo pra LIB, e deixo os módulos como texto, acabei tendo que usar isso, e deixei no final.

Código: Selecionar todos

...
   RETURN mTimeFim - mTimeIni


REQUEST GameForca
REQUEST GameTesteQI
REQUEST ljpCidade
REQUEST ljpTabel
REQUEST pAuxiliar
REQUEST pAuxiliarNum
REQUEST pAuxBanco
REQUEST pAuxCarCor
REQUEST pAuxCCusto
Só serve pra indicar que esse símbolo deve ser pesquisado em LIB.
Uso algo do tipo

DO &( cNomeModulo )

Então, esses REQUESTs servem pra "puxar" os módulos da LIB, senão eles não "vém" para o EXE.
E funciona no final do fonte, e talvez em qualquer parte do fonte.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Acentuação Hwgui

Mensagem por Jairo Maia »

JoséQuintas escreveu:Só um comentário sobre o REQUEST: não precisa ser no início.
Isso mesmo. Não precisa, acho que é coisa do Clipper ou errei mesmo.
JoséQuintas escreveu:hbmk2: Dica: Adicionar opção 'xhb.hbc' faltando nas funções: hb_SetCodepage()
Substitua a função hb_SetCodepage() por Hb_CdpSelect(), ou use a função SET() como foi dito.
susviela@bol.com.br escreveu:Alguém pediu para comentar o "hb_LangSelect('PT') " , fiz isso;
Essa função faz as mensagens internas do Harbour ser exibida na lingua selecionada. Numa mensagem de erro usando hb_LangSelect('PT') num erro de execução por variável não existente seria: Variável não existe: NomedaVariavel. Omitindo o padrão é em inglês, então seria: Variable does not exist: NomedaVariavel.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

Acentuação Hwgui

Mensagem por Claudio Soto »

Yo no he probado, pero para usar diferente CodePage con DBF en Harbour:

SET( _SET_DBCODEPAGE, cCp )

Para mayor detalle ver el post de Massimo Belgrano en:
https://groups.google.com/forum/m/#!top ... iFrmIyv12c

Un dato a tener en cuenta es que no todas las funciones de manipulación de caracteres de Hb soportan Unicode, ver por ej en:
http://www.hmgforum.com/hmgdoc/data/index.htm
la opción HMG UNICODE en el menú de la izquierda donde se muestran dos listas de funciones de Hb que soportan y que no soportan UTF-8.
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
Responder