Página 3 de 5

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 17:16
por JoséQuintas
Vamos à prova:
Retorne o que estava antes, e altere isto em wvw_paint()

Código: Selecionar todos

FUNCTION WVW_Paint( nWinNum ) /* must be a public function */
//------------------ pra não dar erro - inicio
   IF ValType( s_aMiscObjList ) != "A"
      RETURN 0
   ENDIF
//-------------- pra não dar erro - fim
#if 0
 ldebug( ;
   "WVW_Paint:" + hb_eol() + ;
   "hWnd: " + hb_ntos( hWnd ) + hb_eol() + ;
   "nWinNum: " + hb_ntos( nWinNum ) )
#endif

 IF Len( s_amiscobjlist ) >= nWinNum + 1 // ESTA É A LINHA 2019

   AEval( s_amiscobjlist[ nWinNum + 1 ], {| e | Eval( e, nWinNum ) } )
 ENDIF
 wvwm_paint( nWinNum )
RETURN 0

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 17:20
por JoséQuintas
Ou apenas comente as linhas referentes ao uso da variável, já que pode ter erro em outras partes dos fontes.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 17:43
por JoséQuintas
Mais outro teste:
O problema é codepage e acentuação no say/get?

Lembra do Tudo em um???
Igual está lá funciona!!!

Código: Selecionar todos

REQUEST HB_CODEPAGE_PTISO

PROCEDURE Main
   SetMode( 25, 80 )
   Set( _SET_CODEPAGE, "PTISO" )
   @ 2, 2 SAY "Teste do José pra acentuação"
   Inkey(0)
   RETURN

Código: Selecionar todos

hbmk2 test gtwvw.hbc
testgtwvw.png
Agora que reparei:
PT850.... parece ser português de Portugal.

Código: Selecionar todos

REQUEST HB_CODEPAGE_PT850
REQUEST HB_LANG_PT

PROCEDURE Main
   SetMode( 25, 80 )
   hb_SetCodePage( "PT850" )
   hb_LangSelect( "PT" )
   @ 2, 2 SAY "Teste do José pra acentuação"
   Inkey(0)
   RETURN
gtwvwpt.png

Apesar de eu não ter notado isso antes, só lembrando meu post:
Precisa confirmar, mas provavelmente GTWVW aceita PTISO.
Se o fonte for digitado diretamente em PTISO, pronto tudo resolvido.
É abrir no bloco de notas e ver se lá as letras estão corretas.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 18:03
por JoséQuintas
Só não esqueça da wvw_paint(), que não tem nada a ver com o comando de codepage, e não deveria gerar mensagem de erro, e muito menos fazer diferença sobre em qual ordem está codepage.
Se lá tem erro, vai ter dar erro a qualquer hora em qualquer lugar.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 18:16
por JoséQuintas
Correção: 850 não é apenas de Portugal, mas de vários países da Europa.

harbour\doc\en\lang.txt

Código: Selecionar todos

      French                850            FR
      German                850            DE
      Italian               850            IT850
      Portuguese            850            PT850
      Portuguese            ISO-8859-1     PTISO
      Spanish               850            ES
      Swedish               850            SV850

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 18:49
por JoséQuintas
Apenas suposição:

Talvez ao trocar a codepage, o Harbour acabe forçando uma "repintada" da tela, e por isso dá erro em wvw_paint()
Isso explicaria fazer diferença da linha aonde está codepage.
Mesmo assim, não significa que codepage cause o erro, mas sim que faça o erro aparecer mais rápido.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 19:06
por JoséQuintas
Aqui o fonte demo.prg alterado com codepage.
Nenhum erro, mas a variável que mencionou está lá no fonte, sendo criada.

Detalhe importante: wvw_paint() no fonte principal. e a criação da variável também no fonte principal, no mesmo fonte de Main().
gtwvw.png
Seu fonte que dá erro está assim ou diferente?

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 19:41
por microvolution
ok... vamos responder a cada postagem do professor JQuintas.
JoséQuintas escreveu:Vamos à prova:
Retorne o que estava antes, e altere isto em wvw_paint()
voltei o CODEPAGE para uma linha antes do MAIN e alterei a função WVW_PAINT e gerou novamente o mesmo erro:
Data:02/03/2016 Horario: 19:07:58
Erro BASE/1003 Variable does not exist: S_AMISCOBJLIST

Called from WVW_PAINT(2023)
Called from WAPI_MESSAGEBOX(0)
Called from LBOXMESSAGE(2304)
Called from ABERTURA(3108)
Called from MAIN(535)
JoséQuintas escreveu:Expandir visualizacao
Ver codigo
1 REQUEST HB_CODEPAGE_PTISO
2
3 PROCEDURE Main
4 SetMode( 25, 80 )
5 Set( _SET_CODEPAGE, "PTISO" )
Coloquei as linhas acima, na verdade 2 apenas das linhas acima:
- REQUEST HB_CODEPAGE_PTISO antes do MAIN e
- SET(_SET_CODEPAGE,"PTISO") após o início do MAIN e depois das variáveis LOCALs.
Infelizmente o mesmo erro ocorreu...
Data:02/03/2016 Horario: 19:17:49
Erro BASE/1003 Variable does not exist: S_AMISCOBJLIST

Called from WVW_PAINT(2021)
Called from WAPI_MESSAGEBOX(0)
Called from LBOXMESSAGE(2302)
Called from ABERTURA(3106)
Called from MAIN(532)
Bom, pelo que "pouco entendo" o erro percorre um caminho e não tem nada a ver com sua continuação...
vamos às linhas. Primeiro, vamos ao início de tudo (linha 532):

Código: Selecionar todos

ABERTURA() // chamada à função de abertura de arquivos necessários dbfntx (o início do problema - pelo menos na lógica deveria ser assim e não o é)... prossigamos
3106 - dentro da função ABERTURA tem uma chamada à função boxmessage, contendo o seguinte conteúdo:

Código: Selecionar todos

     lboxmessage ('Atenção! Para continuar com este aplicativo, será necessário fechar o SiCCA ou quaisquer de seus Módulos Externos que estiverem aberto. Feche-o(s) antes de continuar... Este aplicativo precisa abrir arquivos em MODO EXCLUISVO. Após ter realizado esta verificação pressione [ENTER] ou clique em [OK] para prosseguir...')
a linha 3106, obviamente chama a linha 2302 que contém o seguinte dentro da função criada por nós para usar a API do windows. vejam:

Código: Selecionar todos

         wapi_MessageBox( wvw_GetWindowHandle(), cMsg , cTitle , WIN_MB_OK + WIN_MB_ICONINFORMATION + WIN_MB_SYSTEMMODAL )
Bom, até aqui o erro está na lógica que aprendi, percorrendo por onde ocorreu... mas, daqui pra frente, ou seja:
Called from WVW_PAINT(2021)
Called from WAPI_MESSAGEBOX(0)
ao chamar a WAPI_... ele já pula o raciocínio pra outra coisa completamente diferente... então quanto mais eu tento entender, gasto tempo energia e din din (aliás não tenho e só gasto) e não entendo nada, percebo que fico horas e horas numa coisa "tão boba" mas, sem lógica pra mim...
bom, ou mau, a linha 2021 é a que trata sobre a tal variável... então não faz sentido algum sequer... e só acontece com o SET_CODE_PAGE, inclusive o seu que acabei de colocar no início do main e depois, bem próximo ao final...
ah" a linha 2021, só pra relembrar:

Código: Selecionar todos

   IF ValType( s_aMiscObjList ) != "A"                // jquintas pctoledo 2/3/16w
ou seja, até a sua linha também está errada... se me permite. Se é pra descobrir se ela existe colocaria assim então:

Código: Selecionar todos

   hb_default(@s_aMiscObjList,"")
   IF empty( s_aMiscObjList )
Mas, mesmo assim, o erro, persiste...
volto a repetir... se não existir essa linha:

Código: Selecionar todos

   Set( _SET_CODEPAGE, "PTISO" )
não importa se é PTISO, PT, PMDB, PSDB, PV etc.... :)) só pra descontrair...
a "corrupção" é a mesma :D :D :D

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 19:50
por microvolution
JoséQuintas escreveu:Se lá tem erro, vai ter dar erro a qualquer hora em qualquer lugar.
mas não dá erro... só após colocar essa "B****" de CODEPAGE...
JoséQuintas escreveu: Correção: 850 não é apenas de Portugal, mas de vários países da Europa.
vivendo e aprendendo... estou sempre em construção.
JoséQuintas escreveu:Apenas suposição:
estamos quase no "supositório" de tanta "M****" que não sai...
JoséQuintas escreveu:Talvez ao trocar a codepage, o Harbour acabe forçando uma "repintada" da tela, e por isso dá erro em wvw_paint()
é isso q tenho falado desde o início.
JoséQuintas escreveu:Seu fonte que dá erro está assim ou diferente?
já coloquei em tudo quanto é lugar... só funciona sem erro se colocar no final do MAIN, como já postei anteriormente.
JoséQuintas escreveu:Detalhe importante: wvw_paint() no fonte principal. e a criação da variável também no fonte principal, no mesmo fonte de Main().
está do mesmo jeito...
inclusive, só pra relembrar, ela está antes do MAIN sendo criada e se colocar o codepage gera o erro

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 20:26
por JoséQuintas
Muita gente vai discordar....
Mas tem horas que o hbmk2 é uma merd....

Já aconteceu comigo várias vezes de alterar o fonte, e o hbmk2 não compilar o fonte alterado.

Por isso indiquei usar o rebuild.

Mas aqui eu apago é tudo que é temporário de uma vez, nem deixo essa parte pro hbmk2.

Eu uso -workdir=c:\temp

e apago todo c:\temp de vez em quando.

Então tente mais essa: forçar recompilar tudo, pra ter certeza de que o fonte que está no EXE é o mesmo que está na pasta.
hbmk2 seuprojeto.hbp -rebuild


E cuidado se for fazer igual a mim:
Ao colocar -workdir=c:\temp, se colocar em todos os projetos, vai estar misturando arquivos de projetos diferentes em c:\temp
Ao trocar de projeto tem que lembrar de apagar c:\temp


No momento não me vém mais nada à cabeça.
A principal é a seguinte: se o problema persistir, abandone a GTWVW, porque está gerando erro aonde não deve.

Quanto ao teste que fiz:

IF ValType( variavel ) != "A"

Se a variável for array, o retorno é "A"


Ou mais um teste:
Comente as linhas dentro de wvw_paint(), ou até a rotina inteira.
Não vai atualizar tela, mas tudo bem, é só pra teste.

Se o erro não sumir, sinal de que não está compilando o fonte alterado, ou algum outro problema.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 20:33
por JoséQuintas

Código: Selecionar todos

hb_default(@s_aMiscObjList,"")
 IF empty( s_aMiscObjList )
ERRADO!!!!!!
A variável não é string.


Putz....
Pensando bem...
O problema pode ser outro, vou fazer um teste aqui.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 20:39
por JoséQuintas
Pensei nisto, mas provavelmente a mensagem seria diferente.
o elemento sem conteúdo, e não a falta do array.

Código: Selecionar todos

PROCEDURE Main
   SetMode( 25, 80 )
   CLS
   oArray := Array(5)
   ? oArray[ 1 ]
   Inkey(0)
   RETURN
wvw_paint() usa o array pra "desenhar".
Não vi se todos os elementos do array possuem conteúdo.

Ou mais um teste:
Antes do setcodepage, pra forçar atualização:

Código: Selecionar todos

s_amiscobjlist := {}
inkey(1)
Se eu não resolvesse um problema desse tipo com uma LIB, eu abandonaria a LIB.

Tem como isolar a parte que gera erro pra eu compilar aqui?
Vai que é outro bug no seu Harbour.... rs
Nunca se sabe.... só acredito vendo.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 20:56
por JoséQuintas
Mais outra coisa:

Tudo bem que definiu errado no Harbour, a codepage 850.

Mas no editor de texto definiu a codepage 860.

De qualquer jeito, o fonte usava codepage diferente do programa.

Acredito que no editor de texto, pra PTISO, será a codepage 1252, mas não tenho certeza.
Por falta de opção, uso essa pra PDF e até agora tudo bem.

Eu nem sei qual é que eu uso, porque o editor de texto que uso já pega a default do Windows.

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 21:02
por JoséQuintas
Só pra constar:
pnotepad.png

GTWVW - acentuação português - caracteres especiais.

Enviado: 02 Mar 2016 23:25
por microvolution
Não sei o q acontece com esse harbour ou suas libs... só sei q penso q estou aprendendo e na verdade estou é me confundindo e perdendo muito tempo com coisas tão banais... no clipper, ou era ou não era.
Não tinha essas complicações q aqui acontecem...
Quanto ao -rubuild, por coincidência ou não, foi nesse pequeno aplicativo/teste que apliquei-o da outra vez que o nobre professor me ensinou e está assim até hoje, ou seja, toda compilação tem o -rebuild.
Bom, fiz o seguinte:
1 - coloquei o request uma linha antes do func MAIN:

Código: Selecionar todos

REQUEST HB_CODEPAGE_PT850     //    trabalhar com vários SOs e charsets pt_br
2 - coloquei o hb_setcodepage, depois de todos os objetos wvw_... serem criados ou sei lá o que, não entendi nada até agora mesmo... enfim, após o CLS e antes do primeiro @say (que não tinha acentuação e já funcionava):

Código: Selecionar todos

   HB_SetCodePage( "PT850" )                      // seleciona a página acima.							// 30/4/15w amigo Ivo/jquintas da internet
3 - meu Notepad++ está na configuração OEM:860 portuguese, pois assim, já aparece acentuação correta nos outros aplicativos/testes sem necessidade de CODEPAGE (da pqp=ponte q caiu rsrs)
4 - as linhas do @say q recebem acentuação, estão assim (para teste):
@ 11 - nTop, nColGet - nLeft + 04 SAY win_OEMTOANSI("< Período Inicial para Exclusão de PRESTAÇÕES Baixadas >")
@ 14 - nTop, nColGet - nLeft + 04 SAY "< Período Final para Exclusão de PRESTAÇÕES Baixadas >"
5 - vejam como essas linhas estão agora, na prática:
16-0302 - codificação2.png
Vou trocar o WIN_OEMTOANSI para WIN_ANSITOOEM pra ver q resultado dá...
enquanto isso, na bate-Harberna... vou fazer outros testes noutras coisas q estão pendentes também... e sem solução... até o presente momento
:-o :-O