Harbour & WinApi & Codepage

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

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

Harbour & WinApi & Codepage

Mensagem 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.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Harbour & WinApi & Codepage

Mensagem 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.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour & WinApi & Codepage

Mensagem 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.
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/
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Harbour & WinApi & Codepage

Mensagem 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 :)
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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
Saudações,
Itamar M. Lins Jr.
rossine
Usuário Nível 3
Usuário Nível 3
Mensagens: 325
Registrado em: 06 Ago 2007 09:57
Localização: Divinópolis-MG

Harbour & WinApi & Codepage

Mensagem 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.
Rossine.

Harbour 3.4, MingW / Msvc, QT, Qt5xhb, GtQtc, DbfCdx, MySql/MariaDB.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour & WinApi & Codepage

Mensagem 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()
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem por Itamar M. Lins Jr. »

HB_CPDSelect( ?????? )
REQUEST HB_CODEPAGE_UTF8EX ?
hb_cdpSelect( "UTF8EX" ) ?


Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour & WinApi & Codepage

Mensagem 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
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Harbour & WinApi & Codepage

Mensagem 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

Código: Selecionar todos

xhb.hbc

-w3 -es2
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Harbour & WinApi & Codepage

Mensagem 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.
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/
Responder