Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Suma en un Edit (https://www.clubdelphi.com/foros/showthread.php?t=65054)

lily21 17-11-2009 21:05:26

Suma en un Edit
 
hola, Como puedo lograr que cuando el usuario ponga por ejemplo en un edit :
2+3+4 y al salir del edit , se ponga la suma de este en el mismo , que en este caso seria 9.algo asi como funciona el excel que tu pones en una casilla =2+3+4 das enter y se pone 9 en este caso.

gracias

coso 17-11-2009 23:14:39

Hola,
deberas crear un parser. Te pongo un ejemplo:

Código Delphi [-]
function parsestring(s : string) : string;
var 
     v1,v2 : string;
     vv1,vv2 : integer;
     n : integer;
begin
     n := Pos('+',s);
     
     if n <> 0 then
     begin
           v1 := Copy(s,0,n-1);
           v2 := Copy(s,n+1,length(s) - n);

           try    vv1 := strtoint(v1);
           except vv1 := 0;
           end;

           try    vv2 := strtoint(v2);
           except  vv2 := strtoint(parsestring(trim(v2)));
           end;

           s := inttostr(vv1 + vv2);
     end;

     result := s;
end;

y en el onkeydown del edit, o en el OnExit

Código Delphi [-]
edit1.text := parsestring(edit1.text);

es solo un ejemplo con la suma. Con mas operaciones te sera muy laborioso. Un saludo.

look 17-11-2009 23:18:49

Cita:

Empezado por lily21 (Mensaje 346816)
hola, Como puedo lograr que cuando el usuario ponga por ejemplo en un edit :
2+3+4 y al salir del edit , se ponga la suma de este en el mismo , que en este caso seria 9.algo asi como funciona el excel que tu pones en una casilla =2+3+4 das enter y se pone 9 en este caso.

gracias

en esta pagina hay un componente que hace lo que tu pides , pero es de pago

look 17-11-2009 23:25:49

tambien aqui

look 17-11-2009 23:28:20

Cita:

Empezado por coso (Mensaje 346835)
Hola,
deberas crear un parser. Te pongo un ejemplo:

Código Delphi [-]function parsestring(s : string) : string; var v1,v2 : string; vv1,vv2 : integer; n : integer; begin n := Pos('+',s); if n <> 0 then begin v1 := Copy(s,0,n-1); v2 := Copy(s,n+1,length(s) - n); try vv1 := strtoint(v1); except vv1 := 0; end; try vv2 := strtoint(v2); except vv2 := strtoint(parsestring(trim(v2))); end; s := inttostr(vv1 + vv2); end; result := s; end;


y en el onkeydown del edit, o en el OnExit

Código Delphi [-]edit1.text := parsestring(edit1.text);


es solo un ejemplo con la suma. Con mas operaciones te sera muy laborioso. Un saludo.

nitido. saludos :D

lily21 18-11-2009 14:49:30

Suma en un edit
 
hola , muchas gracias por responder , pero esta funcion funciona perfectamente si solo pongo en el edit por ejemplo 2+3, pero si ya pongo 2+3+5+6 .. ya me da error .. solo me sirve para sumar dos numeros , me podrias ayudar con esto ?
muchas gracias nuevamente
saludos

coso 18-11-2009 18:28:13

La función va bien. Creo que te has confundido al transcribirla...vv2 tiene que ser inttostr(parsestring(...)), diferente que vv1. Si no es eso, fijate que sea exactamente la misma que la posteada. Un saludo.

DriverOp 11-01-2010 11:01:52

Aquí otro más: EvalExp


La franja horaria es GMT +2. Ahora son las 02:45:29.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi