Error BASE/1082 (migrando do Summer'87 para 5.3)

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Paul66
Usuário Nível 1
Usuário Nível 1
Mensagens: 19
Registrado em: 25 Dez 2003 21:58

Error BASE/1082 (migrando do Summer'87 para 5.3)

Mensagem por Paul66 »

Oi Pessoal,

Acompanho o fórum já há algum tempo e sempre tenho solucionado os problemas pesquisando postagens anteriores, mas agora não estou tendo sucesso...

Não trabalho na área de programação de sistemas e os conhecimentos em clipper que obtive foram apenas para uso pessoal, tanto que até hoje a versão Summer era mais que suficiente. Aconteceu de um sistema que tenho foi crescendo, crescendo... e começou a dar erro Out of memory...

Verifiquei que qdo compilado sem algumas rotinas esse erro nao aparece. Deduzi que o EXE começou a ficar gde para uso em memória. Tentei criar orvelays, mas não obtive sucesso...
(o config e autoexec estão como os vários exemplos postados aqui no fórum. e acontece tanto no Win98 como no Win2K)

Conclusão: Resolvi migrar p/ o Clipper 5.3 e Blinker 6.0

Pesquisei muito aqui no fórum de como devia proceder e depois de alterações no prg, consegui compilar e linkar.

Ao executar o programa, apareceu o seguinte erro:
BASE/1082 Argument error: -

Ele é causado pela linha que está dentro de uma função criada por mim:

@ 0,Pcol say pMens + repl(" ", 80 - pCol - len(pMens))

O que há de errado com o sinal de subtração?

Com relação a esses Erros, existe algum local que eu possa consultá-los?
Espero poder contar com a ajuda de vcs.

Desde já agradeço qualquer ajuda. (Mesmo se for para sanar o erro na versão Summer)
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Poste a rotina toda, só com esta linha não dá para identificar o erro.
Sem mais
Wagner Nunes
www.vagucs.com.br
Paul66
Usuário Nível 1
Usuário Nível 1
Mensagens: 19
Registrado em: 25 Dez 2003 21:58

Mensagem por Paul66 »

Oi Vagner,
A função é esta:
Function Mensagem
pcol = 0
parameters ptipo, pmens, pcol
cor_local = setcolor()
if ptipo = 0 && cabecalho
set color to w/r

@ 0, pcol say pmens + repl(" ",80-pcol-len(pmens)) && LINHA DO ERRO

RelogioMenu()
endif
if ptipo > 0 && rodape
set color to w/r
@23, 0 say repl(" ",80)
@23,((80-len(pmens))/2) say pmens
endif
setcolor(cor_local)
@24, 0 say repl(" ",80)
return .t.
Eu alterei a forma como a função recebe os dados para:

Function Mensagem(ptipo, pmens, pcol)

Mas o erro continua...
Em outra rotina ele dá erro no sinal de "=" . Alterei para "==" e não adiantou. Segue tb a rotina:

Function FBuscaBar && Barra de Busca

btexto = ""
blorder = 0

param blin, bcol1, bcol2, bkeybusca, btexto, blorder


if blorder = 1 && LINHA DO ERRO

btexto = alltrim(left(btexto,5))
chrseek = btexto
endif

llen = bcol2 - bcol1 + 1
btexto1 = "Buscar &bkeybusca: " + btexto

if len(btexto1) > llen - 2
btexto1 = left(btexto1, llen-2)
endif

*btexto2 = "_" + space(llen - len(btexto1) - 3)
btexto2 = "_"

cor_local = setcolor()

@ blin , bcol1 say repl("Ä",llen)
@ blin+1, bcol1+1 say btexto1
set color to w*/n
@ row(), col() say btexto2
setcolor(cor_local)
@ row(), col() say space(llen - len(btexto1) - 2)

if blorder # 0
go top
if blorder = 1
seek val(btexto)
else
seek btexto
endif
endif

RelogioMenu()

setcolor(cor_local)
return .t.
Acredito que seja a forma de programar que é um pouco diferente da versão summer, mas nestes casos eu não entendi o que está acontecendo...

Obrigado pela ajuda

Abraços
Paul
Avatar do usuário
Daniel
Usuário Nível 3
Usuário Nível 3
Mensagens: 373
Registrado em: 13 Ago 2003 22:42
Localização: Apucarana - PR

Mensagem por Daniel »

so faltou como vc chama a funçao, o erro esta como vc chama a funçao
olhe.
exemplo:
mensagem(aki_numerico, aki_numerico, aki_caracter)


Function Mensagem
pcol = 0 // esta declaracao perde o valor para a linha de baixo
parameters ptipo, pmens, pcol
Daniel

Harbour + Minigui + dbfcdx
Marinas-Gui Pena que parou o suporte
Avatar do usuário
vagucs
Membro Master
Membro Master
Mensagens: 1480
Registrado em: 10 Jul 2004 10:45
Localização: Ipanema - MG
Contato:

Mensagem por vagucs »

Código: Selecionar todos

Function Mensagem 
pcol = 0 
parameters ptipo, pmens, pcol <- Se não for passado nenhum parametro em PCOL ele assume o valor NIL
cor_local = setcolor() 
if ptipo = 0 && cabecalho 
Coloque aqui
if pcol=NIL
   pcol=0
end if
set color to w/r
Deve resolver
Sem mais
Wagner Nunes
www.vagucs.com.br
Paul66
Usuário Nível 1
Usuário Nível 1
Mensagens: 19
Registrado em: 25 Dez 2003 21:58

Mensagem por Paul66 »

Oi Vagner e Daniel;

Vcs acertaram em cheio!!!

O problema é como eu atribuía os valores às variáveis.

Ao chamar algumas funçoes eu não repasso o conteúdo de todas as variáveis, pq estão atribuidas um valor a elas dentro da função, só que estava fazendo isso antes do comando Parameters.

Entendi que na versão 5.X, essa atribuição tem que ser depois de parameters.

Muito obrigado mesmo! :))

Abraços
Paul
Responder