Clipper On Line • Ver Tópico - Warning W0001 Ambiguous reference x GTWVW

Warning W0001 Ambiguous reference x GTWVW

Outras bibliotecas visuais e IDEs para Harbour/xHarbour (xHGTK/HbWxW/GtWvT/GtWvW/WvWtools.etc)

Moderador: Moderadores

 

Warning W0001 Ambiguous reference x GTWVW

Mensagempor microvolution » 12 Fev 2016 15:33

Pessoal, o professor JQuintas muito tem contribuído com seus conhecimentos a todos nós. Eu que o diga, se não fosse ele, asimoes, jairo, eolo, itamar, marcelo, toledo, antonio, etc, etc... todos sem exceção, mesmo os que não lembrei ou não citei!
:)Pos
Bom, mas, ao ler os tópicos, onde o professor JoséQuintas responde, cria, ou assina, percebo que ele sempre fala de uma tal "tolerância zero".
Então, ao compilar meus testes, aliás, estou testando agora a contrib/gtwvw/tests/demo.prg (harbour 3.4) e compilando/linkando perfeitamente.
Mas, se aplicar o tolerância zero na compilação -w3 -es2, aí a coisa fica feia. Vejam os erros:
demo.prg(124) Warning W0001  Ambiguous reference 'KF7'
demo.prg(125) Warning W0001  Ambiguous reference 'KF8'
demo.prg(256) Warning W0003  Variable 'HSUBMENU' declared but not used in function 'MAIN(82)'
demo.prg(256) Warning W0003  Variable 'KF3' declared but not used in function 'MAIN(85)'
demo.prg(385) Warning W0001  Ambiguous reference 'APPICON'
No code generated.
hbmk2 [demo]: Error: Running Harbour compiler (built-in). 1

Prezados, acontece que se pesquisar (F3) no editar (no meu caso NotePad++) não encontra nada repetido, a exemplo do F7, vejam as linhas onde existe essa repetição:
   kF7 := SetKey( K_F7, {|| pDEL_PREST() } )
   wvw_AppendMenu( hPopupMenu, WIN_MF_ENABLED, IDM_DEMO_GET,   "~Excluir Prestações Antigas  (F7)"  )
   oMouse := WVWMouseButton():New( "Excluir Prestações Antigas (F7)", MaxRow() - 12, 67 - 2, , , {|| pDEL_PREST() } )

Como mostrado acima, não nenhuma "ambiguidade" pelo que entendo do significado desta palavra.
Outra coisa, como a imagem abaixo mostra. Esse demo, não possui uma ERRORSYS separada, mas, sim uma função de que mostra os erros de RunTime. Então a adaptei para português (para facilitar para o usuário). Acontece que nela não apresenta o NOME DA VARIÁVEL que causou o erro (exemplo variável inexistente):
16-0212 - erro runtime-01.png
16-0212 - erro runtime-01.png (7.33 KiB) Visualizado 3637 vezes

E, também, o que é GenCode e como traduzir para o português?

Enfim, tudo é apenas teste, e, alguns podem dizer: "ah! use a ERRORSYS já personalizada". Então, esse é o problema. Como não entendo nada dos códigos da errorsys, principalmente por ser um arquivo grande e complexo, e nessa função MYERROR (que é bem pequena) posso compreender melhor.
Se alguém puder nos ajudar, fica aí a abertura do novo tópico.

PS: Peço ao TOLEDO e aos moderadores, nos tópicos que parcitipei ou criei de 11/02/16 (ontem) e 12/02/16 (hoje), onde coloquei erroneamente:
GTWVT o correto é GTWVW...

Um abraço a todos!
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor JoséQuintas » 13 Fev 2016 00:50

Mencionou a compilação -w3 -es2
mencionou a errorsys
mencionou a mensagem de erro
Só faltou mencionar o porquê do post.

Se for sobre o erro,
é olhar a linha do erro.

Se for sobre a errorsys,
Trocar "variable does not exist" por "descrição do erro: variable doest not exist", e não ter o nome da variável... não vi qual foi a tradução e muito menos qual a vantagem disso
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor JoséQuintas » 13 Fev 2016 00:59

Se for sobre -w3 -es2...

Estes erros são variáveis não declaradas. Se usar em outros lugares, declarar no fonte como MEMVAR

demo.prg(124) Warning W0001 Ambiguous reference 'KF7'
demo.prg(125) Warning W0001 Ambiguous reference 'KF8'
demo.prg(385) Warning W0001 Ambiguous reference 'APPICON'

Estes erros são variáveis criadas não usadas pra nada no fonte. Se usar em outros lugares, idem acima, senão é apagar.

demo.prg(256) Warning W0003 Variable 'KF3' declared but not used in function 'MAIN(85)'
demo.prg(256) Warning W0003 Variable 'HSUBMENU' declared but not used in function 'MAIN(82)'
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor microvolution » 13 Fev 2016 11:47

ok prezado professor... fiz todas as mudanças que entendi de fazer e o tolerância zero (-w3 -es2).
As mensagens agora são as seguintes:
exvd-v30.prg(1234) Warning W0032  Variable 'NTT_REG' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'N3' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'N4' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'NVRMJRS' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'NVRDESCONT' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'NVR_RECEBI' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'NVRTITUTLO' is assigned but not used in function 'PDEL_PREST(796)'
exvd-v30.prg(1234) Warning W0032  Variable 'CDT_INIC' is assigned but not used in function 'PDEL_PREST(943)'
exvd-v30.prg(1695) Warning W0032  Variable 'COPCAO' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'NTT_REG' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'N3' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'N4' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'COP' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'LTESTE' is assigned but not used in function 'PDEL_VENDA(1265)'
exvd-v30.prg(1695) Warning W0032  Variable 'CDT_INIC' is assigned but not used in function 'PDEL_VENDA(1373)'
exvd-v30.prg(3145) Warning W0032  Variable 'NUM_CHAVES' is assigned but not used in function 'ABRE_ARQUIVO(3049)'
exvd-v30.prg(3145) Warning W0032  Variable 'I' is assigned but not used in function 'ABRE_ARQUIVO(3049)'
No code generated.
hbmk2 [EXVD-v30]: Error: Running Harbour compiler (built-in). 1

Engraçado isso, parece que as informações são de que declarei mas não usei as variáveis (essas acima, são todas LOCAIS)...
Se eu eliminar a declaração, volta a mensagem AMBIGUOUS REFERENCE...

E, agora fórum?
Grato,
MICROVOLUTION - 16 anos Evoluindo Com Você!


Você já leu a Bíblia hoje?
João 3:16 - Porque Deus amou ao mundo de tal maneira que deu seu Único Filho para que todo aquele que nEle crê não pereça mas tenha a Vida Eterna!
microvolution
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1175
Data de registro: 02 Set 2011 22:17
Curtiu: 59 vezes
Mens.Curtidas: 17 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor sygecom » 13 Fev 2016 12:01

Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
leonardodemachado@hotmail.com

Faça você também sua doação esse fórum é uma lenda viva: http://www.pctoledo.com.br/doacao
Avatar de usuário

sygecom
Usuário Nível 7

Usuário Nível 7
 
Mensagens: 7006
Data de registro: 21 Jul 2006 10:12
Cidade/Estado: Alvorada-RS
Curtiu: 1 vez
Mens.Curtidas: 130 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor clodoaldomonteiro » 03 Nov 2019 09:32

Antes de mais nada, parabéns a todos por este tópico muito interessante e aproveito para estender a discurção sobre o assunto.

Note que os Fields das tabelas também provocam a mensagem: Warning W0001 Ambiguous reference:, quando usamos como parâmetros para uma chamada de função e para corrigir o AVISO, temos que indicar a Tabela DBF (dbf->)
Exemplo:
USE PAR

//provoca aviso W0001
If Empty(par_dbvers)       //Field sem indicar Tabela
   Replace par_dbvers    With M_DBVERSAO   //Não precisa indicar Tabela
Endif

//Não provoca aviso W0001
If Empty(PAR->par_dbvers)     //Field indicando Tabela
   Replace par_dbvers    With M_DBVERSAO    //Não precisa indicar Tabela
Endif

Estou usando xHarbour 1.2.3 + BCC 7.30 + GTWVW

Grato a todos.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor JoséQuintas » 03 Nov 2019 09:40

Complemento:

Pra definição genérica, pode ser usado field->Campo
É que tem casos aonde pode não ter um alias definido.

Por exemplo na indexação, pode ser interessante usar field->campo porque assim pode abrir o arquivo com qualquer alias depois.

Ou numa rotina que atende vários arquivos diferentes, também pode ser interessante usar field->Campo

Mas no geral, o alias do arquivo é o melhor uso, porque facilita pesquisar nos fontes.
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor clodoaldomonteiro » 03 Nov 2019 09:54

Valeu Quintas,

Não sabia que Field-> servia como Genérico para Tabela selecionada e já tinha até um caso aqui pra isso, quando o nome da tabela e de escolha do usuário.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor JoséQuintas » 03 Nov 2019 10:51

Outra opção também é declarar como FIELDS

FIELDS código, nome, endereço

Mas se olhar um fonte como:
if Código > 10
vai sempre depender de olhar as declarações no início do fonte pra tirar a dúvida se é variável ou campo.

Uma coisa que fiz na época de transição foi criar um jpa.ch com a declaração de tudo que era campo de arquivo.
E colocar #include "jpa.ch" em tudo que é fonte.

Tipo isto:
aFileList := Directory( "*.dbf" )
FOR EACH oFile IN aFileList
   Use( oFIle[ 1 ] )
   aStruList := dbSruct()
   FOR EACH oCampo IN aStruList
      ? "FIELDS " + oCampo[ F_NOME ] + hb_Eol()
   NEXT
NEXT


Outra coisa que usei também foi definir em cada fonte se era pra compilar ou não com -w3 -es2

#pragma -w0
#pragma -es0

Deixei o padrão de compilar SEMPRE com -w3 -es2, e ia removendo dos fontes o -w0 -es0 conforme ia ajustando
A vantagem é não esquecer de obrigar daqui pra frente a fazer certo.

Também dá pra declarar tudo como MEMVAR como quebra-galho, e tirar uma variável de cada vez dessa lista, assim se concentra numa variável por vez.

Sendo prático:

O fonte atual funciona, o problema maior é ele impedir de usar -w3 -es2 daqui pra frente.
Então: MEMVAR, FIELDS e #pragma seria algo como desprezar problemas anteriores pra poder adotar -w3 -es2.
Já fixa -w3 -es2, já faz os próximos fontes corretos, e os problemas anteriores vai resolvendo um de cada vez, ou uma variável de cada vez ou um fonte de cada vez.

Conforme vê vantagens nos fontes novos, vai até ser um incentivo pra terminar logo nos fontes antigos.

Pode também olhar os menores, e começar por eles:

DIR *.PRG /o-s

Eu misturei todas essas formas de "agilização" pra impedir que eu deixasse de usar -w3 -es2.

A partir daí, quanto mais eu usava, mais eu queria usar.

Era só procurar fontes contendo #pragma, e seriam os próximos.

Até rotina em Harbour eu usei, tipo... vamos alterar hoje os 3 menores fontes:

Fonte aproximado:
aList := Directory( "*.prg" )
ASort( aList, { | a, b | a[ F_SIZE ] < b[ F_SIZE ] } )
nAbertos := 0
FOR EACH oFonte IN aList
   IF "#pragma" $ MemoRead( oFonte[ F_NAME ] )
       nAbertos += 1
       RUN ( "pnotepad " + oFonte[ F_NAME ] )
      Inkey(3)
      IF nAbertos >= 3
         EXIT
     ENDIF
NEXT


Cada um conhece os próprios fontes, ou o que vai poder fazer a cada dia ou a cada vez.
Com certeza demora se tiver muitos fontes, e demora em fontes extensos, então é criar alternativas pra não deixar desistir.
Pode ser até mesmo dividir um fonte grande em fontes menores, pra acertar uma parte de cada vez, e depois juntar tudo de novo.
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: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Warning W0001 Ambiguous reference x GTWVW

Mensagempor clodoaldomonteiro » 03 Nov 2019 15:29

Usando Deu foi certo, Fonte principal já ajustado.
#pragma -w0
#pragma -es0


HbMake v1.30 - xHarbour Make Utility
Copyright (C) 2000-2018 xHarbour project - http://www.xharbour.org
xHarbour 1.2.3 Intl. (SimpLex) (Build 20190613) / Borland/Embarcadero C++ 7.3 (32-bit)

     Compiling:
     ┌────────────[   0  ]──────────────┐
     │                                  │
     └──────────────────────────────────┘

C:\xBase\bcc73\BIN\ilink32 @makefile.lnk
Turbo Incremental Link 6.80 Copyright (c) 1997-2017 Embarcadero Technologies, Inc.

X:\ProjetosGAS\Scp\scp19h123>


Agora é trabalhar Fonte por Fonte.
At. Clodoaldo Monteiro
Linguagens: Clipper / Harbour
Área de Atuação: Sistemas de gestão para Prefeituras Municipais
Fones: (86)3223-0653, 98859-0236
www.simplesinformatica.com.br
Avatar de usuário

clodoaldomonteiro
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 30 Dez 2006 12:17
Cidade/Estado: Teresina-PI
Curtiu: 110 vezes
Mens.Curtidas: 31 vezes




Retornar para Outras Bibliotecas Visuais e IDEs

Quem está online

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