Procesador de parametros de aplicacion, linea de comandos captura de parametros de ejecutable

31 views
Skip to first unread message

OMAR ROJAS

unread,
Jun 2, 2017, 10:36:46 AM6/2/17
to Comunidad de Visual Foxpro en Español
*//----------------------------------------------------------------------------
*//............................................................................
*//......Fecha:            02-06-2017.............................................
*//......Autor:            OMAR ROJAS..........
*//......Localidad:        Encarnación-Paraguay...................................
*//......Funcion:        Programa principal.....................................
*//......Compatib.:        Ha sido desarrollado y probado con VFP8.0 p/WINDOWS....
*//............................................................................
*//----------------------------------------------------------------------------
LPARAMETERS _lcpar            &&myapp.exe "--par1 1 --par2 2 --par3 3"


*//
*//        ESTA SIMPLE CLASE PROCESA LOS PARAMETROS PASADOS AL PROGRAMA PRINCIPAL
*//        Y LOS GESTIONA DE FORMA SIMPLE
*//


*// EJEMPLO DE USO
*// CREAMOS EL OBJETO Y PASAMOS LINEA DE PARAMETROS
_pobj=CREATEOBJECT( 'OPARAM', _lcpar )
CLEAR
? "SE CAPTURO "+TRANSFORM(_pobj.LEN,'99')+" PARAMETROS",CHR(13)
? "COMPROBANDO SI EXISTE CLAVE par2, EXISTE?",_pobj.ISKEY('par2'),CHR(13)
? "OBTENIENDO VALOR DE CLAVE par2, valor:",_pobj.GETVALUE('par2'),CHR(13)
? "STRING DE PARAMETROS CAPTURADOS",_pobj.PAR,CHR(13)



*//
*//        CLASE QUE PROCESA LOS PARAMETROS PASADOS AL PROGRAMA PRINCIPAL
*//
DEFINE CLASS OPARAM AS CUSTOM
    DIMENSION MAT[1,1]        &&MATRIZ KEY->VALUE EJ: par1->1
    LEN            =0            &&cantidad de parametros
    PAR            =''            &&string de parametros "--par1 1 --par2 2 --par3 3"
    *////////////////
    PROCEDURE INIT
    *////////////////
        *//
        *//    TODO:    extrae claves del parametro, OBJ EMPTY
        *//
        LPARAMETERS _str
        LOCAL _lpar,_lin,_txt,_tag,_val,_lin
       
        IF EMPTY(_str)
            RETURN
        ENDIF
        THIS.PAR=_str
       
        _lpar    =ALINES( _mpar, STRTRAN( _str, '--', CHR(13) ) )
        _lin    =0
        FOR _gir=2 TO _lpar
            _txt=ALLTRIM(_mpar[_gir])
            _tag=ALLTRIM( SUBSTR( _txt, 1, AT(' ',_txt) ) )
            _val=ALLTRIM( SUBSTR( _txt, AT(' ',_txt)+1 ) )
            _lin=_lin+1
            DIMENSION THIS.MAT[_lin,2]
            THIS.MAT[_lin,1]=_tag
            THIS.MAT[_lin,2]=_val
        ENDFOR
        THIS.LEN=_lin
        RETURN
    ENDPROC
    *///////////////////////////
    FUNCTION ISKEY(_key)
    */////////////////////////////
        *//
        *//    TODO:    AVERIGUA SI UNA CLAVE EXISTE
        *//
        RETURN IIF( ASCAN(THIS.MAT,_key,1,0,0,1)>0, .T., .F. )
    ENDFUNC
    *///////////////////////////
    FUNCTION GETVALUE(_key)
    *///////////////////////////
        *//
        *//    TODO:    DEVUELVE EL VALOR DE UNA CLAVE COMO STRING
        *//
        IF !THIS.ISKEY(_key)
            RETURN ''
        ENDIF
        RETURN THIS.MAT[ ASUBSCRIPT(THIS.MAT,ASCAN(THIS.MAT,_key,1,0,0,1),1), 2 ]
    ENDFUNC
ENDDEFINE

Reply all
Reply to author
Forward
0 new messages