Falha ao mostrar acentuação no Sistema

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

Moderador: Moderadores

elvio.tche
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 09 Nov 2006 08:36

Falha ao mostrar acentuação no Sistema

Mensagem por elvio.tche »

Migrei um sistema de locadora do Clipper 5.3b para Harbour 3.2 (BCC 5.8), porém, estou com um pequeno incomodo.
Eventualmente, executo o sistema com um parâmetro para gravar novos valores para que o sistema salve alguns dados da máquina para evitar copiá-lo sem autorização (principalmente pelos funcionários da locadora).
O que estou tentando fazer é que o sistema mostre as mensagens do sistema com acentuação correta, além da acentuação dos dados gravados nos DBFs.

Tentei o seguinte:

Código: Selecionar todos

/* Solucao para CodePage mostrar acentuação no Sistema - Requisição... /*
REQUEST HB_CODEPAGE_PTISO     // As requisições de codepage possibilitam
REQUEST HB_CODEPAGE_PT850     // trabalhar com vários SOs e charsets pt_br, ou seja, corrigem a acentuação
REQUEST HB_LANG_PT

Procedure main()
Parameters cParamIni

Local nOpcao:=1,cScrLocal:="",cHoraIni:=Time()
Local cFileControl:="VIDEO",cDirInst:="..\VIDEO"
Local xVar1,xVar2,xVar3,cVolName:=""
Local aMenuLBL:={},aMenuRLT:={},aMSelRLT:={},aMenu:={},aMenuVal:={}

/* Variáveis de Identificação do Usuário do Sistema */
Private W_US_NOME,W_US_END,W_US_BAI,W_US_CID,W_US_UF,W_US_CEP,W_US_FONE,W_US_CGC

/* Variável Matriz para Frases do Cupom de Locação */
Private aFrases:={"","","","",""}

/* Variáveis para Configuração da Impressora */
Private VI_Dev:="" /* Porta de Saída do Relatório */
Private VI_Cod:="" /* Código da Impressora */
Private VI_LOC:=0  /* Impressora Local ou Rede */

/* Variável do Tipo de Fita para Emissão do Cupom Fiscal */
Private nTipoNota:=0

/* Variável do Caminho das Tabelas de Dados e Indices */
Private DBF_Path:=""

/* Solucao para CodePage mostrar acentuação no Sistema /*
HB_LANGSELECT('PT')
HB_SETCODEPAGE('PT850')

/* Log Inicial */
SaveLog()
SaveLog("* * * INÍCIO * * *")

QOut()
QOut("Aguarde...")
QOut()
... o sistema é compilado e recebo a seguinte mensagem:
Error BASE/1003 Variable does not exist: CPARAMINI
Called from VIDEO(51)


Então, mudei as primeiras linhas para:

Código: Selecionar todos

Function main(cParamIni)
...

/* Solucao para CodePage mostrar acentuação no Sistema - Requisição... /*
REQUEST HB_CODEPAGE_PTISO     // As requisições de codepage possibilitam
REQUEST HB_CODEPAGE_PT850     // trabalhar com vários SOs e charsets pt_br, ou seja, corrigem a acentuação
REQUEST HB_LANG_PT

/* Solucao para CodePage mostrar acentuação no Sistema /*
HB_LANGSELECT('PT')
HB_SETCODEPAGE('PT850')
...
.... então compila e executa normalmente, porém, as acentuações das mensagens são exibidos outros caracteres, como por exemplo:
- Seleç╠o = Seleção
- Locaç╠o - Locação
- Devoluç╠o - Devolução
... e assim por diante.

Alguma sugestão sobre como contornar esse probleminha?

Agradeço desde já!
Editado pela última vez por Pablo César em 16 Nov 2012 08:12, em um total de 1 vez.
Razão: Alterado título do tópico. Para facilitar a procura do tema das mensagens.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Parâmetros por linha de comando no main()...

Mensagem por Jairo Maia »

Olá Elvio,

Seja bem vindo ao fórum.

Pelo que vejo tanto a seleção de idioma como o código de página está correto. Você poderia anexar uma mensagem acentuada como está no seu código para analisarmos. Selecione uma mensagem, salve com o mesmo editor que você usa para escrever seus fontes, compacte e use a opção de anexar no rodapé da caixa de mensagem após logado.
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
asimoes
Colaborador
Colaborador
Mensagens: 4919
Registrado em: 26 Abr 2007 16:48
Localização: RIO DE JANEIRO-RJ

Parâmetros por linha de comando no main()...

Mensagem por asimoes »

Olá Elvio,

Eu uso desta forma sem problemas

Código: Selecionar todos

  REQUEST HB_LANG_PT
  REQUEST HB_CODEPAGE_PT850
  HB_LANGSELECT("PT")
  HB_CDPSELECT( "PT850" )
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
elvio.tche
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 09 Nov 2006 08:36

Falha ao mostrar acentuação no Sistema

Mensagem por elvio.tche »

Bom, o problema da acentuação é o que menos importa, pois se for o caso, eu removo a acentuação de todas as palavras em todos os prg's, talvez um pouco radical, mas, evita os caracteres "estranhos" para o usuário.
O mais importante, é o caso do parâmetro que envio ao executável para ajustes de configurações do sistema. Esse é o ponto que gostaria de resolver.
Estou em dúvida em relação ao "REQUEST": ele pode ser colocado em qualquer posição do programa fonte, ou deve ser definido antes da linha "function main(cParamIni)" ?
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Falha ao mostrar acentuação no Sistema

Mensagem por Pablo César »

... o sistema é compilado e recebo a seguinte mensagem:
Error BASE/1003 Variable does not exist: CPARAMINI
Called from VIDEO(51)
Se o problema também é a variável do parâmetro (talvez quando não é passado parâmetro algum), adicione o reforço para que a variável não fique NIL.

Código: Selecionar todos

Function Main(cParamIni)
If cParamIni=Nil
   cParamIni=""
Endif
Estou em dúvida em relação ao "REQUEST": ele pode ser colocado em qualquer posição do programa fonte, ou deve ser definido antes da linha "function main(cParamIni)" ?
Tanto faz, o certo é colocá-los bem no início antes para que possa carrega-los e faezr o uso o quanto antes. Podem ficar antes do Function Main.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
elvio.tche
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 09 Nov 2006 08:36

Falha ao mostrar acentuação no Sistema

Mensagem por elvio.tche »

Boa, o "reforço" condicional vai muito bem.

O Editor que utilizo para trabalhar com os fontes ".prg" é o notepad++. Faço o ajuste, via meu, para:
Formatar -> Conjunto de Caracteres -> Europa Ocidental -> OEM 850.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Falha ao mostrar acentuação no Sistema

Mensagem por JoséQuintas »

Comentário:
Aqui eu faço backup dos meus HDs, e baixo MP3.
Nisso o Windows já dá problema com caracteres acentuados, ou estrangeiros, chegando até a travar programas e a lixeira do próprio Windows.
Por essas e outras, eu não permito acentuação no sistema.
E não coloco acentuação nos MP3.... rs

E pra complicar:
Em DBF/DOS acentuação é de um jeito
No Windows é de outro
No MySql é de outro

O fuso horário é outro problema que anda no mesmo caminho.
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/
elvio.tche
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 09 Nov 2006 08:36

Falha ao mostrar acentuação no Sistema

Mensagem por elvio.tche »

Pois é, penso seriamente em "proibir" e remover a acentuação dos sistemas, justamente pelas dificuldades e diferentes tratamentos que os programas fornecem e tratam esses caracteres.
Por hora, vou deixar tudo como está e vou pensar sobre o que vou fazer.
Valeu.
Responder