Página 1 de 1

Ejecutar funciones que est

Publicado: Mar Ago 09, 2011 6:18 am
por Carlos Ortiz
Básicamente tengo una serie de funciones que hacen cálculos y otras cosas y
las tengo fuera del exe (están en archivos txt), vi por ahí que se puede
armar unos scripts para invocarlas pero no me funciona, o al menos yo no he
podido.
//-
Func PruebaFuncionExterna
//-
priv hHrb, hFunc
hHrb := __hrbLoad( MemoRead("MiFuncion.txt") ) // Carga el
contenido del txt
hFunc:= __hrbGetFu( hHrb, "MiFuncion" ) // Carga
una función desde archivo
__hrbDoFu( hFunc )
/// Ejecuta la función recientemente cargada
Return .t.
//-
FUNCTION MiFuncion( n)
//-
n := n + 5
IF n%5=0
....
ELSE
....
ENDIF
// Obviamente las fórmulas de cálculo son mas complejas que esto
RETURN 10 * n
La idea con estos TXT es poder realizar operaciones o acciones sin tener que
estar compilando a cada rato.
Por mencionar otra de las aplicaciones que le daría es para un sistema de
sueldos y jornales cuyas formulas de cálculo son muchas y varían
sustancialmente entre convenios laborales.
Muchas gracias.

Ejecutar funciones que est

Publicado: Mar Ago 09, 2011 8:47 am
por zeasoftware
puedes usar el Eval()
ejemplo
cFuncion := "miFuncion(n)"
Eval( "{|n|" + cFuncion + " }")
Solo tendrí­as que controlar los parámetros que quieras usar. es solo algo ejemplificado para que inicies, yo tengo los formatos de impresión de mi sistema, de forma externa, pero pues ya algo complejo y uso varias clases hechas para este propósito, uso algo como esto:
//Cliente
Cuadro 40 Y 445 Ancho 1243 Alto 230 Linea 2
FuenteAlto 9
Ajusta 55
Estilo "Negrita"
@ 1490 Escribe "Serie y Folio:" Ancho 80 Alinear 6
BrincaLineas 1.3
@ 1845 Escribe <FechaHora.Emision> Ancho 80 Alinear 6 Formato "@F dd - mmm - yyyyy"

ya lo he venido manejando desde clipper.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Carlos Ortiz" escribió en el mensaje de noticias:[email=4e40b61c@svctag-j7w3v3j....]4e40b61c@svctag-j7w3v3j....[/email]
Básicamente tengo una serie de funciones que hacen cálculos y otras cosas y
las tengo fuera del exe (están en archivos txt), vi por ahí­ que se puede
armar unos scripts para invocarlas pero no me funciona, o al menos yo no he
podido.
//-
Func PruebaFuncionExterna
//-
priv hHrb, hFunc
hHrb := __hrbLoad( MemoRead("MiFuncion.txt") ) // Carga el
contenido del txt
hFunc:= __hrbGetFu( hHrb, "MiFuncion" ) // Carga
una función desde archivo
__hrbDoFu( hFunc )
/// Ejecuta la función recientemente cargada
Return .t.
//-
FUNCTION MiFuncion( n)
//-
n := n + 5
IF n%5=0
....
ELSE
....
ENDIF
// Obviamente las fórmulas de cálculo son mas complejas que esto
RETURN 10 * n
La idea con estos TXT es poder realizar operaciones o acciones sin tener que
estar compilando a cada rato.
Por mencionar otra de las aplicaciones que le darí­a es para un sistema de
sueldos y jornales cuyas formulas de cálculo son muchas y varí­an
sustancialmente entre convenios laborales.
Muchas gracias.
--

Ejecutar funciones que est

Publicado: Mié Ago 10, 2011 5:53 am
por Carlos Ortiz
Gracias Ramon pero el problema mas grande es que dichas funciones están en un txt fuera del exe, vi que xaScript de IOZ hace lo que ando buscando, de hecho xaScript debe ser mucho mas potente, lo mí­o es muy básico pero no le veo la vuelta.
Un saludo.
<zeasoftware@hotmail.com> escribió en el mensaje news:4e40d829$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
puedes usar el Eval()
ejemplo
cFuncion := "miFuncion(n)"
Eval( "{|n|" + cFuncion + " }")
Solo tendrí­as que controlar los parámetros que quieras usar. es solo algo ejemplificado para que inicies, yo tengo los formatos de impresión de mi sistema, de forma externa, pero pues ya algo complejo y uso varias clases hechas para este propósito, uso algo como esto:
//Cliente
Cuadro 40 Y 445 Ancho 1243 Alto 230 Linea 2
FuenteAlto 9
Ajusta 55
Estilo "Negrita"
@ 1490 Escribe "Serie y Folio:" Ancho 80 Alinear 6
BrincaLineas 1.3
@ 1845 Escribe <FechaHora.Emision> Ancho 80 Alinear 6 Formato "@F dd - mmm - yyyyy"

ya lo he venido manejando desde clipper.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Carlos Ortiz" escribió en el mensaje de noticias:[email=4e40b61c@svctag-j7w3v3j....]4e40b61c@svctag-j7w3v3j....[/email]
Básicamente tengo una serie de funciones que hacen cálculos y otras cosas y
las tengo fuera del exe (están en archivos txt), vi por ahí­ que se puede
armar unos scripts para invocarlas pero no me funciona, o al menos yo no he
podido.
//-
Func PruebaFuncionExterna
//-
priv hHrb, hFunc
hHrb := __hrbLoad( MemoRead("MiFuncion.txt") ) // Carga el
contenido del txt
hFunc:= __hrbGetFu( hHrb, "MiFuncion" ) // Carga
una función desde archivo
__hrbDoFu( hFunc )
/// Ejecuta la función recientemente cargada
Return .t.
//-
FUNCTION MiFuncion( n)
//-
n := n + 5
IF n%5=0
....
ELSE
....
ENDIF
// Obviamente las fórmulas de cálculo son mas complejas que esto
RETURN 10 * n
La idea con estos TXT es poder realizar operaciones o acciones sin tener que
estar compilando a cada rato.
Por mencionar otra de las aplicaciones que le darí­a es para un sistema de
sueldos y jornales cuyas formulas de cálculo son muchas y varí­an
sustancialmente entre convenios laborales.
Muchas gracias.
--

Ejecutar funciones que est

Publicado: Mié Ago 10, 2011 2:18 pm
por zeasoftware
Entonces tu quieres agregar cosas a tu programa, o agregar funciones nuevas...
Yo lo que hago es convertir esos comandos en funciones ya definidas que tengo en el programa y solo los uso a mis necesidades,
cComando := @ 10 Escribe <Cliente.Clave> Formato “!!!!!”
lo convierto a:
cComando := zDevOut( “oCliente.Clave”, “!!!!”, 10, .f. ,)
y este es el que ejecuto:
Eval( "{||" + cComando + " }")
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Carlos Ortiz" <cortizassist@hotmail.com> escribió en el mensaje de noticias:[email=4e4201c9@svctag-j7w3v3j....]4e4201c9@svctag-j7w3v3j....[/email]
Gracias Ramon pero el problema mas grande es que dichas funciones están en un txt fuera del exe, vi que xaScript de IOZ hace lo que ando buscando, de hecho xaScript debe ser mucho mas potente, lo mí­o es muy básico pero no le veo la vuelta.
Un saludo.
<zeasoftware@hotmail.com> escribió en el mensaje news:4e40d829$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
puedes usar el Eval()
ejemplo
cFuncion := "miFuncion(n)"
Eval( "{|n|" + cFuncion + " }")
Solo tendrí­as que controlar los parámetros que quieras usar. es solo algo ejemplificado para que inicies, yo tengo los formatos de impresión de mi sistema, de forma externa, pero pues ya algo complejo y uso varias clases hechas para este propósito, uso algo como esto:
//Cliente
Cuadro 40 Y 445 Ancho 1243 Alto 230 Linea 2
FuenteAlto 9
Ajusta 55
Estilo "Negrita"
@ 1490 Escribe "Serie y Folio:" Ancho 80 Alinear 6
BrincaLineas 1.3
@ 1845 Escribe <FechaHora.Emision> Ancho 80 Alinear 6 Formato "@F dd - mmm - yyyyy"

ya lo he venido manejando desde clipper.
Saludos.
Ramón Zea
Móvil.: 993-231.62.29
zeasoftware@hotmail.com
"Carlos Ortiz" escribió en el mensaje de noticias:[email=4e40b61c@svctag-j7w3v3j....]4e40b61c@svctag-j7w3v3j....[/email]
Básicamente tengo una serie de funciones que hacen cálculos y otras cosas y
las tengo fuera del exe (están en archivos txt), vi por ahí­ que se puede
armar unos scripts para invocarlas pero no me funciona, o al menos yo no he
podido.
//-
Func PruebaFuncionExterna
//-
priv hHrb, hFunc
hHrb := __hrbLoad( MemoRead("MiFuncion.txt") ) // Carga el
contenido del txt
hFunc:= __hrbGetFu( hHrb, "MiFuncion" ) // Carga
una función desde archivo
__hrbDoFu( hFunc )
/// Ejecuta la función recientemente cargada
Return .t.
//-
FUNCTION MiFuncion( n)
//-
n := n + 5
IF n%5=0
....
ELSE
....
ENDIF
// Obviamente las fórmulas de cálculo son mas complejas que esto
RETURN 10 * n
La idea con estos TXT es poder realizar operaciones o acciones sin tener que
estar compilando a cada rato.
Por mencionar otra de las aplicaciones que le darí­a es para un sistema de
sueldos y jornales cuyas formulas de cálculo son muchas y varí­an
sustancialmente entre convenios laborales.
Muchas gracias.
--