Clipper On Line • Ver Tópico - Migrando de Clipper 5.2 para HMG 3.0.35

Migrando de Clipper 5.2 para HMG 3.0.35

Projeto MiniGui - Biblioteca visual para Harbour/xHarbour

Moderador: Moderadores

 

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 12 Jan 2013 23:12

Prezados,

Boa Noite!


Tenho um aplicativo feito em Clipper 5.2, cuja finalidade é “padronizar” algumas centenas de arquivos do tipo “dbf, cada arquivo representando a produção de um mês especificamente.

O objetivo final deste aplicativo é poder reunir em uma só tabela (em SQL ou MYSQL), todos os “dbfs”.

Acontece que estes arquivos “dbfs” refletem a evolução da construção desta base de dados ao longo de vários anos. Portanto, ocorreram alterações nas estruturas dos dados.

Sabemos que para criar uma única tabela ou fazer um “Append from” em todos os arquivos “dbfs”, há necessidade de padronizar as estruturas dos arquivos. Aí é que entra o meu aplicativo: “PADRONIZADOR.EXE”.

Este aplicativo funciona redondinho no Clipper 5.2.

Eu gostaria de migrar para HMG 3.0.35. Na verdade já fiz isto. E vi que a migração agrega muita velocidade no processamento do aplicativo. O meu aplicativo em Clipper 5.2 processa 2.500 registros por minuto, o aplicativo migrado para HMG 3.0.35 processa 9.003 por minuto.

Porém, o aplicativo migrado para HMG 3.0.35 começa rodar bonitinho, por algum motivo que desconheço, num dado momento, sem explicação óbvia, ele trava a “Label” que notifica a progressão do processamento, muito embora ele ainda continua processando. O que podemos ver quando observamos no Explorer do Windows o crescimento do novo arquivo que recebe a padronização, mas depois, trava tudo. Inclusive, só sai com “Alt-F4” ou “Ctrl-Alt-Del”. Também o arquivo padronizado fica ilegível.

Eu posso enviar os fontes por e-mail... Eu gostaria que alguém, que é experiente em HMG, por favor, verificasse se algum componente aproveitado do Clipper 5.2 é incompatível com HMG 3.0.35.

Atenciosamente,

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor Jairo Maia » 13 Jan 2013 13:32

Olá Jamil,

jsnascimento escreveu:Eu gostaria que alguém, que é experiente em HMG, por favor, verificasse se algum componente aproveitado do Clipper 5.2 é incompatível com HMG 3.0.35.
Experiente não é meu caso, mas posso adiantar que tudo que você usava no Clipper 5.2 pode ser usado em Harbour, e portanto na HMG, desde que modo console.

A HMG 3.0.35 usa o Harbour 2.0. Já tentou usar uma IDE mais recente? As versões mais recentes usam o Harbour 3.2.
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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 13 Jan 2013 14:33

Prezado Jairo Maia,
Boa Noite!


Perdão! Eu não fui feliz na colocação: "Eu gostaria que alguém, que é experiente em HMG..." - nestas palavras eu estava dizendo mais a respeito de mim mesmo, que sou inexperiente no Harbur, do que dos possíveis colaboradores que porventura interessassem me ajudar. Perdão! Expressei-me mal.

Mas voltando ao caso: é exatamente isto que eu não quero, ou seja, deixar o meu aplicativo com cara do "DOS". Eu já tenho o aplicativo rodando perfeitamente em modo Clipper 5.2 (console); mas para melhor apresentação junto a terceiros, eu queria migrar para o modo gráfico que é oferecido pelo HMG(IDE).

Como disse anteriormente, fui atrás da aparência gráfica e fui surpreendido com ganho de velocidade na execução do aplicativo, uma vez que o código é transformado em "C".

Outra coisa, testei várias versões do HMG = (hmg.3.0.35, hmg.3.0.44 e hmg.3.1.1) - Todas deram o mesmo problema.

Será que você passaria o olho nos meus códigos para verificar se há algo incompatível com o modo gráfico? Não é muita coisa...

Abraços!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor Pablo César » 13 Jan 2013 20:12

Olá Jamil, seria interessante que você poste o código fonte do seu aplicativo. Se for muita coisa, compacte (zipando os prgs) e anexando-o na sua próxima mensagem. Para inicio, acho que iria ficar melhor se você substituir o label por ProgressBar. Teríamos que avaliar a frequência que é exibido e mudado em tela a sua label.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 13 Jan 2013 21:13

Prezados,

Boa Noite!

Segue aí meus fontes.
Padronizador.rar
Meus fontes do aplicativo: Padronizador
(55.97 KiB) Baixado 145 vezes


Por favor, se alguém puder ajudar-me agradecerei muito.

Obrigado!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 15 Jan 2013 12:14

Prezados colegas de Fórum,

Postei os meus fontes no dia (13/01/2013); seguindo conselho do moderador "Pablo César".

Constam dez download do compactado que enviei (Padronizador.rar).

Alguém, por favor, poderia me ajudar ou orientar a respeito do "bug" que está ocorrendo em meu aplicativo?

Muito Obrigado!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor Pablo César » 15 Jan 2013 22:08

Oi Jamil,

Desculpe se eu não respondi antes. Eu e minha família, encontramo-nos ainda de férias e não estou podendo dedicar-me mais intensamente ao fórum. Eu fiz o download e dei uma revisada rápida no seus fontes. Por tratar-se de vários fontes e eu estar com o meu tempo limitado, só deu pra ver que tem alguns comandos que você está usando e que só servem para o modo console como por exemplo Inkey, RESTORE SCREEN no Main_Adireg.prg

O seu Main carrega o formulário e deve ser analisado, pelo pouco que vi precisa avaliar o acionamento de funções nos eventos corretos. Não é ainda uma afirmação, mas pelo que pareceu-me não deveria ser no ONGOTFOCUS. O lebale Resultado, eu fosse você substituiria por um ProgressBar mas também teria que ser alimentado no laço onde não comprometera a sua performance.

Se você tiver paciência de esperar até eu retornar de viagem, terei prazer de te ajudar ou então espero que outro colega com maior tempo possa ir de auxilio.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar de usuário

Pablo César
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 5312
Data de registro: 31 Mai 2006 10:22
Cidade/Estado: Curitiba - Paraná
Curtiu: 142 vezes
Mens.Curtidas: 152 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 15 Jan 2013 22:38

Prezado Pablo César,

Boa Noite!


Obrigado pelo interesse em ajudar-me.

Eu posso esperar sim e farei isto.

Descanse bastante com a família!

Porém, estou aberto a qualquer posicionamento dos outros colegas.

Como disse: sou iniciante no Harbour e preciso mesmo de ajuda.

Abrcs!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor alxsts » 21 Jan 2013 21:39

Olá!

Antes de analisar este caso, gostaria que você verificasse se o problema persiste após as modificações feitas no tópico Tecla de Abortamento. Talvez aquele Do Events colocado dentro do laço resolva este problema também.

PS: para referenciar um tópico, como fiz acima, ou outra URL qualquer, use a tag URL que fica na barra de ferramentas da caixa de edição de mensagens.
Nos exemplos abaixo, vou trocar os colchetes por parenteses apenas para você ver como funciona. Quando você clica no botão URL, é gerada a string (url)(/url). Altere, copiando a URL do tópico em questão da barra do teu navegador e dando uma descrição, para que fique assim: (url=http://www.pctoledo.com.br/forum/viewtopic.php?f=4&t=13825)Tecla de Abortamento(/url)
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor Jairo Maia » 22 Jan 2013 11:04

Olá Jamil,

Dentro do laço de processamento, você tem esta parte de código:
Wreg_tual := recno()
Wdivisor  := 195   
          
If Wreg_tual%Wdivisor == 0   
  SetProperty("Main","Resultado","Value","Processando o arquivo: "+ Wnom_arq + " => " + lTrim(Str(Wreg_tual)) + "/" + lTrim(Str(Wtotreg)))
  SetProperty("main","Resultado","FONTCOLOR",{255,0,0,})
  SetProperty("main","Resultado","FONTSIZE",8)
  SetProperty("main","Resultado","TRANSPARENT", .T.)
Endif

Veja que a cada 195 registros você está alterando várias propriedades do Form, mas não precisa. Sugiro que altere somente a propriedade de exibição dos dados, deixando esta parte assim:
Wreg_tual := recno()
Wdivisor  := 195   
          
If Wreg_tual%Wdivisor == 0   
  SetProperty("Main","Resultado","Value","Processando o arquivo: "+ Wnom_arq + " => " + lTrim(Str(Wreg_tual)) + "/" + lTrim(Str(Wtotreg)))
Endif

Quanto ao travamento:
Não sei se pode ser isso, mas penso que pode ter algo a ver. Quando você diz que o sistema para de trabalhar, será que não está ligado ao congestionamento da memória? Digo isto porque você para cada registro está usando o APPEND BLANK, isto cria um novo registro em branco e bloqueia para receber os dados. Ocorre que ele fica na memória, e sai da memória e destrava os registros após fechar o aliás, ou usar um comendo para salvar os dados. Assim, sugiro que após o trecho que você exibe os dados de processamento na tela (este acima), você acrescente o seguinte:
If Wreg_tual % 1000 == 0    
  COMMIT  // salva os dados e libera a memória a cada 1,000 registros
Endif

Tente esta alteração e veja se funciona.

Em tempo:
Aproveito para parabenizar o colega Alexandre Santos pela solução do evento do teclado. Show de bola!
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 de usuário

Jairo Maia
Colaborador

Colaborador
 
Mensagens: 2733
Data de registro: 16 Ago 2010 13:46
Cidade/Estado: Campinas-SP
Curtiu: 371 vezes
Mens.Curtidas: 305 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 22 Jan 2013 11:35

Prezado Jairo e Alexandre,
Bom dia!


Jairo,
Veja que a cada 195 registros você está alterando várias propriedades do Form, mas não precisa. Sugiro que altere somente a propriedade de exibição dos dados, deixando esta parte assim...


Você está correto! É melhor simplificar. Farei isto.

Quando você diz que o sistema para de trabalhar, será que não está ligado ao congestionamento da memória? Digo isto porque você para cada registro está usando o APPEND BLANK, isto cria um novo registro em branco e bloqueia para receber os dados. Ocorre que ele fica na memória, e sai da memória e destrava os registros após fechar o aliás, ou usar um comendo para salvar os dados. Assim, sugiro que após o trecho que você exibe os dados de processamento na tela (este acima), você acrescente o seguinte: COMMIT


Semelhante a sugestão anterior. Vou implementar.

Alexandre,
Estou neste momento processando três arquivos originais, com 664.720.982 bytes cada um, 1.060.000 de registros cada um deles. Processou o primeiro e está no segundo. Está levando cerca de 55 minutos cada um. Durante o processamento estou alternando para tarefas do Windows, retornando, usei a tecla F10 e tudo está funcionando perfeitamente.
Engraçado, agora o Button "Sair", que antes não funcionava durante o processamento, está funcionando também. Eu direcionei o evento “Action” deste botão para a Função MyExit() e ele funcionou perfeitamente.

O "Pulo do Gato" parece ser mesmo o "Do Events".

A noite eu volto a postar aqui!

Obrigado!

Abraços a todos!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor alxsts » 22 Jan 2013 11:54

Olá!

Ótimo! Espero que termine como desejado.

Vou acrescentar mais uma sugestão às já feitas pelo Jairo: depois que o usuário clicar no botão processar e digitar as iniciais do arquivo, desabilite o botão processar para que ele não clique novamente durante o processamento.

Jairo: obrigado pela costumeira gentileza.
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor jsnascimento » 22 Jan 2013 13:08

Prezado Alexandre,

Boa Tarde!


Vou acrescentar mais uma sugestão às já feitas pelo Jairo: depois que o usuário clicar no botão processar e digitar as iniciais do arquivo, desabilite o botão processar para que ele não clique novamente durante o processamento.


Com certeza! Não podemos deixar brecha para o usuário ter ações inadvertidas. O certo é desabilitar o button "Processar" durante o processamento.

Tentei algumas coisas, mas não funcionaram:

 If Len(alltrim(Wini_dbf)) == 2
      SetProperty("main","Resultado","VALUE",Wini_dbf+ " - ENTRADA VÁLIDA!")
      SetProperty("main","Resultado","FONTCOLOR",{0,128,128})
      SetProperty("main","Resultado","FONTSIZE",8)
      SetProperty("main","Resultado","TRANSPARENT", .T.)
      Do Events
      // Desabilita o Button = "Processar"

        ***  Tentativa Nº.1 dá erro: Error BASE/1003 Variable does not exist: PROCESSAR
         PROCESSAR:disable()   

         *** Tentativa Nº.2  dá erro: ERROR E0030 "syntax error at '.'"
         DoMethod("Main","PROCESSAR","disable")

        *** Tentativa Nº.3  dá erro: ERROR E0030 "syntax error at '.'"
         Main.PROCESSAR.disable()

      main_Padronizar(Wini_dbf)
ENDIF


Você tem alguma sugestão?

Obrigado!

Jamil S. Nascimento
" Deus amou o mundo de tal maneira que deu seu Filho Unigênito para que o mundo fosse salvo por intermédio dele." João 3:16
jsnascimento
Usuário Nível 1

Usuário Nível 1
 
Mensagens: 21
Data de registro: 08 Jul 2004 20:05
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor HASA » 22 Jan 2013 13:33

:))
Boa tarde, tente:

Main.resultado.enabled := .F. && Desabilita e;
Main.resultado.enabled := .T. && habilita no final do processo, ok.
:xau
Hasa
Avatar de usuário

HASA
Colaborador

Colaborador
 
Mensagens: 1082
Data de registro: 01 Set 2003 19:50
Cidade/Estado: São Paulo
Curtiu: 1 vez
Mens.Curtidas: 51 vezes

Migrando de Clipper 5.2 para HMG 3.0.35

Mensagempor alxsts » 22 Jan 2013 13:35

Olá!

Veja:
*------------------------------------------------------------------------------*
* ---> HABILIDTA A SAÍDA DE EMERGÊNCIA/ABORTAMENTO DO APLICATIVO COM A TECLA F10
*------------------------------------------------------------------------------*
*Sugestão do Alexandre  Santos (AlxSts) em 20/01/2013
*
EnableF10() 
// Desabilita botão processar
Main.Processar.Enabled := .F.     
Eu alteraria o Caption do botão sair para "Sair (F10)"
[]´s
Alexandre Santos (AlxSts)
alxsts
Colaborador

Colaborador
 
Mensagens: 2945
Data de registro: 12 Ago 2008 15:50
Cidade/Estado: São Paulo-SP-Brasil
Curtiu: 21 vezes
Mens.Curtidas: 248 vezes

Próximo



Retornar para MiniGui

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 12 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