Página 3 de 5

Compilar através da IDE da HMG versão 3.0.35

Enviado: 01 Mar 2015 23:09
por microvolution
Gente pelo que pesquisei aqui mesmo no fórum, o erro:
===
error e0004 local declaration follows executable statement
===
refere-se a uma declação de variável LOCAL em local errado do programa (apesar de estar no início).
Mudei para STATIC e continuou o erro.
Como estamos aprendendo, mudei para PRIVATE ou PUBLIC e aceitou.
Só que os caros professores sabem o que aconteceu?
Voltamos ao início de tudo. Dá uma tela sem erro e sem um programa executável.

Aguardo mais informações, agora vou descanar.
Abraços!
MICROVOLUTION/W DE PAULA.

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 11:07
por microvolution
oLÁ TOLEDO bom dia!

Não estou compilando em modo console "hbmk2 sicca34" e sim usando desta vez sua orientação aqui de como usar através da IDE do HMG.
Segui mais uma vez o passo a passo.
Apesar que não instalei na pasta de recomendação (acho q não há problema nisso), instalei na unidade/pasta: g:\mvinfo\hmg (versão 3.0.35, etc, etc).
Quanto a essas suas linhas de ontem à noite (antes de minha última postagem):
====
Amigo, para compilação modo console veja este tópico:

Migrar Clipper para Harbour

microvolution escreveu:hbmk2: Linkando... SICCA34.exe
g:/mvinfo/hmg.3.0.35/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot find -lhwgui


Você deve ter relacionado para compilação a lib hwgui, que não pertence a MiniGui, como o próprio nome da lib diz, esta lib é da HwGui. Agora resta saber se no seu programa você está usando alguma função da HwGui.

Abraços,
====
A pergunta vem, como que altero isso, se não estou usando o modo console que é acionado através do CMD (command do win)?
Outra pergunta: não coloquei as variáveis de ambiente na guia AVANÇADO do windows, então não poderiam as PATHs e SET rodarem automaticamente. Correto?
a IDE/HMG faz a leitura automática dos PATHs, tem algum lugar nela que se altera isso?
Finalmente, apesar de na IDE/HMG não apresentar nenhum erro, o motivo pelo qual não está compilando é essas linhas acima?

Grato,
MICROVOLUTION, W de Paula.

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 17:03
por Toledo
microvolution escreveu:meus programas foram gerados com o auxílio de um aplicativo da SQUADRA da cidade de Belo Horizonte, por nome de SCULPTOR 3.31
microvolution escreveu:Não estou compilando em modo console
Bom, se você está tentando compilar na IDE este programa gerado pelo Sculptor, independente se a compilação é pela IDE ou pelo prompt do DOS, a compilação é em modo console.

Eu cheguei a gerar um programa com o Sculptor, mas na época também comprei o GASPro e optei por este último, então não me lembro como era o código do Sculptor e se ele usava alguma LIB do próprio Sculptor. Mas mesmo assim, continua valendo as regras (passo 3 do tutorial) que postei no tópico "Migrar Clipper para Harbour".

Sobre a lib hwgui que está ocorrendo o erro, não sei dizer porque a IDE relacionou esta lib, mas acho que esta lib não foi incluída na compilação pela IDE, provavelmente você deve ter feito isto manualmente no arquivo HBP ou HBC.

Poste aqui o conteúdo do seu arquivo HBP e HBC (se existir).

Lembrando: se o Sculptor tiver alguma LIB própria (eu não me lembro se o Sculptor tinha ou não uma LIB própria), então tem que ver quais as funções existentes nesta LIB do Sculptor para ver se tem como usar alguma do Harbour que faz a mesma coisa.

Abraços,

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 20:09
por microvolution
ah sim!
só pra ficar bem claro mais uma vez a questão do scupltor. Ele não tem nenhuma lib externa ou coisa parecida, o que ele faz é padronizar todas as telas e programas, ou seja, o que ele faz é digitar pra mim as linhas pra facilitar o trabalho manual.
Caro Toledo e colegas professores, já usei o modo console e na IDE/HMG pode ser que tenha um arquivo de configuração :% .
Bom, quero é saber se mesmo com a falta de mensagens de erro, o que está impedindo o arquivo de ser gerado. A única vez que gerou um arquivo com 4mb (tamanho aproximado ao original compilado em clipper somente), mas, não funcionou ou deu algum sinal de vida, lembrando que não tem nada a ver com o sculptor, e aliás, só pra fechar de vez, eu só uso para gerar um novo prg (ele só roda em máquina com win 9x, não serve máquina virtual).

Bom, a tentativa que vou tentar fazer agora, e, postar aqui o resultado, é pegar apenas um arquivo do meu aplicativo (o main), aliás o PCI10000.PRG e o arquivo de ROTINAS.PRG. Ok :)) ?

Daqui a pouco vou postar os HBP e HBC.

Aguardo mais instruções!

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 22:43
por Pablo César
Em modo console.
No começo deve ser colocado SetMode(25,80). Porque sem isso faz uma tela grande e só percebemos que tem exibido algo, só quando rolamos a tela. Talvez a minha dica tenha parecido um tanto básico mas é o que geralmente acontece quando não definimos com o SetMode.

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 23:01
por microvolution
bom, diante do que pude observar desde o meu último post até o presente momento, é que se eu criar arquivos .HBP dentra da pasta dos PRGs só pra testes de compilação, não aparecem os erros na IDE/HMG, mas, quando abro o arquivo ERROR aí vem a porrada de erros.
Exemplo:
A primeira tentativa criei o arquivo SICCA.HBP com todos os PRGs da aplicação.
Não deu certo, criei o segundo arquivo somente com alguns PRGs e coloquei o nome de SICCA2.HBP.
Depois SICCA3, SICCAa, SICCAb...
ENTÃO MEUS CAROS PROFESSORES descobri uma coisa que talvez para os caros e nobres "teathers" não seja novidade, mas para nós iniciantes no mundo HARBOUR é uma coisa de outro mundo.
Então, comparando o arquivo ERROR toda vez observei que todos os HBPs acima ele estava compilando... então virava uma bagunça.
Bom, agora fiz o seguinte: excluí todos os outros arquivos HBPs da pasta e compilei pela última vez.
Agora a mensagem de erro aparece na IDE/HMG:
===
UNDEFINED REFERENCE TO "FT_MKDIR".
===
Bom, acredito que pra V.Sas. isso é muito simples, ou seja, falta uma LIB que contenha essa função do clipper antigo.
Mas, qual é essa?

Finalizando essa postagem, vejam o conteúdo do arquivo ERROR que agora está correto (a meu ver):
====
hbmk2: Processando arquivo de configura‡Æo:
G:\MVinfo\hmg.3.0.35\harbour\bin\hbmk.cfg
hbmk2: Processando: SICCA34.hbc
Harbour 2.0.0 (Rev. 13372)
Copyright (c) 1999-2010, http://www.harbour-project.org/
pci10024.o:pci10024.c:(.data+0x7b8): undefined reference to `HB_FUN_FT_MKDIR'
collect2: ld returned 1 exit status
hbmk2: Erro: Executando linkeditor. 1
gcc.exe pci10000.o dci10000.o dci10001.o dci10002.o ext.o impresso.o pci10001.o pci10002.o pci10003.o pci10004.o pci10005.o pci10006.o pci10007.o pci10008.o pci10009.o pci10012.o pci10013.o pci10014.o pci10015.o pci10016.o pci10017.o pci10018.o pci10019.o pci10020.o pci10021.o pci10022.o pci10024.o pci10025.o pci10026.o pci10027.o pci10028.o pci10031.o pci10032.o pci10033.o pci10034.o pci10035.o pci10038.o pci10039.o pci10040.o pci10041.o pci10042.o pci10043.o pci10044.o pci10045.o pci10046.o pci10100.o pci10102.o pci10110.o pci10115.o pci10116.o pci10120.o pci10121.o pci10122.o pci10123.o pci10124.o pci10125.o pci10126.o pci10127.o pci10130.o pci10131.o pci10132.o pci10133.o pci10135.o pci10136.o pci10140.o pci10151.o pci10152.o pci10200.o pci10202.o pci10203.o pci10204.o pci10210.o pci10211.o pci10212.o pci10213.o pci10215.o pci10216.o pci10217.o pci10220.o pci10221.o pci10222.o pci10225.o pci10226.o pci10227.o pci10228.o pci10229.o pci10230.o pci10231.o pci10240.o pci10250.o pci10251.o pci10252.o pci10254.o pci10255.o pci10256.o pci10260.o pci10270.o pci10271.o pci10272.o pci10273.o pci10995.o pci10996.o pci10997.o pci10998.o pci10999.o pimpr105.o pimpr110.o pimpr115.o pimpr120.o pimpr121.o pimpr125.o pimpr130.o rci10000.o rimpr000.o rotinas5.o hbmk_as8q0z.o _temp.o -mconsole -Wl,--start-group -lhmg -lhbmysql -lmysql -lcrypt -ledit -leditex -lgraph -lini -lreport -lhbwin -lhbziparc -lhbmzip -lmsvfw32 -lvfw32 -lsddodbc -lrddsql -lsddmy -lhbodbc -lodbc32 -lhbhpdf -lhbvpdf -lhbmemio -lhbsqlit3 -lsqlite3 -lhbfimage -lhbpgsql -lpq -lhbtip -lhbct -lhbmisc -lhbnetio -lxhb -lhbextern -lhbdebug -lhbvm -lhbrtl -lhblang -lhbcpage -lgtcgi -lgtpca -lgtstd -lgtwin -lgtwvt -lgtgui -lhbrdd -lhbuddall -lhbusrrdd -lrddntx -lrddcdx -lrddnsx -lrddfpt -lhbrdd -lhbhsx -lhbsix -lhbmacro -lhbcplr -lhbpp -lhbcommon -lkernel32 -luser32 -lgdi32 -ladvapi32 -lws2_32 -lwinspool -lcomctl32 -lcomdlg32 -lshell32 -luuid -lole32 -loleaut32 -lmpr -lwinmm -lmapi32 -limm32 -lmsimg32 -lwininet -lhbpcre -lhbzlib -Wl,--end-group -oSICCA34.exe -LG:/MVinfo/hmg.3.0.35/harbour/lib -LG:/MVinfo/hmg.3.0.35//lib -LG:/MVinfo/hb32/migrar/sci10000/
====
Grato!

Compilar através da IDE da HMG versão 3.0.35

Enviado: 02 Mar 2015 23:27
por microvolution
Iuuuuupiiiiiiii.....
Consegui compilar (migrar de Clipper/Harbour usando a IDE/HMG pela primeira vez!!!!!

Claro que é só o começo (a ponta do iceberg) tem muitos erros para acontecerem...

Vejam em anexo, a tela do meu aplicativo Clipper, ou melhor, em Harbour.

PS: tive que eliminar temporariamente a chamada da função: "FT_MKDIR(cVariavel) até V.Sas. Me ajudarem.
Grato,
Microvolution, W de Paula.

PS: como os caros professores ensinam a eliminar os "#includes..." terei que voltar com todos eles pois o aplicativo cria os DBFs através de chamadas pelo #indluce "nomedoprgquedoarquivo.prg"

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 00:14
por microvolution
Bom, pessoal, agora já estou começando a ficar satisfeito com os resultados...
Infelizmente não posso ficar mais acordado (família em primeiro lugar né verdade?)... E a gente que é programador acaba se esquecendo desse "minúsculo detalhe rsrsrs"
...
Finalmente, consegui de um resultado que estava em apenas 0,01% para 99% de migração de Clipper para Harbour.

Agora para que possam me ajudar, vai aí as últimas indagações de hoje:
1 - como faço para o mouse funcionar?
2 - os campos (SAY/GET) de datas no formato (DD/MM/AAAA) não estão aceitando digitar, somente aceita os 2 últimos dígitos
3 - os campos (SAY/GET) de código de cliente/fornecedor/produto/grade, enfim, me parece que todos eles não tem como digitar nada. O cursor fica piscando e não conseguimos digitar. É como se o bloco numérico (numlock) estive desligado, mas, isso não está;

4 ... E por último, pra rodar como teste eu eliminei a função "FT_MKDIR". Favor me ensinar como incluí-la no prg (não sei se é lib ou #include), caso contrário, favor mostrar qual a sua substituta.

Valeu Pablo Cézar, Toledo, e, todos os outros demais professores que aqui não mencionei, mas, que são tanto importantes quanto os alunos.
Buenas Noites!

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 02:05
por Pablo César
Fico feliz saber que a ideia de usar uma IDE totalmente para fins gráficos possa ter sido útil para avançar n migração ao Harbour.
microvolution escreveu:Agora para que possam me ajudar, vai aí as últimas indagações de hoje:
1 - como faço para o mouse funcionar?
2 - os campos (SAY/GET) de datas no formato (DD/MM/AAAA) não estão aceitando digitar, somente aceita os 2 últimos dígitos
3 - os campos (SAY/GET) de código de cliente/fornecedor/produto/grade, enfim, me parece que todos eles não tem como digitar nada. O cursor fica piscando e não conseguimos digitar. É como se o bloco numérico (numlock) estive desligado, mas, isso não está;

4 ... E por último, pra rodar como teste eu eliminei a função "FT_MKDIR".
1. Leia este tópico: https://pctoledo.org/forum/viewto ... 43&t=11941
2. Utilize o SET CENTURY ON no começo do seu programa
3. Sem ver código algum, fica difícil de entender o que pode estar acontecendo.
4. Substitua FT_MKDIR(cVARIAVEL) pela função DirMake(cVARIAVEL) . Você pode também utilizar a função interna da HMG CreateFolder(cVARIAVEL) e também você pode recriar essa sua função, assim:

Function FT_MKDIR(diretorio)
Return dirmake(diretorio)==0

Também você pode criar funções em C. Mas esse é outro passo que você terá que dar algum dia.

Realmente é uma felicidade ver o nosso antigo código feito em Clipper sendo compilado pela primeira vez em Harbour.

Sucesso !

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 15:32
por microvolution
Olá Pablo César, Toledo, Itamir, Fladmir, Antonio, e todos os demais caros nobres professores, graças a Deus e a vocês (sem exceção) que alimentam este fórum, consegui passar do 1% de migração para 99%, ou seja, meu aplicativo SiCCA que era na versão 3.335 que agora chamo-a de 3.4, está faltando poucos detalhes.

Como pude observar, todos os meus módulos/PRGs (que agora chamam-se functions) que possuem um código de indexação, ou seja, (código cilente, produto, grade, endereço, contas a receber, vendas, etc...) não aceitam digitação.

Então, vai aqui a cópia de um PRG que acessa/cria no banco de dados os GRUPOs dos produtos. Nele também não cosigo digitar, apenas ESC/ENTER (é como se o NUMLOCK estivesse desligado, o que não é a verdade):

Vejam o que está errado, e, postem - se puderem, a solução.
Grato,
MICROVOLUTION/W de Paula.

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 15:38
por microvolution
Opa, não consegui colocar a PRINTSCREEN na resposta anterior.
Agora sim :))
Aguardo mais instruções.

Ah!
Quanto à VISUAL LIB, no meu clipper antigo, eu tinhas as seguintes linhas no MAIN que tive que eliminar pois não funcionam mais:
setmode(25,80) // configurar a tela para a VL850.COM (VISUAL LIB 2.0 SHAREWARE) // 05/09/11w
// !vl850.com // Acrescentei este programa para mudar o tipo de fonte geral do sismtema. Walcledson 17/9/02. vl850.com // eliminado em 3/3/15w para funcionar o harbour corretamente.
// !avanwfp.com // Acrescentei este programa para mudar o tipo de fonte geral do sismtema. Walcledson 25/5/01. avanwfp.com // eliminado em 3/3/15w para funcionar o harbour corretamente.
De uma forma simplificada, favor postar ou me fornecer link de algum post para que eu veja novamente meu aplicativo com visual do antigo NORTON (lembram?)!

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 16:28
por Pablo César
Amigo você mostrou um vetor que supostamente serve para criar arquivos de indices e criar tabelas. Ma sisso não me diz NADA 1
Imagino que você chama uma função e faz o que eu relatei, mas isso não quer dizer nada com respeito a edição dos campos.
Você precisava mostrar a função que coloca esse campos para editação.

Conseguiu executar os 5 passos que eu indiquei ?

Você pergunta, mas não responde quando é respondido pra você... (fica dificil assim, né ?)

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 16:38
por microvolution
por Pablo César » 03 Mar 2015 16:28

Amigo você mostrou um vetor que supostamente serve para criar arquivos de indices e criar tabelas. Ma sisso não me diz NADA 1
Imagino que você chama uma função e faz o que eu relatei, mas isso não quer dizer nada com respeito a edição dos campos.
Você precisava mostrar a função que coloca esse campos para editação.
Mil perdões prezado professor Pablo César... V.Sa. tem razão. No momento de eu anexar o arquivo PCI10007.PRG anexei equivocamente DCI10007.PRG.

Espero que agora esteja correto.
Grato, e, aguardo sua resposta ou dos demais professores!!!

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 18:19
por Pablo César
microvolution escreveu:No momento de eu anexar o arquivo PCI10007.PRG anexei equivocamente DCI10007.PRG
Por isso que eu não dou esse tipo de nomenclatura ao meus módulos, ao meus programas.

Tudo tem que ser intuitivo, de fácil compreensão...

Compilar através da IDE da HMG versão 3.0.35

Enviado: 03 Mar 2015 19:39
por microvolution
Pessoal, pra ficilitar a compreensão de todos sobre meu código do arquivo PCI10007.PRG, e aliás, como foram gerados pelo sculptor, todos tem o mesmo princípio: não há falha humana. Se um estiver errado todos estão.
Bom vejamos:
1- Esta é a linha onde o usuário precisa digitar o código do GRUPO:

Código: Selecionar todos

static function TRATA_CHAVE ()
     * BCCH1 Inicio
     * BCCH1 Fim
     @ lCDGRUPO,cCDGRUPO     get mCDGRUPO   picture pCDGRUPO   valid fCDGRUPO   ()
     * BCTCH Inicio
     * BCTCH Fim
return
2- esta é a função que trata a chave principal através da chamada pela função TRATA CHAVE (acima)

Código: Selecionar todos

static function fCDGRUPO ()
     * BCI01 Inicio
     * BCI01 Fim
     LIMPA_MENSAGEM ()
     if lastkey () = K_UP
          return (.f.)
     endif
     if mCDGRUPO < 0 .or. mCDGRUPO > 99
          MENSAGEM ('Grupo  deve estar entre 0 e 99 inclusive')
          return (.f.)
     endif
     if EXISTE (str (mCDGRUPO,02))
          if .not. TRAVADO (TENTATIVAS)
               MENSAGEM ('Informa‡„o sendo alterada por outro usu rio')
               return (.f.)
          endif
          EXISTE_REG := .t.
          clear gets
     else
          EXISTE_REG := .f.
     endif
     * BCF01 Inicio
     * BCF01 Fim
return (SAIDA_VALIDA ())
3 - E esta é a função que trata a DESCRIÇÃO DO GRUPO (ela não trava e aceita digitar normalmente):

Código: Selecionar todos

static function fDS_GRUPO ()
     * BCI02 Inicio
     * BCI02 Fim
     LIMPA_MENSAGEM ()
     if EXISTE_REG .or. lastkey () <> K_UP
          if empty (mDS_GRUPO)
               MENSAGEM ('Preenchimento obrigat¢rio')
               return (.f.)
          endif
     endif
     * BCF02 Inicio
     * BCF02 Fim
return (SAIDA_VALIDA ())
4 - aqui está o PICTURE de ambos que está localizado no arquivo DCI10000.CH:

Código: Selecionar todos

#define pCDGRUPO '@KRE 99'
#define pDS_GRUPO '@KX!'
Só se vão me dizer que o problema está nos pictures que no HARBOUR é diferente?

Aguardo detalhes e respostas!