Clipper On Line • Ver Tópico - Dica do dia: Atualizando fontes velhos e -w3 -es2

Dica do dia: Atualizando fontes velhos e -w3 -es2

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

Moderador: Moderadores

 

Dica do dia: Atualizando fontes velhos e -w3 -es2

Mensagempor JoséQuintas » 01 Fev 2019 20:26

Mexendo nestes fontes do Flagship.... usei e ainda uso algumas ferramentas pra ajudar, e nem percebi.

Um ponto importante:
O computador é pra ajudar em tarefas repetitivas, isso inclui a tarefa de programação também.
Não é rápido ajustar aplicativos pra compilar usando -w3 -es2, pode levar meses, então aceleração é sempre bem útil.

Tem a formatação do fonte, muito programa antigo tá ruim nisso daí.
Uso meu formatador de fontes, mas se der uso o do Harbour, que vai mais fundo.

Em fontes antigos, ou de terceiros, uma tarefa difícil seria identificar entre variáveis e campos de arquivo.

Uma ajuda rápida pra isso é usar o Harbour.
Directory( "*.dbf" ) pra pegar a lista de arquivos, dbStruct() pra pegar nomes de campos dos arquivos, e gerar um CH com declarações FIELD.
Pelo menos isso já isola a maioria dos nomes de campos, exceto arquivos temporários, e reduz a quantidade de nomes pra dar atenção.

Também dá pra usar o Harbour pra adicionar a declaração PROCEDURE, se os fontes não tiverem isso, e um #include "lixo.ch", pra incluir a declaração acima, e outras declarações que possam ser interessantes. São declarações "quebra-galho", então melhor destacar que precisa ser removido depois.
Parecido com o anterior, e parecido com isto: Directory(), e hb_MemoWrit( arquivo, [#include "lixo.ch"] + hb_Eol() + [PROCEDURE ] + nome + hb_Eol() + MemoRead( arquivo ) )

As etapas que acho interessantes, que as etapas anteriores devem ajudar, seriam:
- formatar fonte
- compilar usando -m -n

Depois disso dá pra pensar no -w3 -es2

Também dá pra usar o Harbour pra ajudar mais nisso:
Uma vez que gerou CH pra campos de arquivos, talvez gerar pra variáveis..... como ? vasculhar o fonte?
Não... talvez baste pegar a saída do HBMK2/Harbour, que vai mostrar variáveis não declaradas.
Dá pra fazer isso, e ir acrescentando no lixo.ch os nomes com MEMVAR.
O ideal vai ser declarar LOCAL, mas mesmo usando MEMVAR, a ajuda é muuuito grande.
Uma dica no Harbour é usar o -ge1, que é uma lista de erros em formato "amigável"

Tudo declarado, e dentro do lixo.ch, é possível que dê pra compilar usando -w3 -es2

A próxima etapa pode se tornar mais simples:
vai ser apagar um MEMVAR de cada vez do lixo.ch, e já resolver aquela variável para o aplicativo inteiro.
Pode precisar recompilar várias vezes, sem problemas, melhor o computador ter trabalho do que você.

Também pode fazer isso em um fonte de cada vez.
Pode ser interessante ver o resultado em alguns fontes, antes de partir pra alteração em massa.

Também pode criar fontes pra ajudar a mexer nos fontes !
De repente encontra trechos que se repetem em vários fontes, e quer trocar todos de uma vez.
Mesma coisa... Directory()... cTxt := MemoRead( arquivo ); cTxt := StrTran( cTxt, "de", "para" ); hb_MemoWrit( arquivo, cTxt )

Lembre-se de criar backup, ou usar um gerenciador de fontes como o GIT, para o caso de fazer besteira e precisar retornar o fonte anterior.

E é sempre bom começar pela formatação do fonte, porque isto considera que TODO o fonte foi alterado, e isto ficando em primeiro lugar, nas próximas alterações vai mostrar o que realmente vai estar alterando no fonte, e vai ser melhor de acompanhar as etapas seguintes.

No caso dessa parte automática, de declarações, é esperado que pode haver campos com mesmo nome de variáveis, e gerar problemas.
Tudo bem... o que der pra fazer automático vai ajudar, se não puder tudo, pelo menos uma parte, ou nenhuma, pelo menos tentou...

Pode acrescentar #pragma -w0 #pragma -es0 em todos os fontes, e depois ir eliminando um por um e ajustando um por um pra -w3 -es2.

Isso cansa... quando cansar, compile com -e0 -es0, e deixe pra continuar em outro dia.

Mas é bom no começo fazer um fonte de cada vez, assim pode ir encontrando mais coisas que poderiam ser alteradas.
Mas... não queira alterar tudo de uma vez: ao tirar o foco de um tipo de alteração, isso pode fazer perder até mais tempo...
Pode ser mais interessante alterar uma coisa de cada vez, assim aquele tipo de coisa fica resolvido.
Senão... pode acumular problemas ao invés de soluções.

Até que o Programmers Notepad ajuda muito nisso, ao configurar pra funcionar igual IDE.
Ele mostrando a lista de erros pra poder clicar... é bem prático.

teste.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: Atualizando fontes velhos e -w3 -es2

Mensagempor JoséQuintas » 01 Fev 2019 20:35

Em fonte antigo é normal isto: variável declarada que não é usada pra nada.
Não sei dizer se no Clipper tinha esta checagem adicional: mostrar variáveis e rotinas que não servem pra nada.

teste2.png


Nota: aproveitei pra mexer nas cores.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: Atualizando fontes velhos e -w3 -es2

Mensagempor JoséQuintas » 01 Fev 2019 20:53

É phoda encontrar coisas deste tipo....

teste3.png


Existe SIM um arquivo de fornecedores, e um de clientes.
Neste fonte, F_FORN valida CLIENTE, e a mensagem é "fornecedor não cadastrado".

Se não tomar cuidado nas alterações... ao invés de corrigir, vai estar estragando....
Em outros fontes, F_FORN valida fornecedores mesmo.... rs

E é sério isso... cada fonte tem sua própria rotina de validar clientes/fornecedores/etc.
Tá parecendo até programa Windows, feito em IDE Windows... rs

Por isso é bom fazer certas alterações em um fonte de cada vez, pra ver o que acontece, ou pesquisar a mesma função em vários fontes diferentes.

f_cli.png


f_forn.png


Nota:
Tem fonte em uso e fonte fora de uso, fica complicado alterar tudo de uma vez.
E pior que isso... tem variáveis para trabalhar com número e com caractere... 1 e "00001" por exemplo.
Corre o risco de erro de tipo errado, ao fazer alterações.

Só mesmo usando -w3 -es2, e alterando uma variável de cada vez, alterando funções relacionadas àquela variável.

Com o tempo a gente deixa de fazer coisas desse tipo.
Mas fontes aonde vários programadores põem a mão... acho que nenhum quer se responsabilizar por causar problemas... e vai ficando....

Por isso é interessante organizar fontes.
A gente vai pegando o jeito do aplicativo, e vai simplificando tudo.
Senão... uma hora dá um problema grave... e ninguém vai conseguir resolver...
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Dica do dia: Atualizando fontes velhos e -w3 -es2

Mensagempor JoséQuintas » 01 Fev 2019 21:03

Aproveitando....

Tem horas que é melhor nem entender o aplicativo.
O melhor é ir reduzindo fontes, pra entender depois.... rs
Pelo menos enquanto isso for possível.... e não tiver alguma bomba pra resolver.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18009
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

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


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro