PROCEDURE conjugar
TRY
LOCAL LOEX AS EXCEPTION
lcString = ALLTRIM(INPUTBOX("Escriba un verbo","Conjugador de verbos regulares","",0,"",""))
IF !EMPTY(m.lcString)
MESSAGEBOX(get_conjugacion(m.lcString),0,"Conjuagación de "+m.lcString)
ENDIF
CATCH TO LOEX
LOEX.USERVALUE = PROGRAM()
Show_Error(LOEX)
FINALLY
ENDTRY
ENDPROC
PROCEDURE Get_conjugacion
LPARAMETERS tcVerbo
TRY
LOCAL LOEX AS EXCEPTION,;
LCMESSAGE,;
lcLista,;
lcConju,;
lcRaiz,;
lcDecine,;
lcPronombre
lcPronombre = "yo,tú,él,nosotros,vosotros,ellos"
lcLista = ""
DO WHILE .t.
IF VARTYPE(m.tcVerbo)#"C" OR EMPTY(m.tcVerbo)
EXIT
ENDIF
tcVerbo = ALLTRIM(LOWER(m.tcVerbo))
* Acá hay que ver si el verbo es irregular
IF Is_Irregular(m.tcVerbo)
EXIT
ENDIF
lcDecine = RIGHT(m.tcVerbo,2)
lcRaiz = LEFT(m.tcVerbo,LEN(m.tcVerbo)-2)
DO CASE
CASE m.lcDecine = "ar"
lcConju = "o,as,a,amos,áis,am"
CASE m.lcDecine = "er"
lcConju = "o,es,e,emos,éis,en"
CASE m.lcDecine = "ir"
lcConju = "o,es,e,imos,ís,en"
ENDCASE
FOR i = 1 TO GETWORDCOUNT(m.lcPronombre,CHR(44))
lcLista = m.lcLista ;
+ GETWORDNUM(m.lcPronombre,i,CHR(44))+" ";
+ m.lcRaiz ;
+ GETWORDNUM(m.lcConju,i,CHR(44));
+ CHR(13)+CHR(10)
NEXT
EXIT
ENDDO
CATCH TO LOEX
LOEX.USERVALUE = PROGRAM()
Show_Error(LOEX)
FINALLY
ENDTRY
RETURN m.lcLista
ENDPROC
PROCEDURE Is_Irregular
LPARAMETERS tcVerbo
* Debería haber una tabla,texto,etc
* con todos los verbos irregulares
ENDPROC
*----------------------------------------------------
PROCEDURE Show_Error
LPARAMETERS toExcep,tlNotShow,tcCaption
*-----------------------------------------------------
tcCaption=EVL(tcCaption,"Mensaje del Sistema")
SET HOURS TO 24
LOCAL lcMens
lcMens="Fecha "+TRANSFORM(DATETIME());
+ Chr(13)+"Mensaje: "+toExcep.message;
+ Chr(13)+"ErrorNo: "+TRANSFORM(toExcep.Errorno);
+ Chr(13)+"Llamada: "+toExcep.Uservalue
IF _vfp.StartMode=0
lcMens=lcMens+ Chr(13)+"Linea "+TRANSFORM(toExcep.lineno)
ENDIF
STRTOFILE(lcMens+ Chr(13)+REPLICATE("=",60)+ Chr(13),"Errors.log",1)
lcMens="Se ha producido un error:"+ Chr(13)+lcMens
IF !tlNotShow
MESSAGEBOX(m.lcMens,0,m.tcCaption)
ENDIF
ENDPROC