Converter de Clipper para Harbour

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

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Leiam os posts sobre Linux!!! falam que já leram tudo mas fazem perguntas que já tem respostas.
https://pctoledo.org/forum/viewto ... =4&t=15027
Aqui mais perguntas, parecidas que já fizeram antes.
O pessoal não sabe p/ que serve o comando & no Linux.
\>minha_applinux& é diferente de rodar \>minha_applinux
https://www.mail-archive.com/harbour@ha ... 30894.html
http://ubuntuforums.org/showthread.php?t=2035652

Tem várias.

Código: Selecionar todos

#include "hbgtinfo.ch"
#include "inkey.ch"

PROCEDURE Main()

#if defined( __HBSCRIPT__HBSHELL )
   #if defined( __PLATFORM__WINDOWS )
      hbshell_gtSelect( "GTWVT" )
   #elif defined( __PLATFORM__UNIX )
      hbshell_gtSelect( "GTXWC" )
   #endif
#endif

   IF hb_gtInfo( HB_GTI_ISGRAPHIC )
      hb_gtInfo( HB_GTI_FONTNAME, "Lucida Console" )
   ELSE
      ? "launch me under a graphical GT"
      RETURN
   ENDIF

   ? "GT" + hb_gtVersion(), "test"

   ?  hb_gtInfo( HB_GTI_ISFULLSCREEN, .T. ), "we should be on full screen"
   WAIT
   ?  hb_gtInfo( HB_GTI_ISFULLSCREEN, .F. ), "we should be windowed"
   ?  hb_gtInfo( HB_GTI_ALTENTER, .T. ), "<Alt+Enter> is now enabled, try it"
   DO WHILE Inkey( 0 ) != K_ESC
      ? Row()
   ENDDO

   RETURN
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Quer usar em terminal gráfico ? teste ai..
No Windows compilar:
\>hbmk2 gfx.prg -gtwvt

Código: Selecionar todos

#include "hbgtinfo.ch"
#include "hbgfx.ch"

PROCEDURE Main()

   LOCAL nFontHeight, nFontWidth
   LOCAL nTop, nLeft, nHeight, nWidth, nColor, nSec := Seconds()
   LOCAL cWelcome

#if defined( __HBSCRIPT__HBSHELL )
   #if defined( __PLATFORM__WINDOWS )
      hbshell_gtSelect( "GTWVT" )
   #elif defined( __PLATFORM__UNIX )
      hbshell_gtSelect( "GTXWC" )
   #endif
#endif

   IF ! hb_gtInfo( HB_GTI_ISGRAPHIC )
      ? "You are using a non graphics capable gt:"
      ? "GT" + hb_gtVersion()
      RETURN
   ENDIF

   IF hb_gtInfo( HB_GTI_DESKTOPWIDTH ) > 1000
      hb_gtInfo( HB_GTI_FONTWIDTH, 12 )
      hb_gtInfo( HB_GTI_FONTSIZE, 24 )
   ENDIF

   nFontHeight := hb_gtInfo( HB_GTI_FONTSIZE )
   nFontWidth := hb_gtInfo( HB_GTI_FONTWIDTH )

   cWelcome := "Welcome to the World of Harbour multiplatform Graphics!" + " (GT" + hb_gtVersion() + ")"

   SetColor( "n/w" )
   @ 0, 0 SAY Space( MaxCol() + 1 )
   @ 1, 0 SAY PadC( cWelcome, MaxCol() + 1 )
   @ 2, 0 SAY Space( MaxCol() + 1 )

   hb_gtInfo( HB_GTI_WINTITLE, "Cross-GT, multiplatform graphics demo" )

   PutFrame( ;
      nFontHeight / 2, ;
      MaxCol() / 2 * nFontWidth - Len( cWelcome ) / 2 * nFontWidth - nFontWidth, ;
      nFontHeight * 2 + nFontHeight / 2, ;
      nFontWidth + MaxCol() / 2 * nFontWidth + Len( cWelcome ) / 2 * nFontWidth, ;
      hb_gfxMakeColor( 0, 0, 0 ), hb_gfxMakeColor( 255, 255, 255 ) )

   DO WHILE Inkey() == 0
      nTop := Int( hb_Random( 3.1 * nFontHeight, hb_gtInfo( HB_GTI_SCREENHEIGHT ) ) )
      nLeft := Int( hb_Random( hb_gtInfo( HB_GTI_SCREENWIDTH ) ) )
      nHeight := Int( hb_Random( 251 ) )
      nWidth := Int( hb_Random( 251 ) )
      nColor := hb_gfxMakeColor( Int( hb_Random( 32, 256 ) ), Int( hb_Random( 32, 256 ) ), Int( hb_Random( 32, 256 ) ) )

      SWITCH Int( hb_Random( 1, 9 ) )
      CASE 1
         hb_gfxLine( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor )
         EXIT
      CASE 2
         hb_gfxRect( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor )
         EXIT
      CASE 3
         hb_gfxFilledRect( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor )
         EXIT
      CASE 4
         nTop += nHeight
         hb_gfxCircle( nTop, nLeft, nHeight, nColor )
         EXIT
      CASE 5
         nTop += nHeight
         hb_gfxFilledCircle( nTop, nLeft, nHeight, nColor )
         EXIT
      CASE 6
         nTop += nHeight
         hb_gfxEllipse( nTop, nLeft, nHeight, nWidth, nColor )
         EXIT
      CASE 7
         nTop += nHeight
         hb_gfxFilledEllipse( nTop, nLeft, nHeight, nWidth, nColor )
         EXIT
      CASE 8
         nHeight %= 64
         IF nHeight % 2 == 1
            nHeight++
         ENDIF
         hb_gfxText( nTop, nLeft, "Hello", nColor, nHeight )
         EXIT
      ENDSWITCH
      IF Seconds() - nSec > 3
         hb_gfxFloodFill( 0, 0, nColor )
         nSec := Seconds()
      ENDIF
   ENDDO

   RETURN

STATIC PROCEDURE PutFrame( nTop, nLeft, nBottom, nRight, nColor1, nColor2 )

   hb_gfxRect( nTop, nLeft, nBottom, nRight, nColor1 )
   hb_gfxRect( nTop + 1, nLeft + 1, nBottom - 1, nRight - 1, nColor2 )
   hb_gfxLine( nTop + 1, nLeft + 1, nTop + 1, nRight - 1, nColor2 )
   hb_gfxLine( nTop + 2, nLeft + 1, nBottom - 1, nLeft + 1, nColor2 )

   RETURN
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

José Quintas, Bom Dia!
Já tentou usar o aplicativo pelo wine?
Já usei e uso o Wine sempre que necessario. Acho o mesmo Fantastico! Mas para esse aplicativo não fiz testes não, pois para mim só vai servir se o Wine puder ser utilizado no terminal em modo texto. Você saberia me diz se isso é possivel? Eu nunca usei dessa forma! Se sim, já me quebraria um grande galho, mas confesso que nada melhor para o meu caso se eu conseguir deixar o mesmo rodando compilado para Linux, pois alocaria muito pouco recurso da máquina Linux.

Grato pela sua atenção.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Itamar, Bom Dia!
Moço, coloque aqui o seu código. Porque não deu certo ?
O código não tem nada demais não. É uma simples chamada de procedure com "With", mas quando compilo o mesmo não aceita e dá um erro na compilação.

Exemplo:

Código: Selecionar todos

Chamo uma subrotina assim:
Do Consulta With "C"

Troquei para:
Consulta("C")
Fiz essas mudanças conforme as recomendações de um post aqui do forum.

Vou ficar mexendo e ver se chego lá, pois penso que mais longe do sucesso já estive. (rs)
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Fiz essas mudanças conforme as recomendações de um post aqui do forum.
Pois é desde a época do Clipper 5 já havia a recomendação de usar dessa forma.
No Harbour existe diferença na forma de tratar os parametros passados.

Código: Selecionar todos

Function Consulta(cVar) //cVar é do tipo LOCAL.
Function Consulta
Parameters cVar //cVar é do tipo Private.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Mestre,
Quer usar em terminal gráfico ? teste ai..
No Windows compilar:
\>hbmk2 gfx.prg -gtwvt
Eu não estou com nenhuma dúvida sobre -gtwvt para Windows não. Isso eu já resolvi logo no inicio com a sua ajuda e a dos outros colegas. O problema é no Linux, pois quando maximizo o terminal GRÁFICO o aplicativo não se ajusta da mesma forma como no Windows. Só perguntei se não teria um comando "mágico" como esse (-gtwvt) para o Linux. Desculpe, se não me fiz entender direito!

Minha necessidade atual:
Se eu conseguir executar o meu aplicativo (Harbour para Linux) de uma estação Windows ou Linux via cliente SSH e o mesmo exibir os caracteres ASCII, maximizar e minimizar corretamente, já terei concluído a minha missão. Conto somente com a ajuda de vocês! (rs)

Mais uma vez obrigado pela sua valiosa atenção e pelos exemplos postados.

Forte abraço!
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

O problema é no Linux, pois quando maximizo o terminal GRÁFICO o aplicativo não se ajusta da mesma forma como no Windows. Só perguntei se não teria um comando "mágico" como esse (-gtwvt) para o Linux. Desculpe, se não me fiz entender direito!
Viu o código ?
Pois é no linux vc faz assim:

Código: Selecionar todos

hbmk2 gfx.prg -gtxwc
Tá lá no código...

Código: Selecionar todos

	   #elif defined( __PLATFORM__UNIX )
	      hbshell_gtSelect( "GTXWC" )
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Pois é desde a época do Clipper 5 já havia a recomendação de usar dessa forma.
No Harbour existe diferença na forma de tratar os parametros passados.
Pois é, como o aplicativo é antigo e até hoje eu ainda dou pequenas manutenções, acaba ficando código antigo com coódigo mais atual devido ao fato de aproveitamento dos mesmo. Nesse caso acbou ficando alguma coisa desde da época do Summer 87. Vou fazer uns ajuste e ver como fica.

Abraço!
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Já leu esse post ?
Saudações a todos!!!

Nesta busca da solução em usar UTF8 no console com todos os acentos à disposição, inclusive e principalmente no GET, depois de bater cabeça pude decifrar o mistério:

Eu estava usando Harbour 3.0 e nele não existe os seguintes comandos:

Expandir visualizacaoVer codigo
1 REQUEST HB_CODEPAGE_UTF8EX
2 hb_cdpSelect( "UTF8EX" )


Existe sim os comandos REQUEST HB_CODEPAGE_UTF8 e hb_cdpSelect( "UTF8" ) que infelizmente não fazem os acentos funcionar corretamente.

Aí compilei o Harbour 3.4.0 e utilizando o seguinte código tive o resultado esperado:

Expandir visualizacaoVer codigo
1 REQUEST HB_LANG_PT
2 HB_LANGSELECT( 'PT' )
3 REQUEST HB_CODEPAGE_UTF8EX
4 hb_cdpSelect( "UTF8EX" )
5


Para complementar o post gostaria de citar os passos que fiz para compilar o Harbour no Ubuntu 12.04 LTS:

1. Baixei o pacote no link: https://github.com/harbour/core/archive/master.zip

2. Extrai o pacote na minha pasta pessoal sem alterar seu nome

3. Abri o terminal

4. Digitei cd harbour-core-master

5. Digitei make

6. Após o término do processo para usar o harbour de qualquer diretório do linux copiei os seguintes arquivos:
a) Copiar harbour-core-master/bin/linux/gcc para /usr/bin
b) Copiar harbour-core-master/lib/linux/gcc para /usr/lib/harbour
c) Copiar harbour-core-master/include para /usr/include/harbour
OBS: para copiar arquivos para a pasta /usr você precisa estar como root. Para isto digite gksudo nautilus e em seguida a senha do root.

7. Fechei o terminal. Abri novamente. Compilei com hbmk2 incluindo a diretiva -static.
OBS: ao digitar harbour ou hbmk2 no terminal você verá a versão 3.4.0

Assim o problema de acentos no terminal linux utilizando UTF-8 ficou resolvido.

Obrigado a todos os que leram este post e espero que esta resposta possa lhes ser útil.

[]s

Yugi386
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Mestre,

Já sim! O problema é entender tudo logo de cara. (rs) Lembre-se que tudo no mundo Harbour é muito novo para mim. Confesso que as vezes fico perdido, mas chego lá!

Para o momento o que tá pegando é só as questões do ASCII, maximizar e minimizar. Sobre o Linux em sí não tenho problemas não, pois o ambiente está instalado e compilando certinho. Os erros que ocorrem, no geral são por falta de conhecimento e intimidade com o Harbour.

Mais uma vez obrigado.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Vá para a pasta tests do Harbour 3.2
Lá tem exemplos.
gfx.prg //compilar usando hbmk2 gtx.prg -gtxwc
gfx2.prg //compilar usando hbmk2 gtx2.prg -gtxwc
wvt_fs.prg //idem
wvtext.prg //idem
gtwin.prg //idem
gtxfnt.prg //compilar usando hbmk2 gtxfnt.prg -gtxwc
e esse para terminal não gráfico.
wcecon.prg //compilar usando hbmk2 wcecon.prg

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Vá para a pasta tests do Harbour 3.2
Lá tem exemplos.
gfx.prg //compilar usando hbmk2 gtx.prg -gtxwc
gfx2.prg //compilar usando hbmk2 gtx2.prg -gtxwc
wvt_fs.prg //idem
wvtext.prg //idem
gtwin.prg //idem
gtxfnt.prg //compilar usando hbmk2 gtxfnt.prg -gtxwc
e esse para terminal não gráfico.
wcecon.prg //compilar usando hbmk2 wcecon.prg
Beleza. Vou dar uma olhada nisso o mais breve possivel.

No momento estou tentando ajustar os fontes para ver se consigo gerar o primeiro executavel do sistema ERP com Harbour para Win/32. Mas tá dando Erro: executando linkeditor. 1 e não estou encontrando aonde pode ser o problema.

Mais uma vez obrigado.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Aos Colegas,

O que exatamente causa esse tipo de erro? Dei uma olhada aqui pelo fórum, mas não encontrei nada que me ajudasse. Tudo que encontrei foi referente a coisas mais complexas e sofisticadas do próprio Harbour. Segue:
c:/temp/SYSADM.o:SYSADM.c:(.data+0x6e8): undefined reference to 'HB_FUN_GERAINDICES'
Já mexi, remexi e quanto mais mexo pior ficar. (rs)

Isso ocorre para varias funções do sistema.

Grato e aguardo qualquer orientação.
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Converter de Clipper para Harbour

Mensagem por Itamar M. Lins Jr. »

Você não é o primeiro a enfrentar esse problema.

Aqui ensinando como resolver...
https://vivaclipper.wordpress.com/tag/hb_fun_/

Código: Selecionar todos

Note: While working / playing on programs, you may encounter some error messages like:

  Error F0029  Can't open #include file xxx

  Error E0002  Redefinition of procedure or function xxx

  Error: Referenced, missing, but unknown function(s): xxx

  undefined reference to HB_FUN_xxx

 Please don’t panic !

    “Error” is salt and pepper of programming play ! ;)

 The worst situation isn’t getting error, but is unable to stay !

   The “HB_FUN_xxx” may be seen weird at first meet. The “HB_FUN_” is a prefix given by system ( compiler ) to your function; so you need search erroneous point into tour program files without this prefix.
Mais outra...
http://myharbournotes.blogspot.com.br/2 ... ce-to.html

Código: Selecionar todos

 MingW error: Undefined reference to HB_FUN
Have you noticed that hbmk2 will always report an "undefined reference to HB_FUN_..." error if it cannot find the function you referred to or cannot find the library where the same function stayed? Here's an example of this error, especially so if you are using MingW compiler:

filexxx.c:(data+0x58): undefined reference to 'HB_FUN_FUNCTIONNAME'

BCC is more tolerant than MingW. I tried to compile a libmyLib.a where my functions relied on the codes in hbwin, hbxpp, and hbct libraries of Harbour contrib. You may try this experiment:
Mais outra aqui...
http://forums.fivetechsupport.com/viewt ... 21&t=17252

Seus módulos .prg devem começar com FUNCTION ou Procedure(caso não retorne nenhum valor)
Retire os INCLUDE ... ou SET PROCEDURE TO ...
Coloque todos os PRG´s no projeto .HBP

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
aprendiz_ce
Usuário Nível 3
Usuário Nível 3
Mensagens: 147
Registrado em: 21 Jul 2011 10:05
Localização: Fortaleza/CE

Converter de Clipper para Harbour

Mensagem por aprendiz_ce »

Olá Mestre Itamar,
Seus módulos .prg devem começar com FUNCTION ou Procedure(caso não retorne nenhum valor)
Retire os INCLUDE ... ou SET PROCEDURE TO ...
Coloque todos os PRG´s no projeto .HBP
Pois é, eu já venho fazendo dessa forma conforme as recomendações aqui do fórum. No primeiro aplicativo que converti do Clipper para Hanbour (Windows/Linux) não tive problema algum, mas agora com esse aplicativo que é mais extenso tenho apanhado um bocado.

Muitíssimo obrigado pela sua pronta atenção.

Forte abraço!
Sucesso é a soma de pequenos esforços, repetidos o tempo todo.
Responder