Página 2 de 5
Livro (e-book) Harbour
Enviado: 15 Ago 2016 09:22
por JoséQuintas
seu exemplo:
Código: Selecionar todos
REQUEST HB_CODEPAGE_UTF8EX
PROCEDURE Main()
LOCAL nValor1 := nValor2 := 0
hb_cdpSelect( "UTF8EX" )
? "Introduza dois números para que eu realize as quatro oper.: "
INPUT "Introduza o primeiro valor : " TO nValor1
INPUT "Introduza o segundo valor : " TO nValor2
? "Adição......... : ", nValor1 + nValor2
? "Subtração...... : ", nValor1 - nValor2
? "Multiplicação.. : ", nValor1 * nValor2
? "Divisão........ : ", nValor1 / nValor2
RETURN
resultado na tela:

- test.png (8.85 KiB) Exibido 4800 vezes
Livro (e-book) Harbour
Enviado: 15 Ago 2016 09:34
por JoséQuintas
O erro -w3 -es2 me enganei, seria este, mas a declaração também está repetida, não percebi esse detalhe.
Código: Selecionar todos
/*
Onde está o erro ?
*/
PROCEDURE MAIN()
LOCAL x, y, x // Número a ser inserido
x := 5
y := 10
x := 20
RETURN
Código: Selecionar todos
test.prg(5) Error E0003 Duplicate variable declaration 'X'
seria diferente disto, que só acusa em -w3 -es2:
Código: Selecionar todos
/*
Onde está o erro ?
*/
PROCEDURE MAIN()
LOCAL x, y // Número a ser inserido
x := 5
y := 10
x := 20
RETURN
Código: Selecionar todos
d:\temp>hbmk2 test -w3 -es2
hbmk2: Processing environment options: -comp=msvc
Harbour 3.4.0dev (b6c8382) (2016-08-12 12:06)
Copyright (c) 1999-2016, http://github.com/vszakats/harbour-core/
Compiling 'test.prg'...
test.prg(11) Warning W0032 Variable 'X' is assigned but not used in function 'MAIN(6)'
test.prg(11) Warning W0032 Variable 'Y' is assigned but not used in function 'MAIN(7)'
test.prg(11) Warning W0032 Variable 'X' is assigned but not used in function 'MAIN(8)'
Livro (e-book) Harbour
Enviado: 15 Ago 2016 12:00
por JoséQuintas
Aproveitando....
Algo que não serve apenas para o ebook:
Como está o UTF-8 no Harbour?
Dá pra definir como codepage padrão e tudo é convertido automático?
E a parte mais complicada:
Como fica pra arquivos?
Provavelmente NÃO vai dar pra usar tranquilamente com DBFs.
Lembrando que UTF-8 não tem tamanho fixo, o que é o oposto do DBF.
Comunicação com bancos, provavelmente complica também no uso de TXT.
E no fonte?
Sei que o Harbour aceita compilar fonte em UTF-8.
Mas como trata os caracteres? se for definida outra codepage, os caracteres são convertidos automaticamente?
Livro (e-book) Harbour
Enviado: 15 Ago 2016 16:25
por Vlademiro
Para quem já tem sistemas grandes em DBF talvez não compense o trabalho de converter para UTF-8,
mas eu uso um DBU que eu compilei e ele funciona normalmente visualizando e salvando em UTF-8. Agora, cada campo
acentuado ocupa duas posições no DBF (e em qualquer banco). Por isso tem que deixar uns espaços de sobra no campo.
Quanto a converter automaticamente eu tenho quase certeza que o Harbour não faz isso. Até penso que
nenhuma linguagem faz isso automaticamente. Por exemplo, se eu salvar um arquivo no Notepad++ em ANSI
e acentuar corretamente, e depois converter para UTF8 ele vai gerar uns caracteres estranhos. Para ele converter
ele teria que identificar qual o formato anterior do arquivo para gerar no que eu quero (UTF-8).
O Harbour precisa que a outra ponta (um servidor SQL, um arquivo texto, etc.) já esteja em UTF8, aí fica tudo blz. Se não for, tem
que converter com as funções de conversão que vem com ele. Não sei se foi esse realmente o seu questionamento.
Quanto àqueles caracteres estranhos (coração, etc.) que apareceram no seu código, tem que ver se
o editor que vc utilizou tem suporte a UTF-8 e ele está ativado. Basicamente é a mesma coisa que o ANSI, só tem
que ver isso. No Notepad++ da pra mudar nos menus. Resumindo, o fonte precisa estar em UTF-8 também.
Se o público alvo principal fosse o pessoal que tem sistemas em DBF o padrão seria outro. Mas não quero ficar devendo
em nada as outras linguagens. Lá onde eu trabalho tem programador de todo o tipo : C, C++, Java, C#, PHP, Ruby, Python e até umas
que eu nunca vi direito como R, LUA, Haskell e outras estranhas. Vou me informar com eles sobre a codificação usada por
eles. A minha visão é que os novos sistemas estão convergindo para esse padrão, mas posso estar enganado.
Quanto a questão do tipo de dado na inicialização (AS CHARACTER) :
Eu postei ontem no fórum de desenvolvedores (vi a sua postagem sobre o hb`MemoWrit) perguntando se esse recurso já está adiantado.
Tenho um certo receio de parecer chato perguntando essas coisas lá. Eles pode achar que eu estou cobrando algo. Mas mesmo assim eu
perguntei. Ainda não visitei lá hoje. Agora que minha NET voltou. Um caminhão derrubou a fiação aqui próximo e só voltou a energia agora a pouco.
Obrigado pela ajuda, está sendo de grande valia.
Livro (e-book) Harbour
Enviado: 16 Ago 2016 16:27
por Vlademiro
Alterei a codificação dos arquivos para ANSI.
Fiz um levantamento com o pessoal daqui do trabalho. Eu trabalho em um laboratório de pesquisa de mestrado e doutorado em computação.
O pessoal aqui usa UTF-8 para tudo. Mas eu vi que tem um motivo.
1 ) Como tem muito projeto novo o UTF-8 já é quase o caminho natural.
2 ) No Linux já é o padrão.
3 ) Na Web nem se fala.
Mas conversei tb com pessoas que trabalham em empresas e eles disseram que tem problemas com codificações, mas que isso faz parte do
processo de mudança.
Verifiquei também que os editores de programação quando instalados não vem com o UTF-8 como padrão.
Enfim, pra não complicar a cabeça do iniciante eu alterei tudo pra ANSI e retirei as chamadas de UTF-8 no código, mas vou ter que criar
um apêndice ensinando o usuário a portar para UTF-8, que é aquela parte que já está feita, só que em um apêndice e algumas coisas a mais.
Eu testei aqui e deu certo, mas gostaria que alguém testasse os arquivo. Em anexo segue o zip com os códigos que digitei até agora.
Suas intervenções foram valiosas. O meu tempo agora é que está curto pois as aulas voltaram aqui na universidade e tá o maior corre corre.
Ontem aqui foi feriado municipal, por isso me dediquei mais ao projeto do livro. Mas vou reduzir o ritmo nos próximos dias.
Obrigado.
Livro (e-book) Harbour
Enviado: 16 Ago 2016 16:30
por Vlademiro
Ia esquecendo.
Usei esse software para converter em lote os arquivos
https://sourceforge.net/projects/cp-converter/
Livro (e-book) Harbour
Enviado: 16 Ago 2016 17:32
por JoséQuintas
Não entendi.
Esses fontes não vão estar dentro do e-book, como texto?
Ou vão ser arquivos anexos?
Livro (e-book) Harbour
Enviado: 16 Ago 2016 17:47
por Vlademiro
Vão ficar no ebook como texto, mas eu quero que vc me confirme se está ok. Eu não testei.
Livro (e-book) Harbour
Enviado: 16 Ago 2016 17:48
por Vlademiro
O projeto atualizado esta la em casa. Estando ok eu compilo e gero outro pdf.
Livro (e-book) Harbour
Enviado: 16 Ago 2016 17:49
por Vlademiro
Tô meio lento hoje. Porisso ta saindo a prestação as mensagens.
Quando eu disse compilo de novo e gero eu quis dizer compilo no ambiente do latex, não no harbour.
Livro (e-book) Harbour
Enviado: 16 Ago 2016 22:20
por Vlademiro
Pessoal,
Estou tendo problemas com a conversão para ANSI que eu fiz.
Veja o código abaixo.
Código: Selecionar todos
/*
Uso de alltrim
*/
PROCEDURE MAIN
LOCAL cNome , cSobreNome
cNome := " José "
cSobreNome := " Quintas "
? "Concatenando o nome e o sobrenome sem ALLTRIM"
? cNome + " " + cSobreNome
? "Agora concatenando com ALLTRIM"
cNome := AllTrim( cNome )
cSobreNome := AllTrim( cSobreNome )
? cNome + " " + cSobreNome
RETURN
No editor xEdit está em ANSI.

- Rodapé xEdit Ansi.png (5.48 KiB) Exibido 4755 vezes
Eu pensei que bastava compilar e pronto, os acentos apareceriam.

- Tela_execução_WindowsXP.png (3 KiB) Exibido 4755 vezes
Obrigado antecipadamente.
Livro (e-book) Harbour
Enviado: 17 Ago 2016 07:00
por Toledo
Amigo, se não for especificado a linguagem e CodePage, o default será o Inglês.
HB_SetCodePage()
By default, code page 437 for the English language is selected. (Português é PT850 ou PTISO)
HB_LangSelect()
By default, the English language is selected. (Português é PT)
Abraços,
Livro (e-book) Harbour
Enviado: 17 Ago 2016 11:09
por Vlademiro
Obrigado, você como sempre é preciso nas suas observações.
Funcionou conforme o código abaixo
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
PROCEDURE MAIN()
HB_SETCODEPAGE("PTISO")
? "áéíúóãç´`EÍÓ"
RETURN
Agora, o que eu notei é que compilar com suporte a UTF-8 é mais simples do que compilar com suporte a ANSI.
Quando fui executar o exemplo acima, o harbour que eu utilizo (3.2) reportou o seguinte :
hbmk2 testecod
hbmk2: Dica: Adicionar opção 'xhb.hbc' faltando nas funções: hb_SetCodepage()
aí tive que fazer assim : hbmk2 testecod xhb.hbc para poder incluir essa lib adicional.
Com suporte a UTF-8 não precisa incluir nenhuma lib extra. Bem mais simples para o iniciante.
Valeu.
Livro (e-book) Harbour
Enviado: 17 Ago 2016 11:27
por Jairo Maia
Olá Vlademiro,
Primeiro parabéns pela iniciativa, como já demonstrei curtindo sua postagem inicial, mas permita-me uma observação:
Se o objetivo desse trabalho é inicialmente atingir brasileiros (pois está em português), aconselho iniciar usando: HB_CdpSelect( "PT850" ).
Se você iniciar o aprendiz usando PTISO, terá que conjuntamente ensinar a usar um drive GT, pois será necessário usar o comando: Hb_GtInfo( HB_GTI_COMPATBUFFER, .f. ).
Se não fizer isso, ao usar SaveScreen() e RestScreen() a tela irá desconfigurar.
Livro (e-book) Harbour
Enviado: 17 Ago 2016 12:21
por Vlademiro
Obrigado Jairo, funcionou sem precisar de libs.
Ficou assim
Código: Selecionar todos
/*
Comandos ? e ??
*/
REQUEST HB_CODEPAGE_PT850
PROCEDURE MAIN()
HB_CdpSelect( "PT850" )
? "áéíóúçÇ"
RETURN
Também já converti os exemplos.
Aproveitando o assunto, estava pensando em preparar um ambiente com o harbour e com um editor de textos para distribuir juntamente com a aplicação.
Alguma sugestão sobre qual editor usar ? Eu uso o xEdit, mas sei que tem ótimos editores. Queria um que já destacasse a sintaxe e que pudesse abrir os códigos (que eu já converti para PT850) sem precisar de maiores alterações. De preferência, mas não necessariamente, portable para ser distribuido junto com a linguagem.
Valeu gente