:procLine - equivalente

:procLine - equivalente

Postby MarioG » Tue Dec 20, 2016 1:01 pm

Buenos dias Gente
Compilando con xHarbour, capturo un error y describo, entre otros, el suceso informando con oError:procLine
Al compilar con Harbour tal data no existe; cual es el equivalente?; ya que si uso ProcLine(), este sin pasarle parámetro numérico, me devuelve la linea de donde se llamo al Alert() del error y no precisamente donde ocurrió el error.

gracias
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby karinha » Tue Dec 20, 2016 1:17 pm

João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby MarioG » Tue Dec 20, 2016 2:26 pm

Karinha; muchas gracias
Esto necesito:

Alert( "[Error nro: "+Str(oErr:GenCode,4,,TRUE)+"] - "+oErr:Description+CRLF+" - Línea: "+Str(oErr:procLine,4,,TRUE);
"EL Proceso de borrado se canceló" +CRLF+ ;
"Verifique archivo:"+h0:cFileLog,,"Atención",,IDI_HAND )


No ProcLine(), porque, en este caso, me devuelve la linea del Alert()
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby karinha » Tue Dec 20, 2016 2:49 pm

Como en este caso?

Code: Select all  Expand view

FUNCTION ADOSHOWERROR( oCn, cTable, lSilent ) //CHANGES BY BYTE-ONE
   LOCAL nErr, oErr, cErr
   DEFAULT oCn TO oConnection
   DEFAULT lSilent TO .F.
   DEFAULT cTable TO ""
   IF ( nErr := oCn:Errors:Count ) > 0
      oErr  := oCn:Errors( nErr - 1 )
      IF ! lSilent
         WITH OBJECT oErr
            cErr     := IF( !EMPTY( cTable ),'Table: ' + cTable +CRLF + CRLF ,"")
            cErr     += oErr:Description
            cErr     += CRLF + 'Source : ' + oErr:Source
            cErr     += CRLF + 'NativeError : ' + cValToChar( oErr:NativeError )
            cErr     += CRLF + 'Error Source : ' + oErr:Source
            cErr     += CRLF + 'Sql State : ' + oErr:SQLState
            cErr     += CRLF + REPLICATE( '-', 50 )
            cErr     += CRLF + PROCNAME( 1 ) + "( " + cValToChar( PROCLINE( 1 ) ) + " )"
            cErr     += CRLF + PROCNAME( 2 ) + "( " + cValToChar( PROCLINE( 2 ) ) + " )"
            cErr     += CRLF + PROCNAME( 3 ) + "( " + cValToChar( PROCLINE( 3 ) ) + " )"
            cErr     += CRLF + PROCNAME( 4 ) + "( " + cValToChar( PROCLINE( 4 ) ) + " )"
            cErr     += CRLF + PROCNAME( 5 ) + "( " + cValToChar( PROCLINE( 5 ) ) + " )"
            cErr     += CRLF + PROCNAME( 6 ) + "( " + cValToChar( PROCLINE( 6 ) ) + " )"
            cErr     += CRLF + PROCNAME( 7 ) + "( " + cValToChar( PROCLINE( 7 ) ) + " )"
            MSGALERT( cErr, IF( oCn:Provider = NIL, "ADO ERROR",oCn:Provider ) )
         END
      ENDIF
   ELSE
      MSGALERT( "ADO ERROR UNKNOWN"+;
                CRLF + PROCNAME( 1 )  + "( " + cValToChar( PROCLINE( 1 ) ) + " )" + ;
                CRLF + PROCNAME( 2 )  + "( " + cValToChar( PROCLINE( 2 ) ) + " )" + ;
                CRLF + PROCNAME( 3 )  + "( " + cValToChar( PROCLINE( 3 ) ) + " )" + ;
                CRLF + PROCNAME( 4 )  + "( " + cValToChar( PROCLINE( 4 ) ) + " )" + ;
                CRLF + PROCNAME( 5 )  + "( " + cValToChar( PROCLINE( 5 ) ) + " )" + ;
                CRLF + PROCNAME( 6 )  + "( " + cValToChar( PROCLINE( 6 ) ) + " )" + ;
                CRLF + PROCNAME( 7 )  + "( " + cValToChar( PROCLINE( 7 ) )  )
   ENDIF
   RETURN oErr
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby karinha » Tue Dec 20, 2016 2:52 pm

Ó

Code: Select all  Expand view

//----------------------------------------------------------------------------//
FUNCTION CheckErr ()

  LOCAL nLoc, oError

  TRY
    nLoc := "error"/2
  CATCH oError
    msgInfo( oError:gencode )
    msgInfo( oError:SubSystem )
    msgInfo( oError:SubCode )
    msgInfo( oError:Operation )
    msgInfo( oError:Description )
    msgInfo( valToPrg( oError:Args ) )
    quit
  END

RETURN (nLoc)
 
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby MarioG » Thu Dec 22, 2016 1:16 pm

karinha
Por favor, compila este sample con xHarbour y verifica: oError:Procline
Luego compila con xharbour y verifica ProcLine()
Los valores de linea son distintos (o estoy haciendo algo mal?)
gracias

Code: Select all  Expand view
#include "FiveWin.ch"

Procedure Main()
local oError, ;
      x, ;
      nTotal

   TRY
      nTotal:= x * 100

   CATCH oError
#ifdef __XHARBOUR__
      Alert( "Error nro: " + cValToChar( oError:GenCode) + CRLF + ;
             "SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
             "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Mensaje: " + oError:Description + CRLF + ;
             "Linea: " +cValToChar( oError:procLine ),,"Atención" )

#else // __HARBOUR__
      Alert( "Error nro: " + cValToChar( oError:GenCode) + CRLF + ;
             "SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
             "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Mensaje: " + oError:Description + CRLF + ;
             "Linea: " +cValToChar( ProcLine() ),,"Atención" )
#endif
   END

// Fin
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby karinha » Mon Jan 02, 2017 1:34 pm

Holá, acá funciona bién com harbour y xharbour con FWHX16.10

Code: Select all  Expand view

#include "FiveWin.ch"
#include "error.ch"

Procedure Main()

   local oError, x, nTotal

   TRY

      nTotal := x * 100

   CATCH oError

   #ifdef __XHARBOUR__

      Alert( "Error nro: " + cValToChar( oError:GenCode) + CRLF + ;
             "SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
             "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Mensaje: " + oError:Description + CRLF + ;
             "Linea: " +cValToChar( oError:procLine ),,"Atención" )

   #else // __HARBOUR__

      Alert( "Error nro: " + cValToChar( oError:GenCode) + CRLF + ;
             "SubC: " + cValToChar( oError:SubCode ) + CRLF + "OSCode: " + cValToChar( oError:OsCode ) + CRLF + ;
             "SubSystem: " + cValToChar( oError:SubSystem ) + CRLF + "Mensaje: " + oError:Description + CRLF + ;
             "Linea: " +cValToChar( ProcLine() ),,"Atención" )

   #endif

   END

Return Nil

// Fin
 


Saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby MarioG » Mon Jan 02, 2017 1:58 pm

Karinha BOM 2017!!
muchas gracias por la ayuda!
Disculpa que insista:
Compilando con xharbour, oError:procLine devuelve el mismo numero de linea que compilando con harbour, ProcLine()?
(compilando com xHarbour, oError:procLine retorna o mesmo número da linha que a compilando com Harbour, ProcLine()?)
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby karinha » Mon Jan 02, 2017 2:12 pm

Gracias, un ótimo 2017 para ti también!

Con xHarbour:

Image

Saludos.
Last edited by karinha on Mon Jan 02, 2017 2:25 pm, edited 1 time in total.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby karinha » Mon Jan 02, 2017 2:14 pm

Con Harbour:

Image
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby MarioG » Mon Jan 02, 2017 3:14 pm

Karinha;
oError:procLine devuelve linea 10 (que es correcto). Mientras que ProcLine() devuelve linea 26, que NO es correcto

Que solución hay, si lo sabes, para Harbour?
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby karinha » Mon Jan 02, 2017 4:12 pm

Code: Select all  Expand view

#include "FiveWin.ch"
#include "error.ch"

FUNCTION Main()

   local oError, x, nTotal, nLoc

  TRY

    nLoc := "error" / 2

  CATCH oError  // Harbour and xHarbour retorna linea 26

   msgInfo( oError:gencode )

   msgInfo( oError:SubSystem )

   msgInfo( oError:SubCode )

   msgInfo( oError:Operation )

   msgInfo( oError:Description )

   msgInfo( valToPrg( oError:Args ) )

   MsgInfo( cValToChar( procLine() ),, "Atención" )

  END

RETURN NIL

// Fin
 


João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
 
Posts: 7804
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil

Re: :procLine - equivalente

Postby MarioG » Mon Jan 02, 2017 9:06 pm

Karinha;
Tu ejemplo
Indica error en Linea 26 y NO en Linea 10 (Se entiende?!)
O sea ProcLine() NO esta devolviendo correctamente la línea de error; sino la línea donde se llama a ProcLine()

Image
Resistencia - "Ciudad de las Esculturas"
Chaco - Argentina
User avatar
MarioG
 
Posts: 1380
Joined: Fri Oct 14, 2005 1:28 pm
Location: Resistencia - Chaco - AR

Re: :procLine - equivalente

Postby Antonio Linares » Tue Jan 03, 2017 11:08 am

se me ocurrió que podriamos "extender" la clase Error de Harbour para implementar el mensaje ProcLine()

#include "c:\harbour\contrib\xhb\xhbcls.ch"

...

EXTEND CLASS Error WITH MESSAGE ProcLine INLINE ProcLine()

pero la clase Error de Harbour no lo permite. De hecho no permite crear una clase derivada de ella

no se aún cual es la razón de esta limitación
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: :procLine - equivalente

Postby Antonio Linares » Tue Jan 03, 2017 11:59 am

El errorsys de FWH utiliza ProcLine() y funciona correctamente con Harbour y xHarbour

Puedes probar el ejemplo samples\testerro.prg usando buildh.bat y buildx.bat y verás
que ambos reportan el mismo número de línea
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 42079
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Next

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: Google [Bot] and 23 guests