Clipper On Line • Ver Tópico - erro base/1003 Variavel não existe

erro base/1003 Variavel não existe

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

erro base/1003 Variavel não existe

Mensagempor ssflavio » 10 Abr 2019 17:48

Boa tarde a todos!

Estou convertendo meu sistema clipper 5.2 para harbour, depois de muitas tentativas e de muita consulta aqui no forum consegui criar o executável.
O problema é que ele não reconhece o nome dos campos do arquivo aberto, vou dar um exemplo bem simples:
estrutura do arquivo TESTE.DBF
CODIGO Caracter 6
PRODUTO Caracter 50

use TESTE alias TST new
CODPRO := CODIGO (desta maneira dá o erro)
CODPRO := TST->CODIGO (desta maneira não da erro)

==> utilizo as seguintes chaves de compilação: /w3 /es2 /v /a /b /m /v /n2 /w0
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

erro base/1003 Variavel não existe

Mensagempor MSDN » 10 Abr 2019 18:53

Vc mesmo respondeu sua pergunta, o Clipper aceita qualquer coisa, o Harbour sem esses parâmetros, é quase igual tbem, mas com os parâmetros que vc usa, ele faz uma checagem rigorosa, por isso aponta erro.
MSDN
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 741
Data de registro: 28 Nov 2003 14:55
Cidade/Estado: CWB
Curtiu: 178 vezes
Mens.Curtidas: 123 vezes

erro base/1003 Variavel não existe

Mensagempor ssflavio » 10 Abr 2019 19:39

obrigado pela ajuda, mas não tem como ficar igual ao clipper?
o sistema é muito grande e na maioria das vezes não é utilizada a referência do ALIAS
talvez se tirasse alguma das chaves ou adicionasse alguma???
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

erro base/1003 Variavel não existe

Mensagempor JoséQuintas » 10 Abr 2019 19:49

ssflavio escreveu:obrigado pela ajuda, mas não tem como ficar igual ao clipper?


Na verdade É igual o Clipper, seus comandos é que bagunçaram tudo.
Foi resolver uma coisa, e piorou mais ainda.
Confira seus parâmetros, e retire tudo que não interessa.
Esses mesmos parâmetros no Clipper iam causar o mesmo erro, então..... só pode ter acrescentado algo sem saber direito para o que servia.

d:\>Harbour

Harbour 3.4.0dev (1662d538b6) (2019-01-28 19:13)
Copyright (c) 1999-2019, https://github.com/JoseQuintas/harbour34/

Syntax:  harbour <file[s][.prg]|@file> [options]

Options:  -a               automatic memvar declaration
          -b               debug info
          -build           display detailed version info
          -credits         display credits
          -d<id>[=<val>]   #define <id>
          -es[<level>]     set exit severity
          -fn[:[l|u]|-]    set filename casing (l=lower u=upper)
          -fd[:[l|u]|-]    set directory casing (l=lower u=upper)
          -fp[:<char>]     set path separator
          -fs[-]           turn filename space trimming on or off (default)
          -g<type>         output type generated is <type> (see below)
          -gc[<type>]      output type: C source (.c) (default)
                           <type>: 0=compact (default) 1=normal 2=verbose
                                   3=generate real C code
          -gh              output type: Harbour Portable Object (.hrb)
          -gd[.<destext>]  generate dependencies list into (.d) file
          -ge[<mode>]      error output <mode>: 0=Clipper (default)
                                                1=IDE friendly
          -i<path>         #include file search path
          -i[-|+]          disable/enable support for INCLUDE envvar
          -j[<file>]       generate i18n gettext file (.pot)
          -k               compilation mode (type -k? for more data)
          -l               suppress line number information
          -m               compile module only
          -n[<type>]       no implicit starting procedure
                           <type>: 0=no implicit starting procedure
                                   1=no starting procedure at all
                                   2=add starting procedure if necessary
          -o<path>         object file drive and/or path
          -p[<path>]       generate pre-processed output (.ppo) file
          -p+              generate pre-processor trace (.ppt) file
          -q               quiet
          -q0              quiet and don't display program header
          -q2              disable all output messages
          -ql              hide line counter gauge
          -r:<max>         set maximum number of preprocessor iterations
          -s[m]            syntax check only [minimal for dependencies list]
          -u[<file>]       use command def set in <file> (or none)
          -u+<file>        add command def set from <file>
          -undef:<id>      #undef <id>
          -v               variables are assumed M->
          -w[<level>]      set warning level number (0..3, default 1)
          -z               suppress shortcutting (.and. & .or.)
          @<file>          compile list of modules in <file>
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

erro base/1003 Variavel não existe

Mensagempor ssflavio » 10 Abr 2019 20:02

Caro José Quintas, é uma honra poder ser ajudado por você!
Seus posts são sempre muito importantes na resolução dos problemas por aquí!

qual seria a sequencia de chaves que você usa para compilar os seus sistemas em harbour?
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

erro base/1003 Variavel não existe

Mensagempor JoséQuintas » 10 Abr 2019 20:55

ssflavio escreveu:qual seria a sequencia de chaves que você usa para compilar os seus sistemas em harbour?


Vai pelo lado mais simples...
retire TODOS os parâmetros
Compile e veja o que acontece.
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

erro base/1003 Variavel não existe

Mensagempor Eric.Developer » 10 Abr 2019 21:51

fácil,
você duplicou, apenas remova o último /w0. Ele anulou o primeiro, que por sua vez afetou a auto declaração das variáveis.

Enquanto programadores veteranos não aprenderem a ler, interpretar mais e a escrever menos, evitar sermões e tantos chutes, apenas atrapalham e confundem.

ssflavio escreveu:Estou convertendo meu sistema clipper 5.2 para harbour, depois de muitas tentativas e de muita consulta aqui no forum consegui criar o executável.
O problema é que ele não reconhece o nome dos campos do arquivo aberto, vou dar um exemplo bem simples:
estrutura do arquivo TESTE.DBF
CODIGO Caracter 6
PRODUTO Caracter 50

use TESTE alias TST new
CODPRO := CODIGO (desta maneira dá o erro)
CODPRO := TST->CODIGO (desta maneira não da erro)

==> utilizo as seguintes chaves de compilação: /w3 /es2 /v /a /b /m /v /n2 /w0
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 8 vezes

erro base/1003 Variavel não existe

Mensagempor Jairo Maia » 11 Abr 2019 07:02

Olá ssflavio,

Primeiro, concordo com o José e o MSDN, quando dizem que melhor nesse momento não usar parâmetros. A medida que você for lapidando seu sistema ao Harbour então vai incrementando.

Quanto a sua dúvida:
Eric.Developer escreveu:use TESTE alias TST new
CODPRO := CODIGO (desta maneira dá o erro)
CODPRO := TST->CODIGO (desta maneira não da erro)
Veja que você está usando o parâmetro -v. Isso significa que: -v = variables are assumed M-> (Memory variables).

Então se você fizer CODPRO := M->CODIGO, também funciona. Esse parâmetro faz com que as variáveis do arquivo corrente não sejam lidas, isso é o mesmo que SELECT 0, ou seja, deixar a área sem arquivo aberto (para o caso de leitura de variáveis).
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

erro base/1003 Variavel não existe

Mensagempor Itamar M. Lins Jr. » 11 Abr 2019 08:30

Ola!
../a /v..

/a É automática a declaração.
/v Assume MEMVAR.
Então; CODIGO é uma MEMVAR ou FIELD (Campo do DBF) ? Ele não sabe e retorna erro, porque assumiu CODIGO como M->.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6927
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 309 vezes
Mens.Curtidas: 503 vezes

erro base/1003 Variavel não existe

Mensagempor JoséQuintas » 11 Abr 2019 12:16

Jairo Maia escreveu:Então se você fizer CODPRO := M->CODIGO, também funciona.


Funciona se for variável, equivale ao -v ou -a, mas é justamente a origem do post, e causa do erro.

A diferença entre Clipper e Harbour é: o Harbour vém com algumas coisas úteis já ativadas, então precisa desativar pra ficar "inútil" igual no Clipper.

Ao compilar sem parâmetro nenhum, através das mensagens de erro, e dessa lista de parâmetros, por dedução ou teste, vai saber o que usar.

No geral, o default diferente do Harbour + hbmk2 é:

-n valer somente o que tem dentro do fonte, e não o nome externo do arquivo
-w3 -es2 obrigar a declarar variáveis/campos de arquivo, pra não ter problemas depois (o que teve)
-m tratar cada fonte separadamente

-w3 -es2 mostrou que poderia acontecer esse seu erro, o objetivo é justamente impedir que isso não aconteça, já mostrar que o fonte precisa ser alterado.
O problema foi o que usou pra anular essa checagem.
Além de anular a checagem, ainda modificou seus fontes dizendo que NADA VÉM DE ARQUIVO, é TUDO variável de memória.
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

erro base/1003 Variavel não existe

Mensagempor Eric.Developer » 11 Abr 2019 18:36

Olá,
a compilação sem nenhum parâmetro, já irá funcionar como precisa porque é o padrão no Clipper e Harbour. Você mudou o padrão por isso deu erro. Usar /a ou /v, afetará em outras situações, mas não se preocupe, é apenas um simples ajuste no script para a apps funcionar igualmente ao Clipper.
ssflavio escreveu:use TESTE alias TST new
CODPRO := CODIGO (desta maneira dá o erro)
CODPRO := TST->CODIGO (desta maneira não da erro)


ao contrário do que outros postaram, a regra super básica CLIPPER/HARBOUR:
uma variável sem prefixo (ALIAS, M, FIELD) , o padrão é, pesquisar primeiramente na TABELA, e depois na MEMÓRIA (PUBLIC, PRIVATE).
Se existir uma variável LOCAL com mesmo nome do campo, neste caso ela tem prioridade que o campo.

obs: ignore minha mensagem anterior, corrigi o meu arquivo BAT, que não lia todos os parâmetros, confirmando que CLIPPER/HARBOUR não compilam da forma que descreveu.

O Sr esta enganado, fez montagem de mensagem pra pessoa errada.
Jairo Maia escreveu:Quanto a sua dúvida:
Delphi, SQL, FastReport | Xailer VxH Fivewin Minigui Hwgui [x]Harbour
Contate-me: Desenvolvimentos em geral | Treinamentos
Overview/Download: Xailer / Harbour Ferramenta profissional e mais completa.
Avatar de usuário

Eric.Developer
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 161
Data de registro: 31 Ago 2010 22:16
Curtiu: 0 vez
Mens.Curtidas: 8 vezes

erro base/1003 Variavel não existe

Mensagempor Jairo Maia » 11 Abr 2019 18:53

Eric.Developer escreveu:uma variável sem prefixo (ALIAS, M, FIELD) , o padrão é, pesquisar primeiramente na TABELA, e depois na MEMÓRIA (PUBLIC, PRIVATE).
Eric.Developer, isso se aplica se não compilar com o parâmetro -v. Se usar -v, as variáveis de arquivo (Field) não serão visíveis. Isso provocava o erro relatado pelo autor do tópico.

Eric.Developer escreveu:O Sr esta enganado, fez montagem de mensagem pra pessoa errada.
Jairo Maia escreveu:
Quanto a sua dúvida:
Oi!? Não entendi. Não me lembro de ter feito qualquer menção a você nesse tópico antes dessa mensagem.
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

erro base/1003 Variavel não existe

Mensagempor JoséQuintas » 11 Abr 2019 20:10

Jairo Maia escreveu:Não me lembro de ter feito qualquer menção a você nesse tópico antes dessa mensagem.


Pois é Jairo... acho que pegou o trecho de um post de resposta, e isso causou pegar usuário errado.

Mas voltando ao tópico:
Só faltou eu mencionar uma coisa:
O contrário da checagem máxima (-w3 -es2) é checagem mínima (-w0 -es0).

O problema da checagem máxima é quando pega fonte antigo, geralmente do Clipper.
Acaba tendo quilômetros de fonte pra acertar, e pode levar meses pra fazer isso.
Por isso é comum desativar a checagem, e muitas vezes nunca mais ativar.

Mas se interessar depois fazer isso, tem como ativar/desativar pra somente alguns 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

erro base/1003 Variavel não existe

Mensagempor ssflavio » 14 Abr 2019 12:17

obrigado queridos amigos!
consegui minimizando as chaves como voces recomendara
ficou assim: /b /es2 /m /n2
considerando que /b e /m não alteram nada, sobrou
/es2 /n2

desculpa a demora, mas estive viajando!!!
:{
Flávio dos Santos Szelbracikowski
ssflavio@osite.com.br
ssflavio
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 86
Data de registro: 10 Jul 2008 09:57
Cidade/Estado: São Paulo / SP
Curtiu: 3 vezes
Mens.Curtidas: 3 vezes

erro base/1003 Variavel não existe

Mensagempor JoséQuintas » 14 Abr 2019 15:58

ssflavio escreveu:consegui minimizando as chaves como voces recomendaram
ficou assim: /b /es2 /m /n2
considerando que /b e /m não alteram nada...


na verdade alteram sim, e a recomendação foi deixar somente o necessário.
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




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 7 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