Página 1 de 1

Corrigindo aplicativo antigo

Enviado: 17 Nov 2025 02:42
por JoséQuintas
memvar.png
Estou desenvolvendo utilitários muito doidos.
Na imagem o antes e o depois.
14.000 linhas de erro, reduzidas a 3.500 linhas, automaticamente.
E isso nem está contando a declaração de variáveis MEMVAR, senão a diferença seria maior ainda.

Agora olhar as que sobraram pra ver o que dá pra fazer.

Re: Corrigindo aplicativo antigo

Enviado: 17 Nov 2025 07:49
por JoséQuintas
retval.png
De 3,500 pra 2.300

Código: Selecionar todos


PROCEDURE Main

   LOCAL cTxt, aList, cLine, cFile, aPrgList := {}, nPos, aItem

   SetMode(33,100)
   SetMode("W/B")
   CLS
   cTxt := MemoRead( "errorlist.txt" )
   aList := hb_RegExSplit( hb_Eol(), cTxt )

   FOR EACH cLine IN aList
      IF "procedure returns value" $ Lower( cLine )
         cFile := Substr( cLine, 1, At( ":", cLine ) - 1 )
         cLine := Substr( cLine, At( ":", cLine ) + 1 )
         cLine := Val( Substr( cLine, 1, At( ":", cLine ) - 1 ) )
         nPos := hb_AScan( aPrgList, { | e | e[1] == cFile } )
         IF nPos == 0
            AAdd( aPrgList, { cFile, {} } )
            nPos := Len( aPrgList )
         ENDIF
         AAdd( aPrgList[ nPos ][ 2 ], cLine )
      ENDIF
   NEXT
   hb_MemoWrit( "test.txt", hb_jsonEncode( aPrgList ) )
   FOR EACH aItem IN aPrgList
      IF File( aItem[1] )
         ? aItem[1]
         RemoveReturn( aItem[1], aItem[2] )
      ENDIF
   NEXT
   Inkey(0)

   RETURN

FUNCTION RemoveReturn( cFile, acLine )

   LOCAL cTxt, aList, cItem, nLine

   cTxt := MemoRead( cFile )
   aList := hb_RegExSplit( hb_Eol(), cTxt )

   FOR EACH nLine IN acLine
      IF nLine < Len( aList )
         IF Right( Upper( Trim( aList[ nLine ] ) ), 10 ) == "RETURN .T."
            aList[ nLine ] := Trim( aList[ nLine ] )
            aList[ nLine ] := Substr( aList[ nLine ], 1, Len( aList[ nLine ] ) - 3 )
         ENDIF
      ENDIF
   NEXT
   cTxt := ""
   FOR EACH cItem IN aList
      cTxt += cItem + hb_Eol()
   NEXT
   hb_MemoWrit( cFile, cTxt )

   RETURN Nil
Capturei os erros de "procedure returns value", e fiz a correção.

Re: Corrigindo aplicativo antigo

Enviado: 17 Nov 2025 09:45
por JoséQuintas
err.png
Melhorou, dos 13.000 do início do post, restam 200.
A grande maioria resolvida por utilitário em harbour, além de outras alterações.

Isso de fonte pra consertar fonte... é meio doido, mas tá funcionando.

Re: Corrigindo aplicativo antigo

Enviado: 17 Nov 2025 15:34
por JoséQuintas
Um alerta importante:
Essas rotinas são específicas, direcionadas a estes fontes.
Só devem ser usadas por quem trabalha usando GIT, assim tem controle total pra anular alterações inadequadas.
Dependendo dos fontes, podem estragar ao invés de consertar.