No notepad++ acho que tem que selecionar a codepage correta (codepage, collation, sei lá como chamam)
Aqui uso Programmers Notepad: ou é ANSI ou é UTF-8, não tem nada sobre codepage.
Por ANSI, acredito que seja o default do Windows, do país aonde o Windows está sendo usado.
RestScreen() falhando com UTF8
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
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/
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/
RestScreen() falhando com UTF8
Bem, não uso NotePad++ mas e se você mudar tudo para CP437? Por que não tentar?Pois é, desta forma não funciona no NotePad++, acentua corretamente mas os caracteres para desenho das telas não funcionam.
E é claro, remova tudo que tem haver com codepage no seu código (remove PTISO), deixa sem nada que já vai ser o CP437, já que é o padrão do Clipper e consequentemente do Harbour.
Mario
Especializado em projetos de TI, suporte técnico, consultoria, freelancer, gestão de tráfego web.
Especializado em projetos de TI, suporte técnico, consultoria, freelancer, gestão de tráfego web.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Programmers Notepad.
Ou é ANSI ou UTF-8.
Como ANSI tem codepage, suponho que use a mesma do Windows em uso, no meu caso PT-BR.
PNotepad ou bloco de notas.
As letras acentuadas estão idênticas.
No aplicativo PTISO, tudo idêntico.
MySQL idem.
Sei lá...
Tudo compatível.
Outra codepage pra que ?
Windows 10.
A Microsoft anda alterando EDIT e NOTEPAD pra outros formatos.
Aproveita enquanto tem referência pra acertar isso.
Quer conferir a codepage do programa ?
O que aparecer na tela é o que vai poder usar no fonte.
Essa WVT tá bagunçando as coisas ?
Troque pra WVG
Sei lá porque tem fonte que usa isto
Será harbour ? será compilador C ? Será WVT ? Será o raio que o parta ?
Sei lá...
Baixe o Programmers Notepad, use como ANSI.
Edite o fonte.
Compile com WVG.
Saiu certo ?
Agora troque pra WVT.
Saiu certo ? se não saiu troque pra WVG.
Se saiu certo, agora vá no notepad++
Veja se alguma codepage serve
Saiu certo ? se não saiu troque pra PNotepad.
Se com nenhuma funciona, decida o que vai fazer.
Ou usa CHR() e não o caractere direto, ou sei lá o que.
Use o harbour, filtre os caracteres do fonte pra chegar nos que dão problema:
Vai filtrando até só sobrarem os caracteres especiais.
Veja se a letra da tela bate com o que está no fonte.
O pipino é seu, no seu ambiente, com as suas ferramentas.
Use suas ferramentas pra descobrir sobre o pipino.
Se não resolver com as suas ferramentas.... troque de ferramenta.
E compile esse fonte de teste com -w3 -es2 pra garantir que os #defines estão certos.
Com variável errada, dá resultado errado.
Ou é ANSI ou UTF-8.
Como ANSI tem codepage, suponho que use a mesma do Windows em uso, no meu caso PT-BR.
PNotepad ou bloco de notas.
As letras acentuadas estão idênticas.
No aplicativo PTISO, tudo idêntico.
MySQL idem.
Sei lá...
Tudo compatível.
Outra codepage pra que ?
Windows 10.
A Microsoft anda alterando EDIT e NOTEPAD pra outros formatos.
Aproveita enquanto tem referência pra acertar isso.
Quer conferir a codepage do programa ?
Código: Selecionar todos
FOR nCont = 1 TO 255
?? Chr( nCont )
NEXT
Essa WVT tá bagunçando as coisas ?
Troque pra WVG
Sei lá porque tem fonte que usa isto
Código: Selecionar todos
WVT_SetCodepage( 255 )
Sei lá...
Baixe o Programmers Notepad, use como ANSI.
Edite o fonte.
Compile com WVG.
Saiu certo ?
Agora troque pra WVT.
Saiu certo ? se não saiu troque pra WVG.
Se saiu certo, agora vá no notepad++
Veja se alguma codepage serve
Saiu certo ? se não saiu troque pra PNotepad.
Se com nenhuma funciona, decida o que vai fazer.
Ou usa CHR() e não o caractere direto, ou sei lá o que.
Use o harbour, filtre os caracteres do fonte pra chegar nos que dão problema:
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
#include "hbgtinfo.ch"
#include "set.ch"
PROCEDURE Main
LOCAL cLetra
SetMode(33,100)
CLS
SET( _SET_CODEPAGE, "PTISO" )
cTexto := MemoRead( "fonte.prg" )
FOR EACH cLetra IN cTexto
DO CASE
CASE cLetra $ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
CASE cLetra $ "abcdefghijklmnopqrstuvwxyz"
CASE cLetra == Chr(13)
CASE cLetra == Chr(10)
CASE cLetra $ "()[]+-,.0123456789"
OTHERWISE
? Asc( cLetra ), cLetra, Substr( cTexto, Max( 1, cLetra:__EnumIndex() - 10 ), 20 )
ENDCASE
NEXT
Inkey(0)
RETURN
Veja se a letra da tela bate com o que está no fonte.
O pipino é seu, no seu ambiente, com as suas ferramentas.
Use suas ferramentas pra descobrir sobre o pipino.
Se não resolver com as suas ferramentas.... troque de ferramenta.
E compile esse fonte de teste com -w3 -es2 pra garantir que os #defines estão certos.
Com variável errada, dá resultado errado.
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/
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/
RestScreen() falhando com UTF8
O José tem razão, tem que procurar o que é o problema aí, se preferir posso dar suporte remoto e resolver 100% para você.
inclusive é bem parecido com o Programmers Notepad neste quesito.
Segue abaixo o código fonte em CP437 (editado pelo Microsoft Visual Studio Code "VSCode"):
Compilado assim:
O código integral segue abaixo. Tente compilar conforme instruido, sem abrir o fonte, não altere nada, veja o que acontece.
Segue ainda o EXE - tem que renomear de teste.txt -> teste.exe pois o forum bloqueia .EXE (compactado com UPX - possivelmente o seu PC vai identificar como vírus, dizendo que é um cavalo de troia, que vai fazer isso, aquilo, etc... Acontece frequentemente com .EXE compactado com UPX, mas fique tranquilo que não é virus)
Esta minha sugestão acima não vai funcionar para você, pois verifiquei e o Notepad++ não tem CP437, tem apenas:...mas e se você mudar tudo para CP437?
inclusive é bem parecido com o Programmers Notepad neste quesito.
Segue abaixo o código fonte em CP437 (editado pelo Microsoft Visual Studio Code "VSCode"):
Código: Selecionar todos
// CP437
#include 'box.ch'
#include 'inkey.ch'
#include 'hbgtinfo.ch'
Request HB_GT_WVT_DEFAULT
///////////////////////////////////////
PROCEDURE Main()
Public cSistema:= 'SISTEMA TESTE'
Public cEmpresa:= 'EMPRESA ABC'
SETMODE(25,80)
HB_GTINFO(HB_GTI_ISFULLSCREEN, .T.)
HB_GTINFO(HB_GTI_FONTNAME, 'Lucida Console')
hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )
Set Century On
Set Date BRITISH
Set ScoreBoard Off
Set Wrap On
Tela(cEmpresa,cSistema)
SetCursor(0)
SetColor( 'W/N*')
@ 04, 04, MaxRow()-3, MaxCol()-5 BOX B_DOUBLE + Space( 1 )
@ 06, 04, 06, MAXCOL()-5 BOX B_SINGLE
@ 06,04 SAY CHR(199)
@ 06,MAXCOL()-5 SAY CHR(182)
@ 04,39,MAXROW()-3,39 BOX CHR(179)
@ 04,39 SAY CHR(209)
@ MAXROW()-3,39 SAY CHR(207)
@ 06,39 SAY CHR(197)
Do While .T.
If InKey() == 27
If Confirma('Abandonar o sistema ?')==1
Return
EndIf
EndIf
EndDo
RETURN
///////////////////////////////////////
Function Tela()
SetColor('N/N*')
@ 02,00 CLEAR TO 23,79
SetColor('W+/N')
@ 00,01 Say SubStr(cEmpresa,1,27)
@ 00,27 Say '|'
@ 00,28 Say PadC(cSistema,30)
@ 00,57 Say '|'
@ 00,59 Say Date()
@ 00,70 Say '|'
@ 01,00 Say Replicate( ' ', 80 ) Color 'N/W*'
@ 24,00 Say Replicate( ' ', 80 ) Color 'N/W*'
Return(Nil)
///////////////////////////////////////
Function Confirma(cTexto)
Local cOldTela:= SaveScreen(24,00,24,79)
cColor:= SetColor('N/W*,W+/N')
nCol:= (80-Len(cTexto))/2-6
@24,00 Clear To 24,79
@24,nCol Say cTexto
@24,nCol+Len(cTexto)+2 Prompt 'Sim'
@24,nCol+Len(cTexto)+7 Prompt 'Não'
Menu To Confirm
SetColor(cColor)
RestScreen(24,00,24,79,cOldTela)
Return(Confirm)Código: Selecionar todos
hbmk2 testeMario
Especializado em projetos de TI, suporte técnico, consultoria, freelancer, gestão de tráfego web.
Especializado em projetos de TI, suporte técnico, consultoria, freelancer, gestão de tráfego web.
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Ué...
Não tem EUA e America Latina ?
Não era assim antes.
Não tem EUA e America Latina ?
Não era assim antes.
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/
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/
