Clipper On Line • Ver Tópico - Indentando PRGS

Indentando PRGS

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

 

Indentando PRGS

Mensagempor evolver » 07 Mar 2005 03:55

Rotina extremamente basica para identação automática de PRGs, usa funções memo o que pode limitar o tamanho do arquivo aberto e as linhas alêm de poder haver algum bug, mas no geral funciona bunitinho.

parameters nomearq
if .not. file(nomearq)
    ? chr(07)+"Nome de Arquivo nao encontrado"
    return
endif
cls
load=memoread(nomearq)
nome=left(nomearq,rat(".",nomearq))+"IDB"
memowrit(nome,load)
nlin=mlcount(load,254)
prog=""
for i = 1 to nlin
    @ 0,0 say "Aguarde termino da fase 1 ->"+str(int((i*100)/nlin),3)+"% concluido"
    line=alltrim(memoline(load,254,i))+chr(13)+chr(10)
    prog+=line
next
load=strtran(prog,";"+chr(13)+chr(10),"")
tab=0
aum=0
prog=""
nlin=mlcount(load,254)
i=1
while i <=nlin
@ 0,0 say "Aguarde termino da fase 2 ->"+str(int((i*100)/nlin),3)+"% concluido"
line=lower(alltrim(memoline(load,254,i)))
lin=alltrim(memoline(load,254,i))
if line==""
    i++
    loop
endif
if line = "elseif " .or. line= "case " .or. line == "end" .or. line == "endif" .or. line == "enddo" .or. line == "next" .or. line == "endcase" .or. line == "otherwise"
    progx=space(tab-4)+lin+chr(13)+chr(10)
else
    progx=space(tab)+lin+chr(13)+chr(10)
endif
prog+=progx
do case
case line = "do while "
    tab+=4
case line == "enddo"
    tab-=4
case line = "while "
    tab+=4
case line == "end"
    tab-=4
case line = "if "
    tab+=4
case line == "endif"
    tab-=4
case line = "for "
    tab+=4
case line == "next"
    tab-=4
case line == "do case"
    tab+=4
case line == "endcase"
    tab-=4
endcase
i++
enddo
memowrit(nomearq,prog)
Sergio "Evolver" Fagundes

CURVE-SE DIANTE DE MIM SER INSIGNIFICANTE, POIS EU SOU ROOT
Só respondo em PVT perguntas relativas ao que eu faço. Qualquer outra dúvida favor postar no fórum.
Peço aos veteranos que antes de responder a uma pergunta repetida dêem uma pesquisada e instruam a quem perguntou a fazer o mesmo.
evolver
Membro Master

Membro Master
 
Mensagens: 182
Data de registro: 28 Ago 2004 01:02
Cidade/Estado: Cruz Alta - RS
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Mensagempor janio » 25 Abr 2005 23:58

Olá Evolver!

O que é mesmo "identar" um PRG, hein?

Janio
fui...
e-mail:janioaguiar@yahoo.com.br
msn: janio_aguiar@hotmail.com
xHarbour1.2.1/Harbour3.2 + wvg + hwgui + Mediator + MySql
Avatar de usuário

janio
Colaborador

Colaborador
 
Mensagens: 1835
Data de registro: 06 Jul 2004 07:43
Cidade/Estado: UBAJARA - CE
Curtiu: 8 vezes
Mens.Curtidas: 68 vezes

Mensagempor Dudu_XBase » 26 Abr 2005 23:15

Boa Noite Jânio.
Endentar ou Endentação é formatar o prg para melhor interpretação do código, disponibilizando um espaço ou recuo a partir da margem esquerda.
Isso é utilizado em mtas linguagens de programação eu programo tb em Java se eu não endentar meus fontes eu me perco...a mesma coisa faço com meus prgs...

por exemplo um código sem endentação
  while !eof()
  if lastkey()=27
  exit
  endif
  do Case
  case a=1
  case a=2
  otherwise
  Endcase
  enddo
 


Com Endentação
  while !eof()
      if lastkey()=27
          exit
      endif
      do Case
          case a=1
          case a=2
          otherwise
      Endcase
  enddo 
 



:xau


________________________________________________________________________________________________________
(Aow Saudade) Clipper 5.2e, Blinker 7, RDD SIXNSX, DBFCDX /Xharbour 1.0, Rdd Mediator (Mysql) Free , RDD Sqlrdd (Sql Server) Comercial
(Hoje) C# Python Sql Server e Oracle




Dudu_XBase
Membro Master

Membro Master
 
Mensagens: 1036
Data de registro: 25 Ago 2003 16:55
Curtiu: 24 vezes
Mens.Curtidas: 9 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 22 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