Como Compilar somente Alterações?
Moderador: Moderadores
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Os erros permanecem.
Maligno os erros ainda permanecem, fiz as alterações que vc mencionou, mas não resolveu, os mesmos erros ainda ocorrem.
Marcos
Marcos
Re: Os erros permanecem.
Então me envie estes arquivos como anexos para minha caixa postal (usa o endereço que está no final da minha página) para que eu possa olhar. Decerto tem alguma coisa errada, que essa formatação do forum não me deixa perceber.Marcos escreveu:Maligno os erros ainda permanecem, fiz as alterações que vc mencionou, mas não resolveu, os mesmos erros ainda ocorrem.
Marcos
[]'s
Maligno
http://www.buzinello.com/prg
Aliás, aproveitando a questão formatação do fórum: sempre que for informar código (ou mesmo script) no fórum, coloque entre os delimitadores de código, que são code e /code entre colchetes. Assim fica mais fácil de visualizar.
E um detalhe que esqueci de dizer antes com relação ao Make. É um programa chato para algumas coisas. Uma delas é que ele exige um espaço antes do comando que será executado para cada regra. Portanto, observe com atenção suas linhas de comando. Sem um espaço em cada linha, é erro na certa. Seu script de novo:
Eu próprio não tinha percebido, mas nas suas três últimas linhas não havia um espaço inicial como agora. Em parte o erro foi meu. Como eu sempre reaproveito meus scripts, não me lembrei das "chatices" do Make.
E no caso da última contra-barra, não haverá problema se a linha seguinte for em branco. Neste script eu removi a última contra-barra que havia após o objeto VETERINA.OBJ. Mas como há uma linha em branco logo após, não haveria problema em mantê-la.
Das "chatices" do Make, é disso que me lembro no momento. Mas agora acho que isso é suficiente para fazê-lo funcionar. Mas se por acaso não der certo ainda assim, me envie os arquivos por eMail, como eu disse na mensagem anterior.
[]'s
Maligno
http://www.buzinello.com/prg
E um detalhe que esqueci de dizer antes com relação ao Make. É um programa chato para algumas coisas. Uma delas é que ele exige um espaço antes do comando que será executado para cada regra. Portanto, observe com atenção suas linhas de comando. Sem um espaço em cada linha, é erro na certa. Seu script de novo:
Código: Selecionar todos
menu.exe: FUNCAO.OBJ \
INDEXA.OBJ \
SENHA.OBJ \
DBEDITS.OBJ \
LIBERACA.OBJ \
EMPRESA.OBJ \
CLIENTES.OBJ \
FORNECED.OBJ \
ITENS.OBJ \
CIDADES.OBJ \
FUNCIONA.OBJ \
GRUPOS.OBJ \
TRANSPOR.OBJ \
NATUREZA.OBJ \
SITUACAO.OBJ \
OBSERVAC.OBJ \
VETERINA.OBJ
cls
blinker @prg.lnk
.prg.obj:
cls
echo -------------------------------------------
echo Clipper $& $(OPT) -d$(COMP)
Clipper $& $(OPT) -d$(COMP)E no caso da última contra-barra, não haverá problema se a linha seguinte for em branco. Neste script eu removi a última contra-barra que havia após o objeto VETERINA.OBJ. Mas como há uma linha em branco logo após, não haveria problema em mantê-la.
Das "chatices" do Make, é disso que me lembro no momento. Mas agora acho que isso é suficiente para fazê-lo funcionar. Mas se por acaso não der certo ainda assim, me envie os arquivos por eMail, como eu disse na mensagem anterior.
[]'s
Maligno
http://www.buzinello.com/prg
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Return's...
Agora funcionou, o que eu não entendo é que está dando erro no meu código sendo que já havia compilado e linkado outras vezes sem erros, está acontecendo erros nos Return's, veja:
MENU.PRG(380) Error C2006 Statement not allowed outside procedure or function.
Na linha 380 do MENU.PRG está escrito "Return Nil" e este PRG é o principal do meu programa, a proposito não tém um jeito de gravar os erros que ocorrem na Compilação/Linkedição em uma arquivo, pois assim é mais fácil para Reportar os erros aqui no fórum.
Maligno obrigado pela grande ajuda que vc está me dando, está sendo muito proveitosa pra mim.
Abraços,
Marcos
MENU.PRG(380) Error C2006 Statement not allowed outside procedure or function.
Na linha 380 do MENU.PRG está escrito "Return Nil" e este PRG é o principal do meu programa, a proposito não tém um jeito de gravar os erros que ocorrem na Compilação/Linkedição em uma arquivo, pois assim é mais fácil para Reportar os erros aqui no fórum.
Maligno obrigado pela grande ajuda que vc está me dando, está sendo muito proveitosa pra mim.
Abraços,
Marcos
Re: Return's...
Veja. Esse erro é decorrência dos parâmetros que estão sendo passados para o Make. Ele só manda para o Clipper aquilo que recebe. Repare isso no script. O X da questão está no seu .BAT que, provavelmente, está enviando para o Make uma série de parâmetros de compilação, incluindo aí o parâmetro /n, que muito provavelmente você não usava antes. Daí o erro.Marcos escreveu:está dando erro no meu código sendo que já havia compilado e linkado outras vezes sem erros, está acontecendo erros nos Return's, veja:
MENU.PRG(380) Error C2006 Statement not allowed outside procedure or function.
Esmiuçando: normalmente o Clipper, no início de cada fonte, insere de forma automática a palavra chave PROCEDURE no início do código, corrigindo assim a criação da função/procedimento. Se usar o parâmetro /n, ele não vai tomar essa iniciativa, mas espera que seu código inicie corretamente, com uma declaração FUNCTION ou PROCEDURE no início desse código. É o que deve estar faltando ao seu MENU.PRG. Verifique.
A solução mais correta é você manter esse /n e inserir uma dessas duas declarações, para que o compilador saiba onde é o início do código. Aliás, acho uma boa idéia que você torne isso um hábito, já que qualquer linguagem mais moderna e decente exige que a criação de funções seja feita de forma estruturalmente correta.
[]'s
Maligno
http://www.buzinello.com/prg
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Funcionou.
Funcionou Maligno, foi dito e feito, só acrescentei no MENU.PRG a expressão FUNCTION no inicio e deu certo.
Você mencionou a existência de um programa chamado Choice que dá um Pause ao compilar o programa, você poderia manda-lo pra mim?
Também gostaria que me explicasse melhor a respeito dos Bat's TESTE/FINAL que você utiliza pra entrega do programa, não entendi muito bem sua explicação.
Marcos
daroca@terra.com.br
Você mencionou a existência de um programa chamado Choice que dá um Pause ao compilar o programa, você poderia manda-lo pra mim?
Também gostaria que me explicasse melhor a respeito dos Bat's TESTE/FINAL que você utiliza pra entrega do programa, não entendi muito bem sua explicação.
Marcos
daroca@terra.com.br
Acabo de enviar.Você mencionou a existência de um programa chamado Choice que dá um Pause ao compilar o programa, você poderia manda-lo pra mim?
Lembre-se: o seu script de compilação tem o comando para executar o Clipper e uma série de parâmetros.Também gostaria que me explicasse melhor a respeito dos Bat's TESTE/FINAL que você utiliza pra entrega do programa, não entendi muito bem sua explicação.
Código: Selecionar todos
Clipper $& $(OPT) -d$(COMP) onde,
OPT = parâmetros de compilação do Clipper
COMP = símbolo de pré-processamento que pode ser útil dentro dos
seus fontes, para compilar ou ignorar partes do código.
Código: Selecionar todos
make -fscript -l+ -s -DOPT=/m/n/p/b -DCOMP=TESTECódigo: Selecionar todos
// Se eu não definir nenhum símbolo para desvio do pré-processamento,
// vou supor que seja uma versão de TESTE.
#ifndef FINAL
#ifndef TESTE
#define TESTE
#endif
#endif
#ifdef FINAL
// Não quero que o cliente aborte o programa usando Alt+C.
SetCancel(.F.)
#include "_compFinal.ch"
#else
#ifdef TESTE
// Em versões de TESTE é sempre bom poder usar o Alt+C.
SetCancel(.T.)
#endif
#endifNa essência é uma coisa muito simples. Não sei se consegui ser claro na minha explicação. Mas se ainda tiver qualquer dúvida, você sabe que o canal está sempre aberto. Não se acanhe. É só enviar outra mensagem. Além do que, sua dúvida pode ser a de muitos.
[]'s
Maligno
http://www.buzinello.com/prg
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Clipper x xHarbour (BLINKER, Make, HBmake)
ARAGUARI-MG, 21 de setembro de 2004.
Prezado Malígno,
Venho acompanhando seus POST's, sobre compilação, BLINKER, Make, HBmake, etc.
Solicito seu auxílio, conforme sua disponibilidade, para tentarmos padronizar um processo de compilação para CLIPPER 5.2E e xHarbour 0.99, SEM ter que alterar TODOS os fontes.
A princípio, no xHarbour, apenas o *.prg principal deveria ser alterado, incluindo-se
FUNCTION Main()
(***)
RETURN
O problema ocorre quando fragmentamos os *.prg, onde
DO ROTINA
#include "rotina.prg"
Rotina()
acabam por gerar muitos erros na compilação (xHarbour).
Por gentileza, acesse:
https://pctoledo.org/forum/viewtopic.php?t=703
e o "modelo.zip" em:
http://www.gransoft.com/download/clipper/
Em Clipper:
CORREIO.PRG (principal)
Para RTLINK, COMPILA1.BAT
Para BLINKER, COMPILA2.BAT
Para atualizar o "Sistema", MOVEEXE modelo
Senha: ADMIN
Em xHarbour:
COR_HARB.PRG (principal)
cor_harb.bc (HBMAKE)
TGET.PRG (necessário, caso contrário, os GET/SAY não assumirão/importarão o último SETCOLOR).
Se você aceitar a proposta, antecipo os meus agradecimentos e certamente, também os dos novos usuários Clipper/xHarbour sob "WinDOS".
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezado Malígno,
Venho acompanhando seus POST's, sobre compilação, BLINKER, Make, HBmake, etc.
Solicito seu auxílio, conforme sua disponibilidade, para tentarmos padronizar um processo de compilação para CLIPPER 5.2E e xHarbour 0.99, SEM ter que alterar TODOS os fontes.
A princípio, no xHarbour, apenas o *.prg principal deveria ser alterado, incluindo-se
FUNCTION Main()
(***)
RETURN
O problema ocorre quando fragmentamos os *.prg, onde
DO ROTINA
#include "rotina.prg"
Rotina()
acabam por gerar muitos erros na compilação (xHarbour).
Por gentileza, acesse:
https://pctoledo.org/forum/viewtopic.php?t=703
e o "modelo.zip" em:
http://www.gransoft.com/download/clipper/
Em Clipper:
CORREIO.PRG (principal)
Para RTLINK, COMPILA1.BAT
Para BLINKER, COMPILA2.BAT
Para atualizar o "Sistema", MOVEEXE modelo
Senha: ADMIN
Em xHarbour:
COR_HARB.PRG (principal)
cor_harb.bc (HBMAKE)
TGET.PRG (necessário, caso contrário, os GET/SAY não assumirão/importarão o último SETCOLOR).
Se você aceitar a proposta, antecipo os meus agradecimentos e certamente, também os dos novos usuários Clipper/xHarbour sob "WinDOS".
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Erro.
Maligno está acontecendo um erro estranho, que não existia anteriormente:
FUNCAO.PRG(1244) Error C2002 Incomplete statement or unbalanced delimiters.
Acho que é porque eu eliminei algumas linhas do BLINKER, talvez.
Marcos
FUNCAO.PRG(1244) Error C2002 Incomplete statement or unbalanced delimiters.
Acho que é porque eu eliminei algumas linhas do BLINKER, talvez.
Marcos
Re: Erro.
Não. Isso nada tem a ver com o BLinker. Poste aqui a linha do erro, pra gente analisar.Marcos escreveu:FUNCAO.PRG(1244) Error C2002 Incomplete statement or unbalanced delimiters.
Acho que é porque eu eliminei algumas linhas do BLINKER, talvez.
[]'s
Maligno
http://www.buzinello.com/prg
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Código.
A linha do erro só contém este codigo.
(...)
enddo
Msgbox1("Estado nÆo Cadastrado!")
Return(.f.)
********************************************
FUNCTION TESTE // Esta é a linha 1244 que está dando o erro.
PARAMETERS st
(...)
Marcos
(...)
enddo
Msgbox1("Estado nÆo Cadastrado!")
Return(.f.)
********************************************
FUNCTION TESTE // Esta é a linha 1244 que está dando o erro.
PARAMETERS st
(...)
Marcos
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Balanceamento...
ARAGUARI-MG, 22 de setembro de 2004.
Prezado Marcos,
Verifique em "FUNCAO.PRG", todos os laços
IF
ENDIF
DO WHILE
ENDDO
FUNCTION
RETURN
PROCEDURE
RETURN
Alguma dessas estruturas não ficou correta.
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezado Marcos,
Verifique em "FUNCAO.PRG", todos os laços
IF
ENDIF
DO WHILE
ENDDO
FUNCTION
RETURN
PROCEDURE
RETURN
Alguma dessas estruturas não ficou correta.
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
- Marcos
- Usuário Nível 3

- Mensagens: 355
- Registrado em: 20 Set 2003 09:16
- Localização: Cáceres/Mato Grosso
Função.
Janis, é muito estranho, pois se retiro do FUNCAO.PRG a função TESTE, não dá mais o erro, e se compilo na forma antiga também não dá o erro, abaixo vou descrever a função TESTE.PRG, aparentemente ela não tém erro algum, pois eu sempre compilei desta forma:
FUNCTION TESTE
PARAMETERS st
lk=LASTKEY()
DO WHILE .T.
DO CASE
CASE lk=-4
telaTes:= savenv(15,10,22,72)
Win(15, 10, 21, 70, "Procurar")
SETCOLOR( "N*/W,N+*/W+*" )
VCODC=0; VNOM=SPACE(38)
CLEAR GETS
SET CURSOR ON
DO WHILE .T.
@17,12 to 19,68
@18,55 SAY "³"
@17,13 SAY " Nome "
@17,56 SAY " C¢digo "
@20,13 SAY "Nome Vazio e [ENTER], Consulta por C¢digo" @18,14 GET VNOM PICTURE "@!"
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VNOM)
@18,57 GET VCODC PICTURE "999999"
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VCODC);LOOP;ENDIF
dbsetorder(1)
SET SOFTSEEK ON
SEEK VCODC
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDIF
dbsetorder(2)
SET SOFTSEEK ON
SEEK TRIM(VNOM)
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDDO
rstenv(telaTes)
SET CURSOR OFF
EXIT
CASE st=0
st=1
EXIT
CASE st=1
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=2
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=3
aJan := Nbox( 12, 20, 14, 59, "w+/r" )
@13,21 SAY PADC( "Arquivo Vazio", 38 ) Color "w+/r"
INKEY(02)
KEYBOARD(CHR(27))
EXIT
CASE st=4
IF lk=27 .OR. lk=-9 .OR. lk=13 .OR. lk= -8 .OR. lk= 22
st=0
ENDIF
EXIT
CASE lk=27
KEYBOARD(CHR(27))
st=0
EXIT
ENDCASE
ENDDO
RETURN st
FUNCTION TESTE
PARAMETERS st
lk=LASTKEY()
DO WHILE .T.
DO CASE
CASE lk=-4
telaTes:= savenv(15,10,22,72)
Win(15, 10, 21, 70, "Procurar")
SETCOLOR( "N*/W,N+*/W+*" )
VCODC=0; VNOM=SPACE(38)
CLEAR GETS
SET CURSOR ON
DO WHILE .T.
@17,12 to 19,68
@18,55 SAY "³"
@17,13 SAY " Nome "
@17,56 SAY " C¢digo "
@20,13 SAY "Nome Vazio e [ENTER], Consulta por C¢digo" @18,14 GET VNOM PICTURE "@!"
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VNOM)
@18,57 GET VCODC PICTURE "999999"
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VCODC);LOOP;ENDIF
dbsetorder(1)
SET SOFTSEEK ON
SEEK VCODC
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDIF
dbsetorder(2)
SET SOFTSEEK ON
SEEK TRIM(VNOM)
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDDO
rstenv(telaTes)
SET CURSOR OFF
EXIT
CASE st=0
st=1
EXIT
CASE st=1
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=2
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=3
aJan := Nbox( 12, 20, 14, 59, "w+/r" )
@13,21 SAY PADC( "Arquivo Vazio", 38 ) Color "w+/r"
INKEY(02)
KEYBOARD(CHR(27))
EXIT
CASE st=4
IF lk=27 .OR. lk=-9 .OR. lk=13 .OR. lk= -8 .OR. lk= 22
st=0
ENDIF
EXIT
CASE lk=27
KEYBOARD(CHR(27))
st=0
EXIT
ENDCASE
ENDDO
RETURN st
-
gransoft
- Usuário Nível 3

- Mensagens: 321
- Registrado em: 06 Jul 2004 17:48
- Localização: UBERLÂNDIA-MG
- Contato:
Identar
ARAGUARI-MG, 22 de setembro de 2004.
Prezado Marcos,
Verifique no SEU algorítmo:
clipper teste /n
Atenciosamente,
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
Prezado Marcos,
Verifique no SEU algorítmo:
clipper teste /n
Código: Selecionar todos
FUNCTION TESTE
PARAMETERS st
lk=LASTKEY()
DO WHILE .T.
DO CASE
CASE lk=-4
telaTes:= savenv(15,10,22,72)
Win(15, 10, 21, 70, "Procurar")
SETCOLOR( "N*/W,N+*/W+*" )
***
* VCODC=0; VNOM=SPACE(3
VCODC=0; VNOM=SPACE(3)
***
CLEAR GETS
SET CURSOR ON
DO WHILE .T.
@17,12 to 19,68
@18,55 SAY "³"
@17,13 SAY " Nome "
@17,56 SAY " C¢digo "
@20,13 SAY "Nome Vazio e [ENTER], Consulta por C¢digo"
***
@18,14 GET VNOM PICTURE "@!"
***
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VNOM)
@18,57 GET VCODC PICTURE "999999"
READ
IF LASTKEY()=27;EXIT;ENDIF
IF EMPTY(VCODC);LOOP;ENDIF
dbsetorder(1)
SET SOFTSEEK ON
SEEK VCODC
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDIF
dbsetorder(2)
SET SOFTSEEK ON
SEEK TRIM(VNOM)
SET SOFTSEEK OFF
IF .NOT. FOUND()
ENDIF
EXIT
ENDDO
rstenv(telaTes)
SET CURSOR OFF
EXIT
CASE st=0
st=1
EXIT
CASE st=1
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=2
TONE(2500,1)
SET CURSOR OFF
st=2
EXIT
CASE st=3
aJan := Nbox( 12, 20, 14, 59, "w+/r" )
@13,21 SAY PADC( "Arquivo Vazio", 38 ) Color "w+/r"
INKEY(02)
KEYBOARD(CHR(27))
EXIT
CASE st=4
IF lk=27 .OR. lk=-9 .OR. lk=13 .OR. lk= -8 .OR. lk= 22
st=0
ENDIF
EXIT
CASE lk=27
KEYBOARD(CHR(27))
st=0
EXIT
ENDCASE
ENDDO
RETURN st
Janis Peters Grants.
http://www.gransoft.com.br
gransoft@zipmail.com.br
