Página 1 de 2

Redefinition of procedure or function:

Enviado: 05 Jan 2009 11:10
por alvaro.bernardi
Bom dia,

Estou migrando o sistema de modo texto para gráfico utilizando o o HwGui, porém ocorre o erro de "Redefinition of procedure or function:" que não ocorria quando compilado no modo texto com as opções /m /n ativadas, quando migrei do clipper para o Harbour coloquei em todos os PRGs "Function talFuncao_etc_etc", porém agora ele reclama. Tenho que retirar essa declaração de todos os prgs ?? ou existe alguma outra forma de contornar isso?

Alvaro de Oliveira Bernardi
Microline Software
Porto Velho - RO

Re: Redefinition of procedure or function:

Enviado: 05 Jan 2009 12:29
por Hasse
Verifique se não há 2 ou mais funções com o mesmo nome na tua aplicação ou em alguma LIB usada.

Re: Redefinition of procedure or function:

Enviado: 05 Jan 2009 12:41
por sygecom
Alvaro,
Não prescisa refazer os nomes das functions.

Re: Redefinition of procedure or function:

Enviado: 05 Jan 2009 16:06
por alvaro.bernardi
Não existe outra função com mesmo nome...

está assim: (ex)

**********************************
* PROGRAMA : CAD_CID.PRG
* FINALIDADE : Cadastro de CIDADES
**********************************
#include "hwgui.ch"
#include "windows.ch"
#include "guilib.ch"

Function CAD_CID()
local INCLUI
....
....
....

O prg se chama CAD_CID e logo abaixo incluo a Function CAD_CID()

daí vem o erro...

Re: Redefinition of procedure or function:

Enviado: 05 Jan 2009 17:50
por rochinha
Amiguinho

Em se tratando de Harbour o compilador pode entender tanto o nome do .PRG para chamadas de compilação como o nome da primeira função ou procedure do mesmo.

Voce possui uma função chamada X dentro de um X.PRG e no momento de compilar isto pode ser entendido como redefinição.

Portanto troque o nome desta função como MAIN() ja que é a primeira ou troque nomes de funções ou .PRGs.

Re: Redefinition of procedure or function:

Enviado: 07 Jan 2009 10:34
por janio
O prg se chama CAD_CID e logo abaixo incluo a Function CAD_CID()
Em vez de Function CAD_CID(), coloque apenas Function CAD_CID(sem os parenteses) e veja o q acontece...

Re: Redefinition of procedure or function:

Enviado: 07 Jan 2009 11:44
por Hasse
Bom dia colegas.

Se for usado o HBMAKE certamente não são parênteses que estão ocasionando o erro. Não sei o que pode acontecer com outros makefiles. No início eu usei, por curto tempo, o BRmake, que se comportava de maneira diferente. E certamente isto pode acontecer com outros...

Em todos os meus sistemas uso os parênteses. O importante é que o módulo de partida tenha um determinado "nome.prg", mas seja definido como FUNCTION MAIN() ou PROCEDURE MAIN().

Os demais *.prg's devem ser definidos com um nome exclusivo, e em nenhum outro prg, inclusive no MAIN(), este nome pode ser usado novamente, nem mesmo em alguma LIB.

Re: Redefinition of procedure or function:

Enviado: 07 Jan 2009 12:40
por alaminojunior
Exatamente, faça como o Hasse comentou aí em cima.

No programa principal, em vez de Function Cad_Cid, troque pra Function Main.

Re: Redefinition of procedure or function:

Enviado: 08 Jan 2009 19:16
por Eolo
Em se tratando de Harbour o compilador pode entender tanto o nome do .PRG para chamadas de compilação como o nome da primeira função ou procedure do mesmo.
Rochinha, por hábito trazido do Clipper, eu ainda mantenho os arquivos PRG identificados "pelo que eles contêm". Então, o Cadastro de Nomes está no arquivo CN.PRG e dentro dele a função principal é a FUNCTION CN. Do mesmo jeito, o Contas a Pagar está no arquivo MP.PRG e a função principal é a FUNCTION MP. E assim vai, no sistema inteiro.

Aliás, esse arquivo CN.PRG contém também outras funções, não só a FUNCTION CN. Do mesmo jeito que os outros.

Então a sua afirmação, pelo menos pra mim, não confere. Uso o HBMAKE e o XH 1.0.0, e não tenho problema de redefinição de função ou procedure.


EM TEMPO: andei fazendo uns testes com isso, quando migrei do Clipper, e em 100% dos casos, os nomes das funções não tinham nada a ver com os nomes dos arquivos.

Re: Redefinition of procedure or function:

Enviado: 08 Jan 2009 19:43
por Eolo
Uma pergunta: considerando que no XHarbour o que vale são as funções - a começar pela MAIN(), e não os arquivos PRG, meros repositórios, não deveriam os INCLUDES da função do Álvaro estar DENTRO de alguma FUNCTION, na pior das hipóteses DENTRO da function MAIN? No post dele, os INCLUDES estão fora. Será que não é isso que tá bagunçando o meio de campo?

Código: Selecionar todos

**********************************
* PROGRAMA : CAD_CID.PRG
* FINALIDADE : Cadastro de CIDADES
**********************************
Function CAD_CID()
local INCLUI
#include "hwgui.ch"
#include "windows.ch"
#include "guilib.ch"

Re: Redefinition of procedure or function:

Enviado: 08 Jan 2009 21:26
por Maligno
A função da diretiva #include é incluir o conteúdo de um arquivo texto qualquer (normalmente é um header) no ponto onde esta diretiva foi informada, seja dentro ou fora de uma função. Isso só vai depender da conveniência do código. Normalmente é no topo do fonte, se o conteúdo for de uso comum a todo o código no fonte. Mas pode ser dentro de uma função ou a partir de um ponto do código em que o conteúdo deste arquivo externo faça sentido. Em suma: funciona exatamente como se fosse digitado.

Re: Redefinition of procedure or function:

Enviado: 12 Jan 2009 11:02
por alvaro.bernardi
Já tenho uma função Main(), que é a função de entrada do programa, este seria um "sub-programa" uma função mesmo, ou procedure.
Na função Main() tenho a chamada para diversas sub-rotinas, como Fornecedores(), bancos(), Cadastros(), etc...

Nenhuma aceita que eu coloque function Nome_da_rotina() com o mesmo nome do prg.

Já tenho outros programas funcionando perfeitamente com esse padrão.

Re: Redefinition of procedure or function:

Enviado: 12 Jan 2009 11:28
por sygecom
Alvaro, vc esta usando o hbmake para compilar ? se sim poste por favor seu .BC !!!

Re: Redefinition of procedure or function:

Enviado: 12 Jan 2009 11:34
por alvaro.bernardi
Uso o xDev

Re: Redefinition of procedure or function:

Enviado: 12 Jan 2009 11:36
por sygecom
Faça um teste usando o hbmake. se der certo pelo HBMAKE ai é uma configuração no xdev, não sei lhe dizer o que e como, pq não uso o xdev.