Livro (e-book) Harbour

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Livro (e-book) Harbour

Mensagem 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
test.png (8.85 KiB) Exibido 4787 vezes
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Livro (e-book) Harbour

Mensagem 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)'
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/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Livro (e-book) Harbour

Mensagem 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?
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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.
Europa Ocidental (Windows) - 1252.zip
(35.42 KiB) Baixado 168 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 do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem por Vlademiro »

Ia esquecendo.

Usei esse software para converter em lote os arquivos https://sourceforge.net/projects/cp-converter/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Livro (e-book) Harbour

Mensagem 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?
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/
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem por Vlademiro »

Vão ficar no ebook como texto, mas eu quero que vc me confirme se está ok. Eu não testei.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem por Vlademiro »

O projeto atualizado esta la em casa. Estando ok eu compilo e gero outro pdf.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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.
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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
Rodapé xEdit Ansi.png (5.48 KiB) Exibido 4742 vezes
Eu pensei que bastava compilar e pronto, os acentos apareceriam.
Tela_execução_WindowsXP.png
Tela_execução_WindowsXP.png (3 KiB) Exibido 4742 vezes
Obrigado antecipadamente.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Livro (e-book) Harbour

Mensagem 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,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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.
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Livro (e-book) Harbour

Mensagem 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.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
Vlademiro
Usuário Nível 4
Usuário Nível 4
Mensagens: 752
Registrado em: 11 Jul 2005 02:46

Livro (e-book) Harbour

Mensagem 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
Responder