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;end2) 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