Yes, but with

#define CRLF Chr(13) + Chr(10)
#include "error.ch"

that i miss in posted message, GPF is produced too

as you can test.


Best regards,
Miguel Angel Marchuet

Ron Pinkas escribió:
> Miguel,
> 
> If you tried to compile and link your sample code, you would have 
> noticed that the code misses, at least:
> 
> -------------------------------------------------
>    #define CRLF Chr(13) + Chr(10)
> 
>    #include "error.ch"
> -------------------------------------------------
> 
> and it also appear to have other omissions. In the future please try to 
> always make sure to post actual tested sample. I'm sorry to repeat 
> myself, but I believe at least between developers we should avoid 
> wasting time. Also I believe that an invalid sample lowers the other 
> developer motivation and overall alertness.
> 
> IAE, please try again after, 2008-05-07 09:30 UTC-0430 Ron Pinkas 
> <ron/at/xharbour.com>, and if not fix post your actual sample.
> 
> Ron
> 
> On May 7, 2008, at 2:37 AM, Miguel Angel Marchuet wrote:
> 
>> SORRY this is the code to reproduce GPF:
>>
>>
>> PROCEDURE Main()
>>
>> #ifdef __XHARBOUR__
>>     REQUEST HB_GT_WIN
>> #endif
>>
>>     ? Null * "A"
>>
>> RETURN
>>
>> //----------------------------------------//
>>
>> PROCEDURE ErrorSys()
>>      ErrorBlock( { | e | ErrorDialog( e ) } )
>> RETURN
>>
>> //----------------------------------------//
>>
>> proc ErrorLink()
>> return
>>
>> //----------------------------------------//
>>
>> PROCEDURE ErrorDialog( e )
>>     LOCAL cErrorLog := '', n, j
>>
>>     // Cambiamos manejador de error para evitar llamadas recursivas. 
>> No usamos TRY porque en ocasiones deja la
>>     //   pantalla de error bloqueada y sin terminar de pintar 
>> probablemente debido a que el dibujado del dialogo
>>     //   de error, provoca un anidamiento de errores.
>>     ErrorBlock( {|e| Alert( ErrorMessage( e ) + " from Errorsys, 
>> line:" + Str( ProcLine( 1 ), 3 ) ), __Quit() } )
>>
>>     n := 2    // we don't disscard any info again !
>>     while ( n < 74 )
>>        FOR j = 1 to LocalCount( n )
>>
>>           cErrorLog += "     Local " + Str( j, 3 ) + ":    " + ;
>>                        ValType( GetLocal( n, j ) ) + ;
>>                        "    " + cGetInfo( GetLocal( n, j ) ) + CRLF
>>        NEXT
>>     ENDDO
>>
>>     ? "Don't arrive, for GPF"
>>
>> RETURN
>>
>> //----------------------------------------------------------------------------//
>>  
>>
>>
>> static function ErrorMessage( e )
>>
>>     // start error message
>>     local cMessage := if( empty( e:OsCode ), ;
>>                           if( e:severity > ES_WARNING, "Error ", 
>> "Atención " ),;
>>                           "(DOS Error " + AllTrim(Str(e:osCode)) + ") " )
>>
>>     // add subsystem name if available
>>     cMessage += if( ValType( e:SubSystem ) == "C",;
>>                     e:SubSystem()                ,;
>>                     "???" )
>>
>>     // add subsystem's error code if available
>>     cMessage += if( ValType( e:SubCode ) == "N",;
>>                     "/" + AllTrim( Str( e:SubCode ) )   ,;
>>                     "/???" )
>>     // add error description if available
>>     if ( ValType( e:Description ) == "C" )
>>        cMessage += "  " + e:Description
>>     end
>>
>>     // add either filename or operation
>>     cMessage += if( ! Empty( e:FileName ),;
>>                     ": " + e:FileName   ,;
>>                     if( !Empty( e:Operation ),;
>>                         ": " + e:Operation   ,;
>>                         "" ) )
>>
>> return cMessage
>>
>> //----------------------------------------------------------------------------//
>>  
>>
>> // returns extended info for a certain variable type
>>
>> static function cGetInfo( uVal )
>>
>>      local cType := ValType( uVal )
>>
>>      do case
>>         case cType == "C"
>>              return '"' + cValToChar( uVal ) + '"'
>>
>>         case cType == "O"
>>              return "Class: " + uVal:ClassName()
>>
>>         case cType == "A"
>>              return "Len: " + Str( Len( uVal ), 4 )
>>
>>         otherwise
>>              return cValToChar( uVal )
>>      endcase
>>
>> return nil
>>
>> //----------------------------------------//
>>
>> function GetLocal( nProcLevel, nLocal )
>>
>> return HB_DBG_VMVARLGET( nProcLevel + 1, ParamCount( nProcLevel + 1 ) 
>> + nLocal )
>>
>> //----------------------------------------//
>>
>> function LocalCount( nProcLevel )
>>
>> return HB_DBG_VMSTKLCOUNT( nProcLevel + 1 ) - ParamCount( nProcLevel + 
>> 1 )
>>
>> //----------------------------------------//
>>
>> function cValToChar( uVal )
>>
>>     local cType := ValType( uVal )
>>
>>     do case
>>        case cType == "C" .or. cType == "M"
>>             return uVal
>>
>>        case cType == "D"
>>             return DToC( uVal )
>>
>>        case cType == "L"
>>             return If( uVal, ".T.", ".F." )
>>
>>        case cType == "N"
>>             return AllTrim( Str( uVal ) )
>>
>>        case cType == "B"
>>             return "{|| ... }"
>>
>>        case cType == "A"
>>             return "{ ... }"
>>
>>        case cType == "O"
>>             return "Object"
>>
>>        otherwise
>>             return ""
>>     endcase
>>
>> return nil
>>
>> function ParamCount( nProcLevel )
>>
>> return Len( HB_DBG_VMPARLLIST( nProcLevel + 1 ) )
>>
>> //----------------------------------------------------------------------------//
>>  
>>
>>
>> -------------------------------------------------------------------------
>> This SF.net email is sponsored by the 2008 JavaOne(SM) Conference
>> Don't miss this year's exciting event. There's still time to save $100.
>> Use priority code J8TL2D2.
>> http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
>>  
>>
>> _______________________________________________
>> xHarbour-developers mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/xharbour-developers
>>
> 
> 


-------------------------------------------------------------------------
This SF.net email is sponsored by the 2008 JavaOne(SM) Conference 
Don't miss this year's exciting event. There's still time to save $100. 
Use priority code J8TL2D2. 
http://ad.doubleclick.net/clk;198757673;13503038;p?http://java.sun.com/javaone
_______________________________________________
xHarbour-developers mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/xharbour-developers

Reply via email to