Clipper On Line • Ver Tópico - Acentuação Hwgui

Acentuação Hwgui

Projeto HwGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Acentuação Hwgui

Mensagempor susviela@bol.com.br » 13 Jul 2017 21:01

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

#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 )
Avatar de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Acentuação Hwgui

Mensagempor marcosgambeta » 14 Jul 2017 15:23

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
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Acentuação Hwgui

Mensagempor susviela@bol.com.br » 14 Jul 2017 19:23

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 de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Acentuação Hwgui

Mensagempor susviela@bol.com.br » 14 Jul 2017 21:00

Tentei assim, conforme dica:

#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 de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Acentuação Hwgui

Mensagempor Jairo Maia » 16 Jul 2017 14:44

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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Acentuação Hwgui

Mensagempor JoséQuintas » 16 Jul 2017 16:21

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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Acentuação Hwgui

Mensagempor marcosgambeta » 16 Jul 2017 16:47

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
marcosgambeta
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 318
Data de registro: 16 Jun 2005 22:53
Curtiu: 2 vezes
Mens.Curtidas: 40 vezes

Acentuação Hwgui [ RESOLVIDO ]

Mensagempor susviela@bol.com.br » 16 Jul 2017 18:35

Bom povo ... ficou resolvido assim:

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

2) Mudei fonte para:

#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 de usuário

susviela@bol.com.br
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 236
Data de registro: 30 Jun 2017 11:17
Cidade/Estado: São José / SC
Curtiu: 153 vezes
Mens.Curtidas: 24 vezes

Acentuação Hwgui

Mensagempor JoséQuintas » 16 Jul 2017 23:46

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:

   ?        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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Acentuação Hwgui

Mensagempor JoséQuintas » 17 Jul 2017 00:11

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.

...
   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, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Acentuação Hwgui

Mensagempor Jairo Maia » 17 Jul 2017 11:59

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)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Acentuação Hwgui

Mensagempor Claudio Soto » 17 Jul 2017 22:45

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
Avatar de usuário

Claudio Soto
Colaborador

Colaborador
 
Mensagens: 555
Data de registro: 27 Ago 2012 12:31
Cidade/Estado: Uruguay
Curtiu: 35 vezes
Mens.Curtidas: 166 vezes




Retornar para HwGui

Quem está online

Usuários vendo este fórum: Bing [Bot] e 3 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro