Página 1 de 1

Erro de sintax.

Enviado: 09 Fev 2012 11:00
por johannstr
Estou migrando um programa em clipper para o windows em c, só que sou leigo nessa linguagem, gostaria q alguem me ajudasse com isto. Acredito q este seja a parte do forum errada para isto, mas estou usando o xharbour para a migração.

http://imageshack.us/photo/my-images/51/sintax.png/

Agradeço desde já.

Erro de sintax.

Enviado: 09 Fev 2012 19:54
por lugab
Johan, fica mais fácil se vc postar o código da aplicação diretamente no post..

De seu ctrl+c la no trecho da sua apliação e depois de o ctrl+v aqui no post , dentro das tags code:

Código: Selecionar todos

  codigo do programa .... 

Erro de sintax.

Enviado: 13 Fev 2012 12:58
por johannstr
ta bom vou fazer isso.

Erro de sintax.

Enviado: 13 Fev 2012 13:07
por johannstr

Código: Selecionar todos

FUNCTION CREGRAF1()
* *************************************************** *
* SISTEMA ............... C.E.C - FASHION *
* PROGRAMA .............. CREGRAF1 *
* FUNCAO ................ ANALISE DE PRESTACOES *
* DATA CRIACAO .......... 27/03/95 *
* DATA ULT. ALTERACAO ... 27/03/95 *
* AUTOR ................. JBSC *
* *************************************************** *
SET SCORE OFF
SET DATE BRIT
SET DELE ON
SET WRAP ON
SET PROC TO CREPROC
SET COLOR TO W/B
* ....
IF NET_USE("A","CREPREST",.F.,10)
NREC=LASTREC()
ENDIF
* .....
PRIVATE ANO,CONTREC
DECLARE aTTPREST[12],aTTPAGO[12],aTTABERTO[12]
*.... rotina principal
ANO=YEAR(DATE())-1900
STORE 0 TO CONTREC
AFILL(aTTPREST,0)
AFILL(aTTPAGO,0)
AFILL(aTTABERTO,0)
* ....
@ 10,20 CLEAR TO 14,60
@ 10,20 TO 14,60 DOUBLE
@ 11,21 SAY "Ano:" GET ANO PICT "99" VALID !EMPTY(ANO)
READ
IF LASTKEY()=27
CLOSE ALL
RETU
ENDIF
ANO=ANO+1900
@ 12,21 SAY "Total de registros: "+TRANS(NREC,"@E 999,999")
* ....
SELE A
GO TOP
DO WHILE !EOF()
* .... Valor a receber para cada mes/ano
IF YEAR(PR_DTPREST)=ANO
aTTPREST[MONTH(A->PR_DTPREST)]=aTTPREST[MONTH(A->PR_DTPREST)]+A->PR_VLPREST
ENDIF
* .... Valor das prestacoes pagas cada mes/ano
IF YEAR(PR_DTPGPRE)=ANO
aTTPAGO[MONTH(A->PR_DTPGPRE)]=aTTPAGO[MONTH(A->PR_DTPGPRE)]+A->PR_VLPAGO
ENDIF
* .... Valor das prestacoes abertas cada mes/ano
IF YEAR(PR_DTPREST)=ANO .AND. (A->PR_SITU="A")
aTTABERTO[MONTH(A->PR_DTPREST)]=aTTABERTO[MONTH(A->PR_DTPREST)]+A->PR_VLPREST
ENDIF
SELE A
SKIP
CONTREC=CONTREC+1
@ 13,21 SAY "Total de lidos ...: "+TRANS(CONTREC,"@E 999,999")
ENDDO
* .... Monta grafico de barras
FUNCTION BC_INIC()
FUNCTION BC_GABJAN()
FUNCTION BC_GDGRAF(23)
titulo = {"Analise de Prestacoes", "Fashion Center"}
meses = {"jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"}
legenda = {"Total", "Pagas", "Abertas"}
FUNCTION BC_GBARRA(attprest, attpago, attaberto, meses, legenda, titulo)
inkey(0)
FUNCTION BC_FIM()
CLOSE ALL
RETU

Erro de sintax.

Enviado: 13 Fev 2012 13:44
por Itamar M. Lins Jr.
Ola!
Olha o erro:
FUNCTION BC_GDGRAF(23)
Tire esse 23 ai.
Lá no xDev está avisando a mesma coisa.

Saudações,
Itamar M. Lins Jr.

Erro de sintax.

Enviado: 13 Fev 2012 13:48
por johannstr
Já havia retirado em outras tentavias mas ele faz parte no clipper, mas em c já não sei, mas acabei tirando a parte de graficos que me falaram q não precisava, obrigado pela ajuda.

Erro de sintax.

Enviado: 13 Fev 2012 13:49
por johannstr
Já havia retirado em outras tentativas mas ele faz parte no clipper, mas em c já não sei, mas acabei tirando a parte de graficos que me falaram q não precisava, obrigado pela ajuda.

Erro de sintax.

Enviado: 13 Fev 2012 15:12
por rochinha
Amiguinho,

Apesar de algumas linguagens não seguirem as mesmas convenções é uma boa prática programar na linguagem a que se dedica na forma correta e didática.

Apesar de não ser necessário terminar uma função ou procedimento, ou escrever partes do comando, eu no meu entender acho feio e parece um trabalho preguiçoso.

Como voce esta aprendendo esta linguagem, seria bom para o seu próprio entender que uma função ou procedimento pode possuir um terminador:

Código: Selecionar todos

FUNCTION BC_INIC()
FUNCTION BC_GABJAN()
FUNCTION BC_GDGRAF()
titulo = {"Analise de Prestacoes", "Fashion Center"}
meses = {"jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"}
legenda = {"Total", "Pagas", "Abertas"}
FUNCTION BC_GBARRA(attprest, attpago, attaberto, meses, legenda, titulo)
inkey(0)
FUNCTION BC_FIM()
Veja a correção didática:

Código: Selecionar todos

FUNCTION BC_INIC()
    // Codigo da função
    RETURN nil
FUNCTION BC_GABJAN()
    // Codigo da função
    RETURN nil
FUNCTION BC_GDGRAF()
   titulo = {"Analise de Prestacoes", "Fashion Center"}
   meses = {"jan", "fev", "mar", "abr", "mai", "jun", "jul", "ago", "set", "out", "nov", "dez"}
   legenda = {"Total", "Pagas", "Abertas"}
    // Codigo da função
    RETURN nil
FUNCTION BC_GBARRA(attprest, attpago, attaberto, meses, legenda, titulo)
    // Codigo da função
    RETURN inkey(0)
FUNCTION BC_FIM()
    // Codigo da função
    RETURN nil
Ao colocar parametros voce os definirá com algum nome:

Código: Selecionar todos

FUNCTION BC_GABJAN( linha, coluna, largura, altura )
    // Codigo da função
    RETURN nil
Se sua função não retornar nenhum valor que seja relevante voce pode terminá-la com algum valor nulo ou vazio:

Código: Selecionar todos

FUNCTION BC_GABJAN( linha, coluna, largura, altura )
    // Codigo da função
    RETURN nil

FUNCTION BC_GABJAN( linha, coluna, largura, altura )
    // Codigo da função
    RETURN ""
Se sua função precisar retornar algum valor para apresentação ou uso posterior:

Código: Selecionar todos

FUNCTION SOMA( valorA, valorB )
    nRetorno := valorA + valorB
    RETURN nRetorno

ou:

FUNCTION SOMA( valorA, valorB )
    RETURN valorA + valorB
Voce poderá usar em seu código:

Código: Selecionar todos

   ...
   nResultado := SOMA( 10, 20 )
   ...
Ou:

Código: Selecionar todos

   ...
   nResultado := 100 - SOMA( 20, 30 )
   ...
Se sua função precisar retornar algum valor lógico ou executar uma critica:

Código: Selecionar todos

FUNCTION QUALOPCAO( valorA, valorB )
    IF valorA > valorB
        nRetorno := .T.
    ELSE
        nRetorno := .F.
    ENDIF
    RETURN nRetorno
ou:

Código: Selecionar todos

FUNCTION QUALOPCAO( valorA, valorB )
    nRetorno := .F. // Retorno sempre será falso
    IF valorA > valorB 
        nRetorno := .T. // Caso a critica seja verdadeira muda o retorno
    ENDIF
    RETURN nRetorno
ou:

Código: Selecionar todos

FUNCTION QUALOPCAO( valorA, valorB )
    // Aqui uso uma função de critica e reduzo linhas de codigo
    RETURN IIF( valorA > valorB, .T., .F. )
Acostume-se a escrever os comandos em seu formato completo, isto mostra zelo e disciplina, pois as abreviações por mais que pareçam codificação avançada, aos olhos de quem avalia demonstram preguiça.

Com o que foi apresentado voce não acha que seu código ficaria mais bonito?
Estou migrando um programa em clipper para o windows em c, só que sou leigo nessa linguagem, gostaria q alguem me ajudasse com isto. Acredito q este seja a parte do forum errada para isto, mas estou usando o xharbour para a migração.
Mas me ficou uma duvida, voce esta migrando um código em Clipper para C?, esta migrando um código em xHarbour para C? ou esta migrando um código em Clipper para xHarbour?

Erro de sintax.

Enviado: 13 Fev 2012 16:12
por johannstr
Recebi um programa em Clipper para fazer funcionar no windows, estou usando o Xhorbour para ler o clipper, que pelo q entendi passa ele para a linguagem C, e uso o compilador borlandC/C++ 5.5.
Obrigado pelas dicas e instruções dadas me ajudaram sim.

Abraços.