Clipper On Line • Ver Tópico - Livro (e-book) Harbour

Livro (e-book) Harbour

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

Moderador: Moderadores

 

Livro (e-book) Harbour

Mensagempor JoséQuintas » 15 Ago 2016 09:22

seu exemplo:

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
test.png (8.85 KiB) Visualizado 385 vezes
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9208
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 15 Ago 2016 09:34

O erro -w3 -es2 me enganei, seria este, mas a declaração também está repetida, não percebi esse detalhe.

/*
Onde está o erro ?
*/
PROCEDURE MAIN()
LOCAL x, y, x // Número a ser inserido
x := 5
y := 10
x := 20

RETURN

test.prg(5) Error E0003  Duplicate variable declaration 'X'


seria diferente disto, que só acusa em -w3 -es2:

/*
Onde está o erro ?
*/
PROCEDURE MAIN()
LOCAL x, y // Número a ser inserido
x := 5
y := 10
x := 20

RETURN


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)'
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9208
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 15 Ago 2016 12:00

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?
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9208
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 15 Ago 2016 16:25

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.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 16:27

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.

Europa Ocidental (Windows) - 1252.zip
(35.42 KiB) Baixado 29 vezes


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.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 16:30

Ia esquecendo.

Usei esse software para converter em lote os arquivos https://sourceforge.net/projects/cp-converter/
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor JoséQuintas » 16 Ago 2016 17:32

Não entendi.
Esses fontes não vão estar dentro do e-book, como texto?
Ou vão ser arquivos anexos?
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9208
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 532 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 17:47

Vão ficar no ebook como texto, mas eu quero que vc me confirme se está ok. Eu não testei.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 17:48

O projeto atualizado esta la em casa. Estando ok eu compilo e gero outro pdf.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 17:49

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.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 16 Ago 2016 22:20

Pessoal,

Estou tendo problemas com a conversão para ANSI que eu fiz.
Veja o código abaixo.

/*
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
Rodapé xEdit Ansi.png (5.48 KiB) Visualizado 340 vezes


Eu pensei que bastava compilar e pronto, os acentos apareceriam.

Tela_execução_WindowsXP.png
Tela_execução_WindowsXP.png (3 KiB) Visualizado 340 vezes


Obrigado antecipadamente.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Toledo » 17 Ago 2016 07:00

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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Avatar de usuário

Toledo
Administrador

Administrador
 
Mensagens: 2922
Data de registro: 22 Jul 2003 18:39
Cidade/Estado: Araçatuba - SP
Curtiu: 205 vezes
Mens.Curtidas: 202 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 17 Ago 2016 11:09

Obrigado, você como sempre é preciso nas suas observações.
Funcionou conforme o código abaixo

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.
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Livro (e-book) Harbour

Mensagempor Jairo Maia » 17 Ago 2016 11:27

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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2023
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 221 vezes
Mens.Curtidas: 196 vezes

Livro (e-book) Harbour

Mensagempor Vlademiro » 17 Ago 2016 12:21

Obrigado Jairo, funcionou sem precisar de libs.

Ficou assim

/*
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
Avatar de usuário

Vlademiro
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 217
Data de registro: 11 Jul 2005 02:46
Curtiu: 2 vezes
Mens.Curtidas: 16 vezes

Anterior Próximo



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 5 visitantes


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro