Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Macros de clipper (https://www.clubdelphi.com/foros/showthread.php?t=93181)

ArtPortEsp 08-06-2018 03:28:01

Macros de clipper
 
Hola...

los mas jovenes diran, "que diablos es eso?"; bueno les explico....

en aquellos lejanos dias de la programacion en DOS existia un lenguaje de programacion llamado Clipper que manejaba un tipo especial de dato llamado MACRO, en el podia uno guardar ciertas "formulas" que se resolvian al momento de ejecucion "invocando" el operador del macro.

Por ejemplo:

podia uno guardar algo como ((campo1*campo2)/campo3)*factor en un campo en una tabla de datos (ejemplo macro1) y en una parte de la ejecucion del programa, podias hacer algo como:

var = &macro1

Alguno de ustedes estimados profesionales de Delphi, saben si es posible hacer algo similar?

Saludos

ElKurgan 08-06-2018 08:12:52

Mira los enlaces del final de la página. En concreto, en este se trató este mismo tema

Saludos

manelb 08-06-2018 17:32:30

¿Que sistema de reportes empleas??

Lo digo porque yo utilizo quickreport y para lo que tu comentas utilizo una clase que lleva incorporada el componente qrexpression, y sirve precisamente para esto.

Puede que sea un poco rebuscado, pero durante muchos años lo he utilizado en muchas situaciones y me ha dado un magnifico resultado.

Si crees que puede ser de interés lo busco y intento explicarlo.

Saludos

duilioisola 08-06-2018 21:03:01

Si utilizas bases de datos, puedes generar campos calculados en vistas o directamente en el SQL

Código SQL [-]
SELECT ARTICULO, UNIDADES, PRECIO, (UNIDADES * PRECIO) AS TOTAL
FROM DETALLE_PEDIDO
WHERE
NRO_PEDIDO = :NRO_PEDIDO

Por otro lado puedes crear campos calculados en un Dataset.
Luego, en el evento OnGetText del campo puedes poner cualquier cosa que puedas hacer con Delphi.
Código Delphi [-]
procedure DataModule.DetallePedidosARTICULOGetText(...Text : string...);
begin
   Text := UpperCase(DetallePedidosARTICULO.AsString);
end;

El Dataset también tiene un evento OnCalcFields en el que puedes dar valores a los campos calculados
Código Delphi [-]
procedure DataModule.DetallePedidosCalcFields(...);
begin
   DetallePedidosCOMISION.AsFloat := DetallePedidosPRECIO.AsFloat * 20 /100;
   DetallePedidosGANANCIA.AsFloat := DetallePedidosPRECIO.AsFloat - DetallePedidosPRECIO_COSTE.AsFloat;
end;

mamcx 08-06-2018 21:17:47

Cita:

Empezado por ArtPortEsp (Mensaje 526934)
Por ejemplo:

podia uno guardar algo como ((campo1*campo2)/campo3)*factor en un campo en una tabla de datos (ejemplo macro1) y en una parte de la ejecucion del programa, podias hacer algo como:

var = &macro1

Definitivamente.

Tu "macro"* es un micro compilador y/o interprete. Asi que un evaluador de formulas o componente de script como

https://www.remobjects.com/ps.aspx

es lo que buscas.

Tambien se puede embeder un lenguaje como Lua, Python (que es lo que he usado) o cualquier otro que este en modo interprete.

O hacer el tuyo propio, pero es mas trabajo :)

https://ruslanspivak.com/lsbasi-part1/


--

P.D*: Las "macros" en lenguajes de programacion se refiere mas a la habilidad de hacer meta-programacion (usar el lenguaje para programar el lenguaje), o en otras palabras, para en tiempo de compilacion/ejecucion manipular el "Abstract Syntax Tree" para generar codigo al vuelo, y no como lo que se expone aqui, que es interpretacion.

Puede parecerse a los pre-procesadores como en C, pero eso son unos adefesios diferentes...


La franja horaria es GMT +2. Ahora son las 00:48:39.

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