RestScreen() falhando com UTF8
Moderador: Moderadores
RestScreen() falhando com UTF8
As melhorias do José são boas, para mim este foi um exercício interessante, até me ajudou a relembrar algumas idéias perdidas no tempo, realmente foi divertido.
A idéias de colocar textura ficou interessante, deu um "ar" legado ao programa apesar que eu pessoalmente preferir mais o estilo "liso":
A idéias de colocar textura ficou interessante, deu um "ar" legado ao programa apesar que eu pessoalmente preferir mais o estilo "liso":
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.
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
RestScreen() falhando com UTF8
Developer, qual o código vc usou ? Desenhou os quadros digitando ALT + Chr(xxx) ? Meu problema está justamente nisso, desenhar os quadros e acentuar as telas.
Fernando
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
RestScreen() falhando com UTF8
Quintas, obrigado pelas sugestões. Não consegui entender o funcionamento da função Confirma. Se opc retorna sempre 1 como vai saber quando a opção for 2 ?
Quanto ao recebimentos dos parâmetros na função Tela(cEmpresa, cSistema) foi esquecimento na digitação. Obrigado.
Quanto ao recebimentos dos parâmetros na função Tela(cEmpresa, cSistema) foi esquecimento na digitação. Obrigado.
Fernando
RestScreen() falhando com UTF8
Rapaz, deu um trabalho adicionar assinatura pois não funcionava de jeito nenhum, finalmente consegui! Agora o nome aparece também.Developer, qual o código vc usou ? Desenhou os quadros digitando ALT + Chr(xxx) ? Meu problema está justamente nisso, desenhar os quadros e acentuar as telas.
Não uso ALT, sendo que isso só funciona se você usar um editor de código em CP437 (EN) que não é o meu caso (exceto quando tenho que editar algum código antigo que foi feito naquele editor), então acabo tendo que usar CHR()
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.
-
alxsts
- Colaborador

- Mensagens: 3092
- Registrado em: 12 Ago 2008 15:50
- Localização: São Paulo-SP-Brasil
RestScreen() falhando com UTF8
Olá!
A forma mais fácil de desenhar um Box na tela é usando a função DispBox(). Os conjuntos de caracteres usados para o contorno dos boxes estão no arquivo "Box.ch", e são formados por 8 caracteres cada. O arquivo, por padrão, fica na pasta include. É possível adicionar um nono caracteres à string, que servirá para preencher o interior do Box.Softwhouse escreveu:Developer, qual o código vc usou ? Desenhou os quadros digitando ALT + Chr(xxx) ?
Código: Selecionar todos
#include "Box.ch"
Function Main()
// Desenhar um Box com bordas simples, preenchido com espaços
DispBox( 0, 0, MaxRow(), MaxCol, B_SINGLE + Space( 1 ) )
Inkey(0)
RETURN NILRepare que o retorno da função é uma expressão lógica... não retorna sempre 1 e sim um valor .T. ou .F. É equivalente a:Softwhouse escreveu:Se opc retorna sempre 1 como vai saber quando a opção for 2 ?
Código: Selecionar todos
If nOpc == 1
RETURN .T.
Else
RETURN .F.
EndifDispBox
Displays a box on the screen.
Syntax
DispBox( <nTop>, <nLeft>, <nBottom>, <nRight>, ;
[<cnBoxString>] , [<cColor>] ) --> NIL
Arguments
<nTop> and <nLeft> : screen coordinates for the upper left corner of the DispBox()output
<nBottom> and <nRight> : screen coordinates for the lower right corner of the DispBox()output
<cnBoxString> : The appearance of the box to display can either be specified as numeric 1 (single line box), numeric 2 (double line box), or as a character string holding up to nine characters. The first eight characters define the border of the box while the ninth character is used to fill the box. #define constants to be used for <cnBoxString> are available in the BOX.CH #include file.
Pre-defined box strings for DispBox()
Constant Description
--------------- ----------------------------------------
B_SINGLE Single-line box
B_DOUBLE Double-line box
B_SINGLE_DOUBLE Single-line top, double-line sides
B_DOUBLE_SINGLE Double-line top, single-line sides
If no <cnBoxString> is specified, a single-line box is drawn. <cColor> : SetColor() compliant color string; default is the standard color of SetColor().
Return
DispBox() returns always NIL.
Description
The function DispBox() displays a box on the screen as specified with <cnBoxString>, using the standard color of SetColor() or <cColor>, if specified.
If a character string is used for <cnBoxString>, the first eight characters define the border of the box in clockwise direction, beginning with the upper left corner. An optional ninth character fills the area inside the box. Alternatively, a single character can be passed which is used to draw the entire box border. When the box is completely drawn, the cursor is positioned at the coordinates <nTop>+1 and <nLeft>+1, so that a subsequent DispOut() call starts displaying in the upper left corner of the box area.
Example
// The example demonstrates how characters are used to draw a box.
// Alphabetic characters define <cnBoxString> instead of characters
// holding graphic signs.
#include "Box.ch"
PROCEDURE Main
CLS
DispBox( 10,10,20,50, "AbCdEfGhi", "W+/R" )
Inkey(0)
DispBox( 10,10,20,50, B_DOUBLE + Space(1) )
DispOut( "Using #define constant" )
[]´s
Alexandre Santos (AlxSts)
Alexandre Santos (AlxSts)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Opcionalmente voce pode criar funções MsgYesNo() e MsgNoYes().
Uma com default em SIM e outra com default em NÃO.
Sim retorna .T.
Não retorna .F.
Também não precisa colocar IF MsgYesNo( "xxx" ) == .T.
Retorno idêntico nas duas, pra não ficar preso a retornos diferentes.
Costumo usar funções padrão com nome em inglês, pra facilitar post em fórum internacional.
Pra algumas LIBs isso dá conflito, porque elas também usam kkkk
Opcionalmente também, se for Windows, tem a Messagebox() da API Windows, na lib hbwin do harbour.
Então... no final, aproveitar tela é relativo.
Com a mensagem da API Windows, não precisa salvar/restaurar tela por exemplo.
Se for GTWVG, ela tem o Alert() também.
E por aí vai.
De repente, quebrando a cabeça à toa pra manter caracteres especiais, salvar/restaurar tela, etc.
Uma com default em SIM e outra com default em NÃO.
Sim retorna .T.
Não retorna .F.
Código: Selecionar todos
IF MsgYesNo( "xxxx" )
Retorno idêntico nas duas, pra não ficar preso a retornos diferentes.
Costumo usar funções padrão com nome em inglês, pra facilitar post em fórum internacional.
Pra algumas LIBs isso dá conflito, porque elas também usam kkkk
Opcionalmente também, se for Windows, tem a Messagebox() da API Windows, na lib hbwin do harbour.
Código: Selecionar todos
FUNCTION MsgYesNo( cText )
LOCAL lValue
//hb_ThreadStart( { || PlayText( cText ) } )
lValue := wapi_MessageBox( wapi_GetActiveWindow(), cText, AppEmpresaApelido() + " Confirmação", WIN_MB_YESNO + WIN_MB_ICONQUESTION + WIN_MB_DEFBUTTON2 + WIN_MB_TOPMOST ) == WIN_IDYES
RETURN lValue
FUNCTION MsgExclamation( cText )
//hb_ThreadStart( { || PlayText( cText ) } )
wapi_MessageBox( wapi_GetActiveWindow(), cText, AppEmpresaApelido() + " Atenção", WIN_MB_ICONASTERISK + WIN_MB_TOPMOST )
RETURN Nil
FUNCTION MsgWarning( cText )
//hb_ThreadStart( { || PlayText( cText ) } )
wapi_MessageBox( wapi_GetActiveWindow(), cText, AppEmpresaApelido() + " Atenção", WIN_MB_ICONEXCLAMATION + WIN_MB_TOPMOST )
RETURN Nil
FUNCTION MsgStop( cText )
//hb_ThreadStart( { || PlayText( cText ) } )
wapi_MessageBox( wapi_GetActiveWindow(), cText, AppEmpresaApelido() + " Atenção", WIN_MB_ICONHAND + WIN_MB_TOPMOST )
RETURN Nil
Com a mensagem da API Windows, não precisa salvar/restaurar tela por exemplo.
Se for GTWVG, ela tem o Alert() também.
E por aí vai.
De repente, quebrando a cabeça à toa pra manter caracteres especiais, salvar/restaurar tela, etc.
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Também em GTWVG você tem o recurso de janelas.
Pra usar o termo GUI, podemos chamar de DIALOGS.
É o fim de usar save/restore screen.
E já separa as "dialogs" da mesma forma que vai precisar fazer com lib GUI.
Faço uso restrito disso, mas nada impede usar no aplicativo inteiro.
Pra usar o termo GUI, podemos chamar de DIALOGS.
É o fim de usar save/restore screen.
E já separa as "dialogs" da mesma forma que vai precisar fazer com lib GUI.
Faço uso restrito disso, mas nada impede usar no aplicativo inteiro.
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/
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
RestScreen() falhando com UTF8
Sim, mas qual código usou ? Aquí configurei o Notepad++ p/ 8859-1 e no fonte coloquei REQUEST HB_CODEPAGE_PTISO e HB_SETCODEPAGE('PT_ISO') e não funcionou, configurei o Notepad++ para ANSI e também não deu certo.Não uso ALT, sendo que isso só funciona se você usar um editor de código em CP437 (EN) que não é o meu caso (exceto quando tenho que editar algum código antigo que foi feito naquele editor), então acabo tendo que usar CHR()
Fernando
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Pera aí... é harbour ou xharbour ?
E tem mais outra pra ficar feliz:
Ao postar o fonte no fórum, corre o risco dele virar UTF-8, deixa de ser o fonte original.
Codepage aí... ferrou...
E tem mais outra pra ficar feliz:
Ao postar o fonte no fórum, corre o risco dele virar UTF-8, deixa de ser o fonte original.
Codepage aí... ferrou...
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
Sei lá se WVT tem tratamento especial...hbmk2 -find codepage
gtwvg.hbc (installed):
wvt_SetCodepage()
gtwvw.hbc (not installed):
wvw_SetCodepage()
xhb.hbc (installed):
hb_SetCodepage()
Harbour core (installed):
...
Mas hb_SetCodePage() é compatibilidade com xharbour, essa lib deve ser evitada ao máximo.
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
RestScreen() falhando com UTF8
E na dúvida....
Pelo menos nessa eu sei que funciona conforme padrão.
Código: Selecionar todos
PROCEDURE HB_GTSYS
REQUEST HB_GT_WVG_DEFAULT
RETURN
Código: Selecionar todos
Set( _SET_CODEPAGE, "PTISO" )
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
Não uso o Notepad++, estou usando o VSCode, sugiro você escolher o encoding que preferir, não tem que ser o ISO 8859-1 mas eu acho este a melhor escolha para o seu caso, porém pode ser qualquer um: ANSI, CP437, UTF-8, apenas mantenha tudo no mesmo código escolhido, inclusive o editor, assim não terá problemas e não ficará confuso, é uma boa prática (diria até essencial) ter uma definição clara do que vai fazer e manter-se naquilo (é bom documentar), faça o trabalho limpo que ficará mais fácil para você no futuro.Sim, mas qual código usou ? Aquí configurei o Notepad++ p/ 8859-1 e no fonte coloquei REQUEST HB_CODEPAGE_PTISO e HB_SETCODEPAGE('PT_ISO') e não funcionou, configurei o Notepad++ para ANSI e também não deu certo.
Código: Selecionar todos
B_DOUBLE
CHR(199)
CHR(182)
CHR(179)
CHR(209)
CHR(207)
CHR(197)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.
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
RestScreen() falhando com UTF8
Quintas, estou usando Harbour.
Mário, não entendeu. O Editor está configurado como?
ANSI ?
ISO 8859-1 ?
No código fonte colocou o o que ?
REQUEST HB_CODEPAGE_PTISO ?
HB_CDPSELECT('PTISO')
REQUEST HB_CODEPAGE_PT850 ?
HB_CDPSELECT(PT850) ?
Pode colocar seu código fonte ?
Mário, não entendeu. O Editor está configurado como?
ANSI ?
ISO 8859-1 ?
No código fonte colocou o o que ?
REQUEST HB_CODEPAGE_PTISO ?
HB_CDPSELECT('PTISO')
REQUEST HB_CODEPAGE_PT850 ?
HB_CDPSELECT(PT850) ?
Pode colocar seu código fonte ?
Fernando
RestScreen() falhando com UTF8
ISO 8859-1O Editor está configurado como?
Veja na imagem, usando VSCode, ISO 8859-1 (canto inferior direito):
No código fonte colocou o o que ?
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
HB_CDPSELECT('PTISO')O código fonte é o seu próprioPode colocar seu código fonte ?/
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.
-
Softwhouse
- Usuário Nível 3

- Mensagens: 324
- Registrado em: 07 Dez 2011 18:44
- Localização: Porto Alegre/RS
RestScreen() falhando com UTF8
Pois é, desta forma não funciona no NotePad++, acentua corretamente mas os caracteres para desenho das telas não funcionam.
Fernando