Migrar Clipper para Harbour com lib proprias

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

Moderador: Moderadores

Eros
Usuário Nível 3
Usuário Nível 3
Mensagens: 291
Registrado em: 19 Dez 2008 19:23
Localização: Goiania

Migrar Clipper para Harbour com lib proprias

Mensagem por Eros »

Utilizo hoje uma aplicaçao propria para fazer telas graficas para Clipper no MS-DOS, chamado Qscreen, na verdade uma copia do ScreenMaker. Pelo que entendi, vou ter que recriar minhas telas em modo grafico para windows. Ha algum utilitario que se usa para recriar as telas ou o proprio harbour tem esse recurso ?

Assim, crio minhas telas num repositorio, um ou varios arquivos com extensao .QSC e la tenho a tela1, tela2, e jogo na aplicaçao e quando preciso, chamo a tela com uma funçao.

Isso poderia funcionar em aplicações harbour ou é descartado ?
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

Migrar Clipper para Harbour com lib proprias

Mensagem por Itamar M. Lins Jr. »

O Harbour não tem uma IDE que desenha as telas p/ vc (padrão), existem várias IDE's gráficas. semi gráficas eu não conheço.(somente as linhas simples ou duplas)
No caso das suas telas, se o conteúdo do arquivo for texto com os comandos do clipper/harbour acredito que pode continuar usando...
Porém no Harbour existe os GT´s [Terminal Gráfico ?] tem o padrão WVT, o do windows WIN, o do Pritpal WVG(windows), o do linux TRM ou XWC... e outros tantos com muitas similaridades.
Se for partir para refazer todo o sistema e sair do (linha simples,duplas) tem a Minigui com IDE e HWgui com a IDE do Luis Basso o fato é que tem muita coisa para escolher, a Marinas GUI usando a HBQT.

Por exemplo se for usar a WVG, Você não abre mão do que já sabe e agrega os novos recursos, e o visual fica muito parecido uma uma aplicação "for windows" um boa opção!

Por exemplo:

Código: Selecionar todos

FUNCTION WvtPartialScreen()

   LOCAL scr        := SaveScreen( 7, 20, 15, 60 )
   LOCAL wvtScr     := Wvt_SaveScreen( 0, 0, MaxRow(), MaxCol() )
   LOCAL wvtScr1
   LOCAL aLastPaint
   LOCAL hPopup     := Wvt_SetPopupMenu()

   aLastPaint := WvtSetBlocks( {} )

   hb_DispBox( 7, 20, 15, 60, "         ", "W/GR*" )
   @ 10, 25 SAY "Wvt_SaveScreen()" COLOR "N/GR*"
   @ 11, 25 SAY "Wvt_RestScreen()" COLOR "N/GR*"
   @ 13, 25 SAY "Press Esc "       COLOR "N/GR*"
   Wvt_DrawBoxRecessed( 8, 22, 14, 58 )

   wvtScr1 := Wvt_SaveScreen( 7, 20, 15, 60 )

   DO WHILE Inkey( 0 ) != K_ESC
   ENDDO

   hb_DispBox( 7, 20, 15, 60, "         ", "W/B*" )
   @ 10, 25 SAY "Wvt_SaveScreen()" COLOR "N/B*"
   @ 11, 25 SAY "Wvt_RestScreen()" COLOR "N/B*"
   @ 13, 25 SAY "Press Esc "       COLOR "N/B*"
   Wvt_DrawBoxRecessed( 8, 22, 14, 58 )

   DO WHILE Inkey( 0 ) != K_ESC
   ENDDO

   Wvt_RestScreen( 7, 20, 15, 60, wvtScr1 )

   DO WHILE Inkey( 0 ) != K_ESC
   ENDDO

   RestScreen( 7, 20, 15, 60, scr )
   Wvt_RestScreen( 0, 0, MaxRow(), MaxCol(), wvtScr )
   WvtSetBlocks( aLastPaint )
   Wvt_SetPopupMenu( hPopup )

   RETURN NIL
Veja que é um código novo e não existe uma IDE para esse tipo de "GT"

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour com lib proprias

Mensagem por JoséQuintas »

O post é sobre passar pra harbour.
Ferramentas que precisam suporte não ajudam nisso, pode dificultar saber se o erro é na ferramenta ou no harbour.
Instalei meu Windows há pouco tempo do zero (depois de ter usado o W 8.1), nem sequer office instalei ainda.
Não acho que uma ferramenta profissional daria erro nestas condições, e por isso prefiro me limitar ao que sei que funciona, e não vai atrapalhar o que ele está tentando fazer.

Sobre as telas gráficas, depende do que chama de tela gráfica no Clipper.
Se as telas gráficas são somente telas com caracteres gráficos, só usar as mesmas telas.

Mas não entendi o post, começou sobre harbour e mudou pra xharbour.
No final, não sei mais se precisa de ajuda pra harbour, xharbour, ou para os dois.
Ajuda nestas condições fica parecendo briga de compilador harbour X xharbour, que acabou parecendo briga de ferramentas também. rs
Se for xharbour não posso ajudar, porque já devo ter esquecido detalhes.
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
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7929
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

Migrar Clipper para Harbour com lib proprias

Mensagem por Itamar M. Lins Jr. »

A versap que baixe e estou usando do xHarbour e 1.2.1 (Simplex) Rev 6633.
Por isso eu sugeri o uso do xEdit e do Harbour 3.2 com hbmk2, ao invés do xHarbour + hbmake + xDev parados no tempo!
Na minha opinião bem melhor... inclusive por ter algum suporte, por parte dos "GURUS".

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour com lib proprias

Mensagem por JoséQuintas »

Se for este o utilitário, isso não é tela gráfica, é tela usando caracteres gráficos, só pra facilitar desenhar telas.
Pra isso não vai precisar nenhuma lib especial.
No caso do screenmaker é fonte mesmo, não sei do qscreen.

http://www.oocities.org/waskarali/clipper.html
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/
microvolution
Usuário Nível 5
Usuário Nível 5
Mensagens: 1231
Registrado em: 02 Set 2011 22:17
Contato:

Migrar Clipper para Harbour com lib proprias

Mensagem por microvolution »

Prezados Senhores clipper apaixonados como eu.
Bom, programo em clipper/dbase iii desde 1990. Só que comecei oficialmente meu primeiro projeto profissional em 1998 intitulado SiCCA (Sistema de Controle Comercial Avançado). Durante os primeiros 5 anos foram para fazer com que ele fosse aceito no mercado.
Só que como nós sabemos, ficamos ultrapassados no velho e bom amigo clipper, por falta de uma LIB que realmente funcionasse "mouse", problemas com os ambientes win xp que surgiram em 2002. E a concorrência com outras linguagens mais modernas e principalmente as empresas que já estavam estabelecidas no mercado com vários programadores e vendedores/revendedores na praça, fizeram com que eu (infelizmente) ficasse garrado aqui com o pouco que sei do clipper.

Agora chega de tanto blá blá blá e vamos ao que todos nos interessamos (migrar de clipper pra harbour/xharbour). Há 2 anos um amigo que conheci aqui pelo fórum (Eolo Ventura) me deu algumas dicas e até me mandou uns PRGs para facilitar a migração.
Como tive que fazer um aplicativo para uma oficina mecânica, parei a migração e estou retornando agora novamente em 2014.

Bom, vi algumas observações de toda a internet, baixei essas IDEs (como dissse alguém aqui) são realmente complexas (pra gente que é leigo no assunto POO).
Pensava eu que HARBOUR e XHARBOUR eram a mesma coisa ou seja, HARBOUR veio para migrar 16 bit p/ 32 e manter o console visual/MSDOS 16 cores, etc, e xHARBOUR foi a evolução com imagens visuais como em DELPHI/C++/JAVA, etc com IDE e ambiente POO.
Mas, alguém aqui me deixou essa dúvida que gostaria (se possível) ser esclarecida.

Agora, vamos às maiores dúvidas.
Eu compilo e linkedito meus PRGs usando basicamente 2 coisas:

1ª - para facilitar a programação e ficar mais estruturada uso um GERADOR DE PROGRAMAS CLIPPER da Squadra(BH/MG) chamado SCULPTOR na última versão comercializada: 3.331;

2ª - compilo e linkedito, fazendo quase a mesma coisa que o colega autor dessas dúvidas faz; só que usando o EXOSPACE. Considerando que meu arquivo principal é o PCI10000.PRG, no clipper faço assim através de 3 outros arquivos:

CL.BAT que contém o seguinte conteúdo:
*=======
@ECHO OFF
..\clipper5\bin\RMAKE PCI10000
..\clipper5\bin\EXOSPACE @PCI10000
*=======

PCI10000.RMK, com os seguintes dados:
*=======
PCI10000.OBJ: PCI10000.PRG GCI10000.CH
CLIPPER PCI10000 /M
PCI10001.OBJ: PCI10001.PRG GCI10000.CH
CLIPPER PCI10001 /M
PCI10002.OBJ: PCI10002.PRG GCI10000.CH
CLIPPER PCI10002 /M
PCI10003.OBJ: PCI10003.PRG GCI10000.CH
CLIPPER PCI10003 /M
PCI10004.OBJ: PCI10004.PRG GCI10000.CH
CLIPPER PCI10004 /M
PCI10005.OBJ: PCI10005.PRG GCI10000.CH
CLIPPER PCI10005 /M
PCI10006.OBJ: PCI10006.PRG GCI10000.CH
CLIPPER PCI10006 /M
PCI10007.OBJ: PCI10007.PRG GCI10000.CH
CLIPPER PCI10007 /M
PCI10008.OBJ: PCI10008.PRG GCI10000.CH
CLIPPER PCI10008 /M
PCI10009.OBJ: PCI10009.PRG GCI10000.CH
CLIPPER PCI10009 /M
PCI10012.OBJ: PCI10012.PRG GCI10000.CH
CLIPPER PCI10012 /M
PCI10013.OBJ: PCI10013.PRG GCI10000.CH
CLIPPER PCI10013 /M
PCI10014.OBJ: PCI10014.PRG GCI10000.CH
CLIPPER PCI10014 /M
PCI10015.OBJ: PCI10015.PRG GCI10000.CH
CLIPPER PCI10015 /M
PCI10016.OBJ: PCI10016.PRG GCI10000.CH
CLIPPER PCI10016 /M
PCI10017.OBJ: PCI10017.PRG GCI10000.CH
CLIPPER PCI10017 /M
PCI10018.OBJ: PCI10018.PRG GCI10000.CH
CLIPPER PCI10018 /M
PCI10019.OBJ: PCI10019.PRG GCI10000.CH
CLIPPER PCI10019 /M
PCI10020.OBJ: PCI10020.PRG GCI10000.CH
CLIPPER PCI10020 /M
PCI10021.OBJ: PCI10021.PRG GCI10000.CH
CLIPPER PCI10021 /M
PCI10022.OBJ: PCI10022.PRG GCI10000.CH
CLIPPER PCI10022 /M
PCI10024.OBJ: PCI10024.PRG GCI10000.CH
CLIPPER PCI10024 /M
PCI10025.OBJ: PCI10025.PRG GCI10000.CH
CLIPPER PCI10025 /M
PCI10026.OBJ: PCI10026.PRG GCI10000.CH
CLIPPER PCI10026 /M
PCI10027.OBJ: PCI10027.PRG GCI10000.CH
CLIPPER PCI10027 /M
PCI10028.OBJ: PCI10028.PRG GCI10000.CH
CLIPPER PCI10028 /M
PCI10031.OBJ: PCI10031.PRG GCI10000.CH
CLIPPER PCI10031 /M
PCI10032.OBJ: PCI10032.PRG GCI10000.CH
CLIPPER PCI10032 /M
PCI10033.OBJ: PCI10033.PRG GCI10000.CH
CLIPPER PCI10033 /M
PCI10034.OBJ: PCI10034.PRG GCI10000.CH
CLIPPER PCI10034 /M
PCI10035.OBJ: PCI10035.PRG GCI10000.CH
CLIPPER PCI10035 /M
PCI10038.OBJ: PCI10038.PRG GCI10000.CH
CLIPPER PCI10038 /M
PCI10039.OBJ: PCI10039.PRG GCI10000.CH
CLIPPER PCI10039 /M
PCI10040.OBJ: PCI10040.PRG GCI10000.CH
CLIPPER PCI10040 /M
PCI10041.OBJ: PCI10041.PRG GCI10000.CH
CLIPPER PCI10041 /M
PCI10042.OBJ: PCI10042.PRG GCI10000.CH
CLIPPER PCI10042 /M
PCI10043.OBJ: PCI10043.PRG GCI10000.CH
CLIPPER PCI10043 /M
PCI10044.OBJ: PCI10044.PRG GCI10000.CH
CLIPPER PCI10044 /M
PCI10045.OBJ: PCI10045.PRG GCI10000.CH
CLIPPER PCI10045 /M
PCI10046.OBJ: PCI10046.PRG GCI10000.CH
CLIPPER PCI10046 /M

PCI10100.OBJ: PCI10100.PRG GCI10000.CH
CLIPPER PCI10100 /M
PCI10102.OBJ: PCI10102.PRG GCI10000.CH
CLIPPER PCI10102 /M
PCI10110.OBJ: PCI10110.PRG GCI10000.CH
CLIPPER PCI10110 /M
PCI10115.OBJ: PCI10115.PRG GCI10000.CH
CLIPPER PCI10115 /M
PCI10116.OBJ: PCI10116.PRG GCI10000.CH
CLIPPER PCI10116 /M
PCI10120.OBJ: PCI10120.PRG GCI10000.CH
CLIPPER PCI10120 /M
PCI10121.OBJ: PCI10121.PRG GCI10000.CH
CLIPPER PCI10121 /M
PCI10122.OBJ: PCI10122.PRG GCI10000.CH
CLIPPER PCI10122 /M
PCI10123.OBJ: PCI10123.PRG GCI10000.CH
CLIPPER PCI10123 /M
PCI10124.OBJ: PCI10124.PRG GCI10000.CH
CLIPPER PCI10124 /M
PCI10125.OBJ: PCI10125.PRG GCI10000.CH
CLIPPER PCI10125 /M
PCI10126.OBJ: PCI10126.PRG GCI10000.CH
CLIPPER PCI10126 /M
PCI10127.OBJ: PCI10127.PRG GCI10000.CH
CLIPPER PCI10127 /M
PCI10130.OBJ: PCI10130.PRG GCI10000.CH
CLIPPER PCI10130 /M
PCI10131.OBJ: PCI10131.PRG GCI10000.CH
CLIPPER PCI10131 /M
PCI10132.OBJ: PCI10132.PRG GCI10000.CH
CLIPPER PCI10132 /M
PCI10133.OBJ: PCI10133.PRG GCI10000.CH
CLIPPER PCI10133 /M
PCI10135.OBJ: PCI10135.PRG GCI10000.CH
CLIPPER PCI10135 /M
PCI10136.OBJ: PCI10136.PRG GCI10000.CH
CLIPPER PCI10136 /M
PCI10140.OBJ: PCI10140.PRG GCI10000.CH
CLIPPER PCI10140 /M
PCI10151.OBJ: PCI10151.PRG GCI10000.CH
CLIPPER PCI10151 /M
PCI10152.OBJ: PCI10152.PRG GCI10000.CH
CLIPPER PCI10152 /M

PCI10200.OBJ: PCI10200.PRG GCI10000.CH
CLIPPER PCI10200 /M
PCI10202.OBJ: PCI10202.PRG GCI10000.CH
CLIPPER PCI10202 /M
PCI10203.OBJ: PCI10203.PRG GCI10000.CH
CLIPPER PCI10203 /M
PCI10204.OBJ: PCI10204.PRG GCI10000.CH
CLIPPER PCI10204 /M
PCI10210.OBJ: PCI10210.PRG GCI10000.CH
CLIPPER PCI10210 /M
PCI10211.OBJ: PCI10211.PRG GCI10000.CH
CLIPPER PCI10211 /M
PCI10212.OBJ: PCI10212.PRG GCI10000.CH
CLIPPER PCI10212 /M
PCI10213.OBJ: PCI10213.PRG GCI10000.CH
CLIPPER PCI10213 /M
PCI10215.OBJ: PCI10215.PRG GCI10000.CH
CLIPPER PCI10215 /M
PCI10216.OBJ: PCI10216.PRG GCI10000.CH
CLIPPER PCI10216 /M
PCI10217.OBJ: PCI10217.PRG GCI10000.CH
CLIPPER PCI10217 /M
PCI10220.OBJ: PCI10220.PRG GCI10000.CH
CLIPPER PCI10220 /M
PCI10221.OBJ: PCI10221.PRG GCI10000.CH
CLIPPER PCI10221 /M
PCI10222.OBJ: PCI10222.PRG GCI10000.CH
CLIPPER PCI10222 /M
PCI10225.OBJ: PCI10225.PRG GCI10000.CH
CLIPPER PCI10225 /M
PCI10226.OBJ: PCI10226.PRG GCI10000.CH
CLIPPER PCI10226 /M
PCI10227.OBJ: PCI10227.PRG GCI10000.CH
CLIPPER PCI10227 /M
PCI10228.OBJ: PCI10228.PRG GCI10000.CH
CLIPPER PCI10228 /M
PCI10229.OBJ: PCI10229.PRG GCI10000.CH
CLIPPER PCI10229 /M
PCI10230.OBJ: PCI10230.PRG GCI10000.CH
CLIPPER PCI10230 /M
PCI10231.OBJ: PCI10231.PRG GCI10000.CH
CLIPPER PCI10231 /M
PCI10240.OBJ: PCI10240.PRG GCI10000.CH
CLIPPER PCI10240 /M
PCI10250.OBJ: PCI10250.PRG GCI10000.CH
CLIPPER PCI10250 /M
PCI10251.OBJ: PCI10251.PRG GCI10000.CH
CLIPPER PCI10251 /M
PCI10252.OBJ: PCI10252.PRG GCI10000.CH
CLIPPER PCI10252 /M
PCI10254.OBJ: PCI10254.PRG GCI10000.CH
CLIPPER PCI10254 /M
PCI10255.OBJ: PCI10255.PRG GCI10000.CH
CLIPPER PCI10255 /M
PCI10256.OBJ: PCI10256.PRG GCI10000.CH
CLIPPER PCI10256 /M
PCI10260.OBJ: PCI10260.PRG GCI10000.CH
CLIPPER PCI10260 /M
PCI10270.OBJ: PCI10270.PRG GCI10000.CH
CLIPPER PCI10270 /M
PCI10271.OBJ: PCI10271.PRG GCI10000.CH
CLIPPER PCI10271 /M
PCI10272.OBJ: PCI10272.PRG GCI10000.CH
CLIPPER PCI10272 /M
PCI10273.OBJ: PCI10273.PRG GCI10000.CH
CLIPPER PCI10273 /M

PCI10995.OBJ: PCI10995.PRG GCI10000.CH
CLIPPER PCI10995 /M
PCI10996.OBJ: PCI10996.PRG GCI10000.CH
CLIPPER PCI10996 /M
PCI10997.OBJ: PCI10997.PRG GCI10000.CH
CLIPPER PCI10997 /M
PCI10998.OBJ: PCI10998.PRG GCI10000.CH
CLIPPER PCI10998 /M
PCI10999.OBJ: PCI10999.PRG GCI10000.CH
CLIPPER PCI10999 /M
RCI10000.OBJ: RCI10000.PRG GCI10000.CH
CLIPPER RCI10000 /M

C:\SC331\CLIPPER\ROTINAS5.OBJ: C:\SC331\CLIPPER\ROTINAS5.PRG
CLIPPER C:\SC331\CLIPPER\ROTINAS5 /OC:\SC331\CLIPPER\ROTINAS5 /M

//C:\SC331\CLIPPER\RIMPR000.OBJ: C:\SC331\CLIPPER\RIMPR000.PRG
// CLIPPER C:\SC331\CLIPPER\RIMPR000 /OC:\SC331\CLIPPER\RIMPR000 /M

C:\SC331\CLIPPER\IMPRESSO.OBJ: C:\SC331\CLIPPER\IMPRESSO.PRG
CLIPPER C:\SC331\CLIPPER\IMPRESSO /OC:\SC331\CLIPPER\IMPRESSO /M
C:\SC331\CLIPPER\EXT.OBJ: C:\SC331\CLIPPER\EXT.PRG
CLIPPER C:\SC331\CLIPPER\EXT /OC:\SC331\CLIPPER\EXT /M

//C:\SC331\CLIPPER5\LIB2\S3MOUSE.OBJ: C:\SC331\CLIPPER5\LIB2\S3MOUSE.PRG
// CLIPPER C:\SC331\CLIPPER5\LIB2\S3MOUSE /OC:\SC331\CLIPPER5\LIB2\S3MOUSE /M

C:\SC331\CLIPPER\RIMPR000.OBJ: C:\SC331\CLIPPER\RIMPR000.PRG
CLIPPER C:\SC331\CLIPPER\RIMPR000 /OC:\SC331\CLIPPER\RIMPR000 /M
C:\SC331\CLIPPER\PIMPR105.OBJ: C:\SC331\CLIPPER\PIMPR105.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR105 /OC:\SC331\CLIPPER\PIMPR105 /M
C:\SC331\CLIPPER\PIMPR110.OBJ: C:\SC331\CLIPPER\PIMPR110.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR110 /OC:\SC331\CLIPPER\PIMPR110 /M
C:\SC331\CLIPPER\PIMPR115.OBJ: C:\SC331\CLIPPER\PIMPR115.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR115 /OC:\SC331\CLIPPER\PIMPR115 /M
C:\SC331\CLIPPER\PIMPR120.OBJ: C:\SC331\CLIPPER\PIMPR120.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR120 /OC:\SC331\CLIPPER\PIMPR120 /M
C:\SC331\CLIPPER\PIMPR121.OBJ: C:\SC331\CLIPPER\PIMPR121.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR121 /OC:\SC331\CLIPPER\PIMPR121 /M
C:\SC331\CLIPPER\PIMPR125.OBJ: C:\SC331\CLIPPER\PIMPR125.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR125 /OC:\SC331\CLIPPER\PIMPR125 /M
C:\SC331\CLIPPER\PIMPR130.OBJ: C:\SC331\CLIPPER\PIMPR130.PRG
CLIPPER C:\SC331\CLIPPER\PIMPR130 /OC:\SC331\CLIPPER\PIMPR130 /M
*=======
e finalmente,
PCI10000.LNK, com o seguinte conteúdo (eliminei os nomes de arquivos abaixo, pois não consegui copiar os nomes como fiz no arquivo acima (*.RMK) porque usei o editor do MSDOS pra simbolizar a falta dos arquivos coloquei "..." pra diferenciar):
*=======
FILE PCI10000
...
FILE RCI10000
FILE C:\SC331\CLIPPER\ROTINAS5

LIB ..\CLIPPER5\LIB2\NANFOR
LIB ..\CLIPPER5\LIB2\CPMI
LIB ..\CLIPPER5\LIB2\OSLIB

FILE C:\SC331\CLIPPER\RIMPR000
...
FILE C:\SC331\CLIPPER\PIMPR130

OUT SICCA334.EXE
*=======


Portanto, como o amigo autor deste 'post', gostaria dos demais esclarecimentos para que eu possa também migrar meu "SICCA334/clipper" para "SiCCA335/harbour ou xharbour" (o que for mais moderno).

No mais, todos estão de parabéns.
Caso queiram baixar e instalar meu "humilde" aplicativo, está no site: www.mvinfo.wmx.net.br.
Grato,
W de Paula.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Migrar Clipper para Harbour com lib proprias

Mensagem por JoséQuintas »

Vamos do básico, que quase todo mundo esquece.

PRG é o fonte, que ao ser compilado gera um OBJ
CH são arquivos que podem ser adicionados ao fonte, pra facilitar adicionar algumas definições
OBJ pode ser agrupado pra reutilização, e gerar LIB
LIB portanto, contém OBjs
EXE é o programa, que contém OBJs e LIBs e o que precisar a mais pra rodar.
OVL é uma opção do linqueditor DOS, que grava pedaço do EXE em separado
DLL é uma opção do linqueditor, que grava pedaço do EXE, mas diferente da OVL pode ser trocado tanto o EXE quanto a DLL em separado.

No Harbour é a mesma coisa, com exceção de:

PRG é o fonte, passa pelo Harbour e gera C, que compila e gera OBJ
Dependendo do compilador, o arquivo OBJ pode ser .OBJ ou .o
Dependendo do compilador, o arquivo LIB pode ser .LIB ou .a

Agora a compilação:

No clipper:
clipper programa1 /m /n
clipper programa2 /m /n
rtlink fi programa1, programa2 lib clipper,extend

pode ser usado um gerenciador de compilação pra facilitar, ou um arquivo LNK com os comandos do link.

rmK:

programa1.obj: programa1.prg
programa2.obj: programa2.prg
programa1.exe: programa1.obj programa2.obj

lnk:
fi programa1
fi programa2
lib clipper
lib extend

No Harbour, o hbmk2 faz tudo isso de uma vez, e acrescenta as libs automaticamente.
Se quiser arquivo separado (pelo projeto ser grande), pode usar um arquivo .hbp
Como faz tudo, dá pra colocar parâmetros do que seria o Clipper, e parâmetros do que seria o linqueditor.

hbmk2 programa1 programa2 -m -n

ou usando hbp:

hbmk2 programa1.hbp

--- programa1.hbp
programa1.prg
programa2.prg
-m
-n

O Harbour é 32 bits, o Clipper é 16 bits, então não dá pra usar OBJ e LIB de um para o outro.

Basicamente é isso.
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/
Responder