Clipper pra Harbour
Moderador: Moderadores
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
O post aqui é proposital.
Se está usando Clipper anterior à 5.2, é sinal de que já tem coisas pra aprender sobre o Clipper mesmo.
Começar aqui considerando Clipper 5.2.
No Clipper 5.2:
Precisa de tudo configurado certo, e no Harbour não vai ser diferente.
PATH
LIB
INCLUDE
Instale o Harbour, 3.2 oficial, ou 3.4 Vszakats melhor ainda, os dois tem versão pronta pra uso.
Apenas acrescente ao PATH a pasta bin do Harbour, e nada mais.
Pode continuar trabalhando normalmente com o Clipper, como sempre fez.
De vez em quando, teste com Harbour, e veja se alguma coisa precisa ser diferente.
Só isso.
Vai poder trabalhar com Clipper normalmente, e vai poder testar com o Harbour.
O Harbour é igual ao Clipper, apenas alguns defaults são diferentes.
Se alterar o default do Clipper, e ajustar os fontes, os fontes continuam funcionando nos dois.
Então pode fazer isso no Clipper, vai continuar trabalhando com Clipper, e os fontes vão funcionar nos dois.
Se está usando Clipper anterior à 5.2, é sinal de que já tem coisas pra aprender sobre o Clipper mesmo.
Começar aqui considerando Clipper 5.2.
No Clipper 5.2:
Precisa de tudo configurado certo, e no Harbour não vai ser diferente.
PATH
LIB
INCLUDE
Instale o Harbour, 3.2 oficial, ou 3.4 Vszakats melhor ainda, os dois tem versão pronta pra uso.
Apenas acrescente ao PATH a pasta bin do Harbour, e nada mais.
Pode continuar trabalhando normalmente com o Clipper, como sempre fez.
De vez em quando, teste com Harbour, e veja se alguma coisa precisa ser diferente.
Só isso.
Vai poder trabalhar com Clipper normalmente, e vai poder testar com o Harbour.
O Harbour é igual ao Clipper, apenas alguns defaults são diferentes.
Se alterar o default do Clipper, e ajustar os fontes, os fontes continuam funcionando nos dois.
Então pode fazer isso no Clipper, vai continuar trabalhando com Clipper, e os fontes vão funcionar nos dois.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
1)
Compilação usando -n
O que é isso?
Usando -n, o nome do fonte é desprezado, o que vale é o nome que está dentro dele.
Sem -n, ROTINA1.PRG é compilado e o fonte considerado PROCEDURE ROTINA1
Com -n, ROTINA1.PRG é compilado e o fonte precisa começar com PROCEDURE ROTINA1, senão vai ficar sem nome e dá erro.
E como os fontes não tem nome, pra identificar o programa principal ele precisa ter PROCEDURE Main ou FUNCTION Main()
Esta mudança é do tipo: ou vai ou racha. Ou altera todos ou não dá.
-----ROTINA1.PRG
PROCEDURE ROTINA1
Se colocou o nome interno, não consegue compilar sem o -n, porque vai acusar rotina repetida.
Isso porque o PRG é considerado sendo ROTINA1, ao mesmo tempo em que ele contém ROTINA1
Isso vale para o Clipper e para o Harbour, o que "manda" é na compilação usar ou não o -n
Então, fazendo essa mudança, seus fontes continuam funcionando normalmente em Clipper, só precisa do -n.
clipper rotina1 -n
Compilação usando -n
O que é isso?
Usando -n, o nome do fonte é desprezado, o que vale é o nome que está dentro dele.
Sem -n, ROTINA1.PRG é compilado e o fonte considerado PROCEDURE ROTINA1
Com -n, ROTINA1.PRG é compilado e o fonte precisa começar com PROCEDURE ROTINA1, senão vai ficar sem nome e dá erro.
E como os fontes não tem nome, pra identificar o programa principal ele precisa ter PROCEDURE Main ou FUNCTION Main()
Esta mudança é do tipo: ou vai ou racha. Ou altera todos ou não dá.
-----ROTINA1.PRG
PROCEDURE ROTINA1
Se colocou o nome interno, não consegue compilar sem o -n, porque vai acusar rotina repetida.
Isso porque o PRG é considerado sendo ROTINA1, ao mesmo tempo em que ele contém ROTINA1
Isso vale para o Clipper e para o Harbour, o que "manda" é na compilação usar ou não o -n
Então, fazendo essa mudança, seus fontes continuam funcionando normalmente em Clipper, só precisa do -n.
clipper rotina1 -n
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
2)
Outra coisa comum:
Ao compilar um fonte, tudo que o fonte chamar já compila junto.
Se tiver SET PROCEDURE TO xxxx, ou DO xxxx, o compilador já trás XXXX pra compilar junto e gerar um único OBJ.
Pode facilitar para o programador, mas principalmente no Clipper, isso não é vantagem.
Porque?
O Clipper, pra economizar memória, faz "rodízio" dos OBJs.
A conclusão é simples: Se tudo está num único OBJ, ele não consegue fazer rodízio, tem que carregar tudo de uma vez.
Então o melhor seria compilar usando -m, pra cada módulo ser compilado separado.
Com isso, tem muitos OBJs que podem ser usados pra "rodízio" e economizar memória.
Como resultado, na hora de linqueditar pode ter uma lista maior de OBJs.
Alterando isso, continua funcionando em Clipper, e já fica preparado pro Harbour.
Num primeiro momento é isso.
Não é porque o Harbour obriga, é porque o resultado é melhor tanto no Clipper, quanto no Harbour.
Ajustando isso no Clipper, mesmo sem usar Harbour vai estar preparado pra ele, ou pra futuras necessidades.
Outra coisa comum:
Ao compilar um fonte, tudo que o fonte chamar já compila junto.
Se tiver SET PROCEDURE TO xxxx, ou DO xxxx, o compilador já trás XXXX pra compilar junto e gerar um único OBJ.
Pode facilitar para o programador, mas principalmente no Clipper, isso não é vantagem.
Porque?
O Clipper, pra economizar memória, faz "rodízio" dos OBJs.
A conclusão é simples: Se tudo está num único OBJ, ele não consegue fazer rodízio, tem que carregar tudo de uma vez.
Então o melhor seria compilar usando -m, pra cada módulo ser compilado separado.
Com isso, tem muitos OBJs que podem ser usados pra "rodízio" e economizar memória.
Como resultado, na hora de linqueditar pode ter uma lista maior de OBJs.
Alterando isso, continua funcionando em Clipper, e já fica preparado pro Harbour.
Num primeiro momento é isso.
Não é porque o Harbour obriga, é porque o resultado é melhor tanto no Clipper, quanto no Harbour.
Ajustando isso no Clipper, mesmo sem usar Harbour vai estar preparado pra ele, ou pra futuras necessidades.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
3)
Macros
Tem várias formas de usar macro.
Algumas delas são rejeitadas no Harbour e não no Clipper.
Com certeza tem formas aceitas nos dois.
Exemplo:
No banco tem saldo01deb, saldo02deb, saldo03deb, etc.
Isso funciona no Clipper, e pode acusar erro no Harbour.
Mas tem um jeito que funciona nos dois.
Olhe aí... ficou até mais fácil de entender o fonte.
O Harbour não aceitar... que bom... até ficou mais bonito o fonte.
A macro passou a ser de um texto, resultado de um cálculo, e não de uma variável.
Funciona em Clipper e em Harbour.
E por aí vai...
Estará melhorando os fontes em Clipper.
Se funcionar ou não no Harbour de primeira, deixa de ser preocupação.
Vai fazendo isso um pouco de cada vez, testando se funciona no Harbour, e sem abandonar o Clipper.
O principal motivo de desistência do Harbour é... funciona no Clipper, mas não funciona no Harbour....
E o tempo está passando....
Apenas vá fazendo uns testes deste tipo.
Se algo não funcionar, verifique se não tem outra forma de fazer no próprio Clipper.
Continue trabalhando normalmente no Clipper, e vá fazendo alguns ajustes de vez em quando.
Acho que é a forma mais tranquila de caminhar pra ele.
O Clipper aceita qualquer coisa de qualquer jeito.
Funcionar no Clipper e não funcionar no Harbour, pode significar que está do jeito errado.
É só por isso na cabeça, que as coisas vão ficando mais fáceis.
Pensando assim, ao invés de desistir do Harbour, pode descobrir novas formas de fazer as mesmas coisas com Clipper.
Nos tempos dos 386 cheguei a usar JOINER.
Era um compilador compatível com Clipper, que não tinha macros.
Achei que seria impossível trabalhar sem macros.
E não é que dá.
A gente sempre consegue arrumar um jeito de fazer o que queremos, com o que temos disponível.
Ah é... vamos usar o mesmo exemplo acima:
Tendo isso em trocentos fontes, como resolver sem macro?
Um jeito simples:
Pronto.
Resolvido sem macro, com fonte mais limpo, e vai rodar mais rápido do que usando macro.
E funcionando em Clipper, Joiner e Harbour... há trocentos anos atrás.
O que inicialmente considerei como defeito, serviu pra deixar rotinas mais rápidas, que eu não tinha pensado antes.
O Harbour não compila seu aplicativo em Clipper?
Vai desistir?
Apenas deixe ele de lado, na máquina, já que não atrapalha.
Pense somente se poderia melhorar o fonte, em Clipper mesmo, ou pergunte a alguém.
É assim que programação funciona:
às vezes precisamos pensar um pouco antes de fazer.
E nem sempre a melhor idéia é a primeira que aparece.
Se dá pra deixar o Harbour quietinho na máquina, e tentar na hora que quiser, é só tentar de vez em quando.
De repente pega um momento de mais inspiração, e vai com tudo.
O Harbour pode aproveitar todo fonte Clipper, mas NÃO É CLIPPER.
Não vai encontrar nenhum outro compilador tão compatível quanto ele.
Basta aceitar isso, e se aparecer alguma coisa incompatível, tentar resolver de alguma forma.
Tudo tem algum jeito diferente de ser feito.
E nem precisa trocar pra Harbour de uma vez.
Pode continuar usando Clipper e fazendo testes.
É isso.
Boa sorte a todos.
Macros
Tem várias formas de usar macro.
Algumas delas são rejeitadas no Harbour e não no Clipper.
Com certeza tem formas aceitas nos dois.
Exemplo:
No banco tem saldo01deb, saldo02deb, saldo03deb, etc.
Código: Selecionar todos
FOR nCont = 1 TO 12
cCont = StrZero( nCont, 2 )
? Saldo&cCont.Deb
NEXT
Mas tem um jeito que funciona nos dois.
Código: Selecionar todos
FOR nCont = 1 TO 2
cCont := StrZero( nCont 2 )
? &( "Saldo" + cCont + "Deb" )
NEXT
O Harbour não aceitar... que bom... até ficou mais bonito o fonte.
A macro passou a ser de um texto, resultado de um cálculo, e não de uma variável.
Funciona em Clipper e em Harbour.
E por aí vai...
Estará melhorando os fontes em Clipper.
Se funcionar ou não no Harbour de primeira, deixa de ser preocupação.
Vai fazendo isso um pouco de cada vez, testando se funciona no Harbour, e sem abandonar o Clipper.
O principal motivo de desistência do Harbour é... funciona no Clipper, mas não funciona no Harbour....
E o tempo está passando....
Apenas vá fazendo uns testes deste tipo.
Se algo não funcionar, verifique se não tem outra forma de fazer no próprio Clipper.
Continue trabalhando normalmente no Clipper, e vá fazendo alguns ajustes de vez em quando.
Acho que é a forma mais tranquila de caminhar pra ele.
O Clipper aceita qualquer coisa de qualquer jeito.
Funcionar no Clipper e não funcionar no Harbour, pode significar que está do jeito errado.
É só por isso na cabeça, que as coisas vão ficando mais fáceis.
Pensando assim, ao invés de desistir do Harbour, pode descobrir novas formas de fazer as mesmas coisas com Clipper.
Nos tempos dos 386 cheguei a usar JOINER.
Era um compilador compatível com Clipper, que não tinha macros.
Achei que seria impossível trabalhar sem macros.
E não é que dá.
A gente sempre consegue arrumar um jeito de fazer o que queremos, com o que temos disponível.
Ah é... vamos usar o mesmo exemplo acima:
Código: Selecionar todos
FOR nCont = 1 TO 10
cCont := StrZero( nCont, 2 )
? &( "saldo" + cCont + "Deb" )
NEXT
Um jeito simples:
Código: Selecionar todos
FOR nCont = 1 TO 10
? SaldoDeb( nCont )
NEXT
FUNCTION SaldoDeb( nCont )
DO CASE
CASE nCont == 1; RETURN Saldo01Deb
CASE nCont == 2; RETURN Saldo02Deb
CASE ...
ENDCASE
RETURN 0
Resolvido sem macro, com fonte mais limpo, e vai rodar mais rápido do que usando macro.
E funcionando em Clipper, Joiner e Harbour... há trocentos anos atrás.
O que inicialmente considerei como defeito, serviu pra deixar rotinas mais rápidas, que eu não tinha pensado antes.
O Harbour não compila seu aplicativo em Clipper?
Vai desistir?
Apenas deixe ele de lado, na máquina, já que não atrapalha.
Pense somente se poderia melhorar o fonte, em Clipper mesmo, ou pergunte a alguém.
É assim que programação funciona:
às vezes precisamos pensar um pouco antes de fazer.
E nem sempre a melhor idéia é a primeira que aparece.
Se dá pra deixar o Harbour quietinho na máquina, e tentar na hora que quiser, é só tentar de vez em quando.
De repente pega um momento de mais inspiração, e vai com tudo.
O Harbour pode aproveitar todo fonte Clipper, mas NÃO É CLIPPER.
Não vai encontrar nenhum outro compilador tão compatível quanto ele.
Basta aceitar isso, e se aparecer alguma coisa incompatível, tentar resolver de alguma forma.
Tudo tem algum jeito diferente de ser feito.
E nem precisa trocar pra Harbour de uma vez.
Pode continuar usando Clipper e fazendo testes.
É isso.
Boa sorte a todos.
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/
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/
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
Nota:
O Clipper continuará funcionando em Windows 10 32 bits.
Postei este roteiro como uma forma de animar quem está desanimado com Harbour.
Como eu disse algumas vezes, passei por essa fase, e sei que é desanimador ver algo que funciona não funcionar mais.
Nessas horas, um caminho alternativo que anime faz muita diferença.
No final, vai acabar esquecendo o que era compatível ou não, porque vai acostumar a fazer de outro jeito.
O que fez me lembrar foi o que mencionei, do ano passado ter assumido o aplicativo em Clipper Summer.
Aproveitando....
Uma diferença básica do Summer foi justamente ele aceitar errado, não precisar vírgulas no replace.
O Clipper Summer aceita a linha acima.
Já no Clipper 5.1 ou Harbour, é obrigatória a vírgula.
Para o programador que considerar isso problema, pode desanimar com Clipper 5.1 ou Harbour.
Para o programador que considerar isso uma melhoria em seus fontes, vai ficar animado com a melhora.
No final, a conversão pode depender de detalhes desse tipo, de como se sente com alguma incompatibilidade.
É compatível? Sim, nas coisas certas.
Se acostumou do jeito errado.... com certeza rapidinho vai se acostumar a colocar as vírgulas.
Só compilar com Harbour de vez em quando, pra ele te avisar aonde falta colocar vírgulas.
E continuar normalmente com Clipper.
Terminou isso, vamos ver se tem algo mais pra acertar....
Não tem mais nada... Sucesso.
É trabalhar normalmente, ajustando alguma coisa SE QUISER, quando quiser, na hora que quiser, e na hora que puder.
O resultado é sempre sucesso, não importa quanto tempo demore.
O Clipper continuará funcionando em Windows 10 32 bits.
Postei este roteiro como uma forma de animar quem está desanimado com Harbour.
Como eu disse algumas vezes, passei por essa fase, e sei que é desanimador ver algo que funciona não funcionar mais.
Nessas horas, um caminho alternativo que anime faz muita diferença.
No final, vai acabar esquecendo o que era compatível ou não, porque vai acostumar a fazer de outro jeito.
O que fez me lembrar foi o que mencionei, do ano passado ter assumido o aplicativo em Clipper Summer.
Aproveitando....
Uma diferença básica do Summer foi justamente ele aceitar errado, não precisar vírgulas no replace.
Código: Selecionar todos
REPLACE CODIGO WITH 5 NOME WITH "JUCA" ENDERECO WITH "SPAULO"
Já no Clipper 5.1 ou Harbour, é obrigatória a vírgula.
Código: Selecionar todos
REPLACE CODIGO WITH 5, NOME WITH "JUCA", ENDERECO WITH "SPAULO"
Para o programador que considerar isso uma melhoria em seus fontes, vai ficar animado com a melhora.
No final, a conversão pode depender de detalhes desse tipo, de como se sente com alguma incompatibilidade.
É compatível? Sim, nas coisas certas.
Se acostumou do jeito errado.... com certeza rapidinho vai se acostumar a colocar as vírgulas.
Só compilar com Harbour de vez em quando, pra ele te avisar aonde falta colocar vírgulas.
E continuar normalmente com Clipper.
Terminou isso, vamos ver se tem algo mais pra acertar....
Não tem mais nada... Sucesso.
É trabalhar normalmente, ajustando alguma coisa SE QUISER, quando quiser, na hora que quiser, e na hora que puder.
O resultado é sempre sucesso, não importa quanto tempo demore.
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/
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/
Clipper pra Harbour
Grande aula, José Quintas!
A meu ver, muita gente quer tudo pronto. Simplesmente copiar e colar alguma função de alguém, sem se preocupar em entender um mínimo do que tem lá dentro. Aí, quando dá um pau na função, digamos numa linha com uma matriz de meia dúzia de dimensões (que foi mal dimensionada), o cara corre pra pedir arrego no Forum e, na discussão, acaba confessando que “não sabe lidar muito bem com matrizes...”. Assim fica difícil.
Tem que conhecer pelo menos os fundamentos, né não? Não dá pra começar a jogar Counter Strike on line, no nível máximo de dificuldade, sem cheat codes, contra adversários russos...
Pergunto: quantos iniciantes pararam pra entender, num nível mínimo adequado, o que é e pra que serve o PATH? Sou capaz de apostar que o % não saiu de 1 dígito. A maioria já roda o botão do mouse lá pra baixo, procurando algum código pra copiar e colar...
É como um meme que rola na net, um moleque dizendo que não quer perder tempo estudando álgebra, trigonometria, essas chatices, porque ele quer é ser, no futuro, um criador de games...
A meu ver, muita gente quer tudo pronto. Simplesmente copiar e colar alguma função de alguém, sem se preocupar em entender um mínimo do que tem lá dentro. Aí, quando dá um pau na função, digamos numa linha com uma matriz de meia dúzia de dimensões (que foi mal dimensionada), o cara corre pra pedir arrego no Forum e, na discussão, acaba confessando que “não sabe lidar muito bem com matrizes...”. Assim fica difícil.
Tem que conhecer pelo menos os fundamentos, né não? Não dá pra começar a jogar Counter Strike on line, no nível máximo de dificuldade, sem cheat codes, contra adversários russos...
Vc colocou isso, corretamente, logo no início do tópico, algo pra ser entendido antes de continuar. Fundamento Zero.Precisa de tudo configurado certo, e no Harbour não vai ser diferente.
PATH
LIB
INCLUDE
Pergunto: quantos iniciantes pararam pra entender, num nível mínimo adequado, o que é e pra que serve o PATH? Sou capaz de apostar que o % não saiu de 1 dígito. A maioria já roda o botão do mouse lá pra baixo, procurando algum código pra copiar e colar...
É como um meme que rola na net, um moleque dizendo que não quer perder tempo estudando álgebra, trigonometria, essas chatices, porque ele quer é ser, no futuro, um criador de games...
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Clipper pra Harbour
Relatou bem.
É bom até lembrar, porque tem gente que esquece disso, e é importante:
Pra que serve o PATH?
Quando se executa um comando no prompt, ele carrega o programa.
Se estiver na pasta errada.... ele não funciona.
Mas se indicar pastas em PATH, o sistema operacional vai buscar automaticamente nessas pastas pra ver aonde está.
SET PATH=\windows;\clipper\bin;\harbour\bin;\minigui\harbour\bin
Pra que serve isso?
Ao digitar um comando, o sistema vai procurar por ele:
- na pasta atual
- na pasta \windows
- na pasta \clipper\bin
- na pasta \harbour\bin
- na pasta \minigui\harbour\bin
Isso serve para poder executar um programa a partir de qualquer pasta, mesmo que ele esteja numa dessas outras pastas.
E uma coisa importante não é apenas colocar a lista de pastas, é lembrar que TODAS podem ser usadas.
Tempos atrás vi um usuário que instalou várias versões do Harbour, e colocou algumas pastas no PATH.
Qual o problema nisso?
O sistema operacional vai pegar da primeira pasta em que encontrar o arquivo.
O sistema operacional não sabe se é o arquivo certo ou errado, ele apenas obedece a sua configuração.
E misturar um com o outro, não funciona.
O mesmo vale pra LIB, INCLUDE, OBJ.
Então se algo não funciona, primeira coisa é conferir essas referências.
No Clipper também sempre foi assim.
É que geralmente a máquina já está configurada pra Clipper, há muitos anos.
Faz tanto tempo... que a gente esquece... e até pensa que é tudo automático, e que é o Harbour que complica.
Mudou muita coisa dos tempos do DOS para o Windows atual.
Mas essa parte continua como sempre foi.
Isso começou no DOS 3.0, e continua valendo pra Windows 10.
São uns 30 anos sendo da mesma forma.
É uma coisa que vale a pena entender, mesmo que na maoria das vezes isso seja configurado automático.
Quer aproveitar isso para o sistema?
Quer executar pelo programa o explorer, bloco de notas, word, excel, mas não funciona?
Que tal indicar a pasta desses programas no PATH?
É bom até lembrar, porque tem gente que esquece disso, e é importante:
Pra que serve o PATH?
Quando se executa um comando no prompt, ele carrega o programa.
Se estiver na pasta errada.... ele não funciona.
Mas se indicar pastas em PATH, o sistema operacional vai buscar automaticamente nessas pastas pra ver aonde está.
SET PATH=\windows;\clipper\bin;\harbour\bin;\minigui\harbour\bin
Pra que serve isso?
Ao digitar um comando, o sistema vai procurar por ele:
- na pasta atual
- na pasta \windows
- na pasta \clipper\bin
- na pasta \harbour\bin
- na pasta \minigui\harbour\bin
Isso serve para poder executar um programa a partir de qualquer pasta, mesmo que ele esteja numa dessas outras pastas.
E uma coisa importante não é apenas colocar a lista de pastas, é lembrar que TODAS podem ser usadas.
Tempos atrás vi um usuário que instalou várias versões do Harbour, e colocou algumas pastas no PATH.
Qual o problema nisso?
O sistema operacional vai pegar da primeira pasta em que encontrar o arquivo.
O sistema operacional não sabe se é o arquivo certo ou errado, ele apenas obedece a sua configuração.
E misturar um com o outro, não funciona.
O mesmo vale pra LIB, INCLUDE, OBJ.
Então se algo não funciona, primeira coisa é conferir essas referências.
No Clipper também sempre foi assim.
É que geralmente a máquina já está configurada pra Clipper, há muitos anos.
Faz tanto tempo... que a gente esquece... e até pensa que é tudo automático, e que é o Harbour que complica.
Mudou muita coisa dos tempos do DOS para o Windows atual.
Mas essa parte continua como sempre foi.
Isso começou no DOS 3.0, e continua valendo pra Windows 10.
São uns 30 anos sendo da mesma forma.
É uma coisa que vale a pena entender, mesmo que na maoria das vezes isso seja configurado automático.
Quer aproveitar isso para o sistema?
Quer executar pelo programa o explorer, bloco de notas, word, excel, mas não funciona?
Que tal indicar a pasta desses programas no PATH?
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/
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/
