Pessoal,
Essa semana deu um erro bem esquisito:
Temos uma lib que tem uma classe chamada Tela (CREATE CLASS Tela), deu um erro em um sistema de uma equipe que tinha nesse sistema uma function com o mesmo nome da classe, quando a classe era invocada na lib a chamada era para function desse sistema que não tinha as VAR dessa classe, produzindo erro, resumo renomeamos o nome da classe na lib para telacorp para não conflitar.
O que eu entendi foi que a function sobrepos a classe
Class e Function conflitam
Moderador: Moderadores
Class e Function conflitam
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Class e Function conflitam
Talvez a ordem de compilação interfira, não sei se é seu caso, mais meus PRGs vão sempre no final no script. Por estar esta function no prg pode-se assumir que ela prevaleceu. Embora não deveria ocorrer o problema já que são declarações diferentes.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Class e Function conflitam
Andril,
A CREATE CLASS Tela está em uma lib e a FUNCTION Tela em um prg da aplicação, a confusão foi quando dentro da lib chamar a classe Tela
A chamada da classe Tela é feita dentro da própria lib
oTela:=Tela():New() que chamou a FUNCTION Tela() da aplicação bug ou é outra coisa ?
A CREATE CLASS Tela está em uma lib e a FUNCTION Tela em um prg da aplicação, a confusão foi quando dentro da lib chamar a classe Tela
A chamada da classe Tela é feita dentro da própria lib
oTela:=Tela():New() que chamou a FUNCTION Tela() da aplicação bug ou é outra coisa ?
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
- JoséQuintas
- Administrador

- Mensagens: 20267
- Registrado em: 26 Fev 2007 11:59
- Localização: São Paulo-SP
Class e Function conflitam
Acho que isso é normal.
Já deve ter percebido que minhas classes tem a terminação Class, que evita esse problema.
Por exemplo, SefazClass()
A sugestão é trocar o nome pra TelaClass(), e não precisar se preocupar.
Ou em certos casos, até iniciais, como acontece em HMG_funcao(), RMC_ do RMChart, hb_ do Harbour, etc.
Dependendo do quanto a função/classe vai se "espalhar", é bom um nome único.
É diferente usar alguma coisa num único aplicativo, em vários, no mundo inteiro, ou até misturando linguagens de programação, como DLLs.
Chega uma hora que os nomes acabam.... rs
Já deve ter percebido que minhas classes tem a terminação Class, que evita esse problema.
Por exemplo, SefazClass()
A sugestão é trocar o nome pra TelaClass(), e não precisar se preocupar.
Ou em certos casos, até iniciais, como acontece em HMG_funcao(), RMC_ do RMChart, hb_ do Harbour, etc.
Dependendo do quanto a função/classe vai se "espalhar", é bom um nome único.
É diferente usar alguma coisa num único aplicativo, em vários, no mundo inteiro, ou até misturando linguagens de programação, como DLLs.
Chega uma hora que os nomes acabam.... rs
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
Class e Function conflitam
Tem outra alternativa:
Não lembro detalhes, mas seria criar a classe local, e uma função pra criar a variável.
E no fonte da classe local, esta função.
Teria que pesquisar, porque sei que isso existe, mas não lembro qual a declaração pra classe ser local.
Não lembro detalhes, mas seria criar a classe local, e uma função pra criar a variável.
Código: Selecionar todos
oVar := ClasseSimoesTela()
Código: Selecionar todos
FUNCTION ClasseSimoesTela()
LOCAL oVar
oVar := Tela():New()
RETURN oVar
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/
Class e Function conflitam
Por hora vou colocar um nome bem específico que eu sei que não será usado em outro prg.
►Harbour 3.x | Minigui xx-x | HwGui◄
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)
Pense nas possibilidades abstraia as dificuldades.
Não corrigir nossas falhas é o mesmo que cometer novos erros.
A imaginação é mais importante que o conhecimento. (Albert Einstein)

