erro base/1003 Variavel não existe

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

Moderador: Moderadores

ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

erro base/1003 Variavel não existe

Mensagem por ssflavio »

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
MSDN
Usuário Nível 4
Usuário Nível 4
Mensagens: 741
Registrado em: 28 Nov 2003 15:55
Localização: CWB
Contato:

erro base/1003 Variavel não existe

Mensagem por MSDN »

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.
ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

erro base/1003 Variavel não existe

Mensagem por ssflavio »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro base/1003 Variavel não existe

Mensagem por JoséQuintas »

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.

Código: Selecionar todos

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 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/
ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

erro base/1003 Variavel não existe

Mensagem por ssflavio »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro base/1003 Variavel não existe

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

erro base/1003 Variavel não existe

Mensagem por Jairo Maia »

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 do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

erro base/1003 Variavel não existe

Mensagem por Itamar M. Lins Jr. »

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.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro base/1003 Variavel não existe

Mensagem por JoséQuintas »

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 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/
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

erro base/1003 Variavel não existe

Mensagem por Jairo Maia »

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 do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro base/1003 Variavel não existe

Mensagem por JoséQuintas »

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 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/
ssflavio
Usuário Nível 2
Usuário Nível 2
Mensagens: 86
Registrado em: 10 Jul 2008 09:57
Localização: São Paulo / SP

erro base/1003 Variavel não existe

Mensagem por ssflavio »

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
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

erro base/1003 Variavel não existe

Mensagem por JoséQuintas »

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 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/
Responder