cMessage = EVAL(cFunction)
>Hello everybody>LPARAMETERS cAction as string, cXML as String, cFileIni as String > >LOCAL I as Integer, cScript as String, cProcedure as String, cFunction as String,; > cMessage as String > >TRY > This.KDPScripts = ADDBS(This.ReadFileIni(cFileIni,"DIRECTORY","SCRIPTS")) > This.KDPSysDB = ADDBS(This.ReadFileIni(cFileIni,"DIRECTORY","SYSDB")) > This.KDPStyles = this.ReadFileIni(cFileIni,"DIRECTORY","Styles") > cMessage = '' > FOR I = 1 TO GETWORDCOUNT(cAction,",") > cScript = LOWER(GETWORDNUM(cAction,I)) > cProcedure = LOWER(ALLTRIM(STREXTRACT(cScript,"","("))) > cFunction = ALLTRIM(STREXTRACT(cScript,"(",")")) + [(cXML,cFileIni)] > this.lError = .F. > cMessage = This.Scriptcontrols(cProcedure) > IF NOT EMPTY(cMessage) > RETURN cMessage > ENDIF > IF NOT cProcedure + ".fxp" $ LOWER(SET("Procedure")) > SET PROCEDURE TO (This.kdpscripts + cProcedure + ".fxp") ADDITIVE > ENDIF > cMessage = &cFunction && called function > ENDFOR >CATCH TO oError > this.lError = .T. > cMessage = THIS.Error(oError.ErrorNo, oError.Procedure, oError.LineNo) >ENDTRY >IF EMPTY(cMessage) OR VARTYPE(cMessage) = "L" > RETURN "" >ELSE > RETURN cMessage >ENDIF >>For the same object, the code for the “Error” method is