Dar capacidades de scripting a tu aplicacion

Hoy os presento el componente freeware Artformula que permite dar capacidades de scripting a una aplicación Delphi , para que un usuario pueda escribir y ejecutar código dentro de nuestro programa. En el programa demo asimila los scripts a macros y los utiliza para aplicarlos en un tRichEdit haciéndonos ver lo fácil que es utilizarlos en caso de que tengamos que programar un editor de textos.

Ejemplo de scripts:
1) Abrir un fichero y mostrar su contenido:

begin
print('This is a TArtFormula Demo');
print('==========================');
print('');
var 'f' end;
$f := file.new;
file($f).name := 'info';
file($f).open('read');
while not file($f).eof do
print(file($f).readln);
wend;
file.freeall;
end

2) Resolver una ecuación lineal utilizando matrices:

begin
var "n","i","j","k","d" end;
$n := input("Input dimension","Dimension of matrix:",3);

for $i:=1; $i <= $n; $i++ do
for $j:=1; $j <= $n; $j++ do
var "a"+$i+"_"+$j end;
$a[$i,$j] := input("Input element","a["+$i+","+$j+"] = ",if $i = $j ; 1 ; 0 end);
next;
next;

for $i:=1; $i <= $n; $i++ do
var "b"+$i, "x"+$i end;
$b[$i] := input("Input element","b["+$i+"] = ",1);
next;

for $i:=1; $i < $n; $i++ do
for $k:=$i+1; $k <= $n; $k++ do
$d:=$a[$k,$i]/$a[$i,$i];
for $j:=$i+1; $j <= $n; $j++;
$a[$k,$j]:=$a[$k,$j]-$a[$i,$j]*$d;
end;
$b[$k]:=$b[$k]-$b[$i]*$d;
next;
next;

for $i:=$n; $i >= 1; $i-- do
for $j:=$i+1; $j <= $n; $j++;
$b[$i]:=$b[$i]-$a[$i,$j]*$x[$j];
end;
$x[$i]:=$b[$i]/$a[$i,$i];
next;
print("Result:");
for $i:=1; $i <= $n; $i++; print("x["+$i+"] = "+$x[$i]); end;

end


El lenguaje de script tiene las siguientes características:
-Permite definir variables
-Tiene comandos de asignación
-Operadores de incremento y decremento
-Función Return
-Utiliza:
BEGIN...END
Sentencias IF
Bucles WHILE, UNTIL y LOOP
funciones de interface como: msg('text','caption',props), input('caption', 'text', defvalue)


El componente incorpora la posibilidad de evaluación de expresiones y el cálculo de derivadas con respecto a "x" o "y" de una función.
Las funciones que permite son las siguientes: (tomado de la ayuda del programa)

Arithmetic operation:

x + y, x - y, x * y, x / y, x % y (Mod), x ^ y (power), x\ y (Div)

Logical operation (true=1, false=0):
x > y, x < y, x >= y, x <= y, x = y, x <> y, ! x (not), x & y (and), x | y (or), x xor y

Bitwise operations:
x && y (band), x || y (bor), !!x (bnot), x bxor y, x >> y (shr), x << y (shl)

Predefined constants:
Pi = 3.1415926535897932385
True = 1
False = 0

Functions:

sin, cos, tan, sinh, cosh, tanh, asin, acos, atan, asinh, acosh, atanh, sqrt, exp, log, lg (log base 10), int (integer part of a number), frac (fractional part of a number), abs, sign, rnd, randomize,max(x,y...), min(x,y,...), count(x,y,...), sum(x,y,...), sumofsquares(x,y,...), avg(x,y,...), variance(x,y,...), variancep(x,y,...), stddev(x,y,...), stddevp(x,y,...) , iff(cond,x,y) (if cond = true then result = x else result = y), isnumber(x), chr(x), length(s), trim(s), trimleft(s), trimright(s) lowercase(s), uppercase(s), midstr(s,x,y), leftstr(s,x), rightstr(s,x), pos(s,t), code(s), format(s,x), formatf(s,x), stringofchar(c,n), concat(s1,s2,...), date(s), now, formatdate(s,d), year(d), month(d), day(d), hour(d), minute(d), second(d), millisecond(d), isleapyear(n), dayofweek(d), encodedate(y,m,d)


Autor:

Artem V. Parlyuk, e-mail:artsoft@nm.ru, http://artsoft.nm.ru

Descargar codigo



















No hay comentarios:

Publicar un comentario

Simulación del movimiento de los electrones en un campo electrico

Espectacular simulación realizada con OpenGL del movimiento de los electrones cuando atraviesan un campo eléctrico. Como muestra la image...