Página 1 de 1
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 18:22
por JoséQuintas
No meu aplicativo ok, uso codepage PTISO pra tudo.
Estou mexendo um aplicativo com uma situação diferente:
Quero usar as mensagens em PTISO.
Tipo, no fonte, codificado em PTISO, tenho lá MsgYesNo( "Confirma exclusão" )
Ao chamar a msgbox da API, o texto é passado pra ela, mas sai errado.
Código: Selecionar todos
FUNCTION MsgYesNo( cText )
RETURN wapi_MessageBox( wapi_GetActiveWindow(), cText, "Confirm", MB_YESNO + MB_ICONQUESTION + MB_DEFBUTTON2 ) == IDYES
Alguma sugestão que eu poderia incluir nessa função pra converter?
Nota:
Não dá pra definir todo aplicativo como PTISO, porque tudo que é fonte utiliza os caracteres de box, e bagunçaria muito as telas.
E pra complicar, o cara usou também em relatórios, que ficam dependentes de tabela Ascii inglês - além de obrigar impressora Epson, ainda tem que estar configurada pra caracteres IBM, o que não é padrão na Epson.
Vou ter que usar assim até mexer em todos os fontes.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 19:00
por Itamar M. Lins Jr.
Ola!
+ added WIN_OEMTOANSI() and WIN_ANSITOOEM(). These are
compatible with current core HB_OEMTOANSI()/HB_ANSITOOEM()
Usage of them is not recommended.
Creio que na sua versão ainda use hb_oemtoansi()
cTextoSemAcento := hb_oemtoansi(ctextoComAcento)
O Viktor esta corrigindo UTF8 do fork dele.
2014-02-19 13:13 UTC+0100 Viktor Szakáts (vszakats users.noreply.github.com)
* contrib/hbexpat/tests/test.prg
* contrib/hbexpat/tests/tohash.prg
* contrib/hbmisc/tests/numtxtru.prg
* contrib/hbmxml/tests/custom.prg
* contrib/hbmxml/tests/reminder.prg
* contrib/hbmxml/tests/testmxml.prg
* use ? instead of OutStd()/OutErr()
* added code to ensure proper UTF-8 output on console
* contrib/hbmagic/tests/hbmagit.prg
* use ? instead of OutStd()/OutErr()
* contrib/hbhpdf/tests/harupdf.prg
! added missing 'hb_cdpSelect( "UTF8EX" )' to make UTF8 work properly in non-script mode
* extras/hbdoc/hbdoc.prg
* added missing 'REQUEST HB_CODEPAGE_UTF8EX'
* contrib/hbamf/tests/test.prg
+ added 'hb_SetTermCP( hb_cdpTerm() )'
* tests/langchk.hb
+ use screen output for Unicode text now that it works
* tests/gtchars.prg
* src/rtl/langcomp.prg
% deleted 'REQUEST HB_CODEPAGE_UTF8' (it's available without request)
* contrib/hbpost.hbm
* utils/hbmk2/hbmk2.prg
* utils/hbmk2/po/hbmk2.hu.po
* changed to (c) to UTF-8 copyright symbol
(note: it won't display properly on consoles not supporting
Unicode)
* renamed -safe[-] option to -harden[-] (old name is accepted
till HB_LEGACY_LEVEL5 with a warning)
[TRANSLATION] [INCOMPATIBILITY]
* contrib/hbexpat/tests/test.xml
* contrib/hbmxml/tests/test.xml
+ added UTF-8 text for testing
* tests/gtxfnt.prg
* extras/guestbk/guestbk.prg
* minor cleanups
Espero que ajude ai seus experimentos
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 19:11
por rossine
Olá Itamar,
Estou acompanhando as releases das duas versões do harbour. Vejo que tem muito mais atualizações na release do Viktor e eu estava pensando em usar ela.
Pelo que vi o Viktor está aplicando todas as mudanças do Przemek na release dele.
Você está usando a release do Viktor ?
Algum comentário sobre em se usar uma outra ?
Tentei gerar os binários do harbour do Viktor e me ocorreu a mensagem de erro abaixo:
Código: Selecionar todos
c:\harbour-core>win-make clean install
! Building Harbour 3.4.0dev from source - http://harbour-project.org
! MAKE: win-make 3.82 sh.exe clean install
! HB_INSTALL_PREFIX: c:\hrb_ming
! HB_INSTALL_BIN: c:\hrb_ming\bin
! HB_INSTALL_LIB: c:\hrb_ming\lib
! HB_INSTALL_DYN: c:\hrb_ming\dyn
! HB_INSTALL_INC: c:\hrb_ming\include
! HB_INSTALL_DOC: c:\hrb_ming\doc
! HB_BUILD_DYN: no
! HB_BUILD_CONTRIB_DYN: no
! HB_BUILD_SHARED: no
! HB_REBUILD_EXTERN: yes
! HB_HOST_PLAT: win (x86_64) HB_SHELL: nt
! HB_PLATFORM: win (x86) (autodetected)
! HB_COMPILER: mingw
! Component: 'zlib' found in c:/harbour-core/src/3rd/zlib (local)
! Component: 'pcre' found in c:/harbour-core/src/3rd/pcre (local)
! Component: 'gpm' not supported on win platform
! Component: 'slang' not found. Configure with HB_WITH_SLANG.
! Component: 'curses' not found. Configure with HB_WITH_CURSES.
! Component: 'x11' not found. Configure with HB_WITH_X11.
! Component: 'wattcp/watt-32' not supported on win platform
! 'hbpmcom' library skipped (platform or compiler not supported)
! 'gtcrs' library skipped (component not found)
! 'gtdos' library skipped (platform not supported)
! 'gtos2' library skipped (platform not supported)
! 'gtsln' library skipped (component not found)
! 'gttrm' library skipped (platform or compiler not supported)
! 'gtxwc' library skipped (component not found)
! Warning: hbmk2 not found, contrib/make.hb skipped.
! Warning: hbmk2 not found, config/postinst.hb skipped.
1 arquivo(s) copiado(s).
...
! 'hbpmcom' library skipped (platform or compiler not supported)
gcc -I. -I../../../../../../include -fstack-protector-strong -Wmissing-braces
-Wreturn-type -Wformat -Wimplicit-int -Wimplicit-function-declaration -O3 -fomit
-frame-pointer -march=i686 -mtune=generic -m32 -DUNICODE -Ic:/harbour-core/src/
3rd/zlib -DPNG_NO_STDIO -opng.o -c ../../../png.c
cc1.exe: error: unrecognized command line option "-fstack-protector-strong"
win-make[4]: *** [png.o] Error 1
win-make[3]: *** [descend] Error 2
win-make[2]: *** [png.inst] Error 2
win-make[1]: *** [3rd.inst] Error 2
win-make: *** [src.inst] Error 2
c:\harbour-core>
Obrigado,
Rossine.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 21:30
por Itamar M. Lins Jr.
Ola!
Eu uso a versão do Viktor, e observo se ele está mantendo compatibilidade com a do Przemek(oficial), até agora os dois estão trocando figurinhas, o Przemek demora mais um pouco de copiar as modificações do Viktor.
Quanto ao erro, deve ser um bug! tem que comunicar ao Viktor pelo GIT lá no issue.
Qual é a versão do seu GCC ?
2013-12-18 15:55 UTC+0100 Viktor Szakáts (vszakats users.noreply.github.com)
* config/win/mingw.mk
+ enable -fstack-protector-strong for gcc 4.9 and above
(for mingw)
UPDATE: see article:
https://lwn.net/Articles/584225/
Eu uso o Mingw da TDragon. Versão 4.8.1 32bits
http://www.tdm-gcc.tdragon.net
Não tenho esse erro aqui, compilei o harbour dia 19/02/2014.
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 22:03
por JoséQuintas
Itamar, isso não deu certo.
Talvez funcionasse num fonte normal, editado pelo EDIT por exemplo.
No meu caso o texto já entra no fonte no formato Windows (codepage Windows).
Teria que informar que o texto já está pronto pra uso.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 22:27
por rossine
Olá Itamar,
Baixei o GCC que você indicou e mesmo assim não consegui. Aí mudei a minha variável de ambiente de
HB_COMPILER_VER=4.8.1 para
HB_COMPILER_VER=48 aí gerou os binários corretamente.
Obrigado pela dica,
Rossine.
Obs: José desculpe por desviar o assunto de teu tópico

Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 22:37
por Itamar M. Lins Jr.
Eu não uso essa variavel.
HB_COMPILER_VER
Uso essas:
HB_INSTALL_PREFIX=C:\HB34
HB_TIP_OPENSSL=yes
HB_WITH_CURL=C:\curl-7.34.0-devel-mingw32\include
HB_WITH_FIREBIRD=C:\Program Files\Firebird\Firebird_2_5\include
HB_WITH_OPENSSL=C:\OpenSSL-Win32\include
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 22:54
por rossine
Itamar,
Pelo que vi o Viktor incluiu esta variável hoje. Veja abaixo:
Código: Selecionar todos
2014-02-24 00:35 UTC+0100 Viktor Szakáts (vszakats users.noreply.github.com)
* config/global.mk
+ always display HB_COMPILER_VER, if set (either manually or by autodetection)
* config/global.mk
* utils/hbmk2/hbmk2.prg
+ autodetect mingw 4.9
* config/win/mingw.mk
* config/win/msvc.mk
+ display warning if HB_COMPILER_VER is not set for these platforms.
If not set, it will cause various malfunctions because the build process
has many compiler version dependent settings and needs proper version info.
To set proper version info the easiest is to NOT set HB_COMPILER
and let it autodetect. Only if autodetection fails should you
set HB_COMPILER but in this case you must also set HB_COMPILER_VER,
when using mingw or msvc.
Rossine.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 22:55
por Itamar M. Lins Jr.
Bem, eu uso assim:
Porque p/ imprimir usando a classe winprn(), tenho uns carnês com linhas duplas etc...
Código: Selecionar todos
...
REQUEST HB_LANG_PT, HB_CODEPAGE_PTISO, HB_CODEPAGE_PT850
...
oPrn:SetPrc(4,0)
oPrn:CharSet(255)
oPrn:setfont('Lucida Console',,17,,,,255)
HB_CDPSelect("PT850")
...
oPrn:Textout('ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» ' + ' ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»',.t.)
oPrn:EndDoc()
HB_CDPSelect( "PTISO")
Sai certinho as linhas duplas "=====" nas impressoras, qualquer uma laser, matricial...
Não sei como direcionar isso p/ console.
Eu uso a Hwgui, já testou com outros GT´s ? Penso que usa a GTWVG correto ?
Realmente não sei como ajudar mais...
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 23:14
por JoséQuintas
Acabou dando uma idéia, só faltaria um detalhe.
PTISO é a nossa. Qual seria a default pra retornar?
A idéia seria:
Código: Selecionar todos
FUNCTION MsgYesNo( cTexto )
HB_CPDSelect( "PTISO" )
...
HB_CPDSelect( ?????? )
RETURN NIL
Não sei se precisaria um request adicional.
Vou testar usando CodeAnt := HB_CPDSelect()
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 23:18
por Itamar M. Lins Jr.
Pelo que vi o Viktor incluiu esta variável hoje. Veja abaixo:
É mesmo, só hoje acho que ele fez uns 10 commits.
Eu olho, porém nem sempre compilo, só quando é correção, adição nos módulos que tenho interesse.
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 23:21
por Itamar M. Lins Jr.
HB_CPDSelect(

??? )
REQUEST HB_CODEPAGE_UTF8EX ?
hb_cdpSelect( "UTF8EX" ) ?
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 23:24
por JoséQuintas
Eureka. Isto deu certo.
Código: Selecionar todos
FUNCTION MsgExclamation( cText )
LOCAL cSet := Set( _SET_CODEPAGE, "PTISO" )
wapi_MessageBox( wapi_GetActiveWindow(), cText, "Atenção", WIN_MB_ICONASTERISK )
Set( _SET_CODEPAGE, cSet )
RETURN NIL
Harbour & WinApi & Codepage
Enviado: 23 Fev 2014 23:37
por Itamar M. Lins Jr.
Fiz aqui com o harbour do Viktor sai os acentos.
Editei com o notepad
Código: Selecionar todos
#require "xhb"
#include "hbdll.ch"
IMPORT STATIC MessageBox( hWnd, cMsg, cText, nFlags ) FROM user32.dll EXPORTED AS MessageBoxA
PROCEDURE Main()
? MessageBox( 0, "ÇÃÊíÍÕ !", "TESTE" )
RETURN
Arquivo hbmk.hbm
Saudações,
Itamar M. Lins Jr.
Harbour & WinApi & Codepage
Enviado: 24 Fev 2014 00:52
por JoséQuintas
Com o Harbour não Viktor também ok.
Com a hbwin, só daquele jeito.
Não sei qual seria o correto, já que com a hbwin obedece o codepage do aplicativo.
Resta saber se com PTISO desse jeito que passou continua obedecendo, significaria uma conversão automática de codepage numa das duas.
Mas como uso normalmente a hbwin e codepage PTISO, vou manter do jeito que mencionei e depois será só remover.
Grato pela ajuda, mesmo não usando sua solução, acabou me dando a idéia da solução que usei.
Nota:
xhb é a biblioteca de compatibilidade com xHarbour, acaba modificando algumas coisas.