Article View: es.comp.os.linux.programacion
Article #972UDF's para Firebird con FreePascal/Lazarus
From: armadillo
Date: Thu, 13 Jul 2006 15:48
Date: Thu, 13 Jul 2006 15:48
67 lines
3012 bytes
3012 bytes
Colegas del Foro,
Estoy empezando a hacer mis primeros pinitos programando librerias, y
las estoy haciendo en Lazarus/FreePascal, ya que yo utilizo Firebird
con Linux, y Lazarus me da la ventaja de poder compilar en varios SO.
Bien, no he tenido mucha suerte con el tema, asi que pregunto a ver si
alguien podría darme una mano.
Buscando información en Internet, cosa que mucho no encontré
(en
castellano por supuesto), he llegado a crear esto:
library MisUDFs;
{$mode objfpc}{$H+}
uses
Classes;
function Duplicar(var valor:real):real;export;
begin
result:=valor*2;
end;
exports
Duplicar name 'Duplicar';
begin
end.
Como ven es una simple libreria con una sola funcion llamada Duplicar
que simplemente toma un valor y lo multimplica por 2 y listo.
Luego publique esta UDF en Firebird 1.5 (la que uso), de la siguiente
manera:
DECLARE EXTERNAL FUNCTION DOBLE
DOUBLE PRECISION
RETURNS DOUBLE PRECISION BY VALUE
ENTRY_POINT 'Duplicar' MODULE_NAME 'libMisUDFs';
Hasta aqui todo perfecto, ningun error, luego para probar la UDF en
Firebird, ejecute la siguiente sentencia:
SELECT
precio,
doble(precio)
FROM ventaDET
pero el resultado no es el deseado, lo que sale es lo siguiente:
PRECIO DOBLE
------ -----
698.940 0.000
412.790 0.000
....... .....
123.010 0.000
Como ven en la columna DOBLE siempre obtengo el resultado 0.000.
Puede ser que el problema este en los tipos de datos, cosa que yo
realmente no tengo claro, si en este caso en FreePascal utilizo un
dato de tipo real, que tipo de dato debería utilizar en FireBird?
Disculpen si este no es la lista adecuada para hacer esa consulta,
pero se que hay gente muy capacitada en la lista que utiliza este
tipo de herramientas.
Desde ya muchas gracias
Technical Details
Message-ID:
<1152805716.942589.268620@p79g2000cwp.googlegroups.com>Path:
arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!p79g2000cwp.googlegroups.com!not-for-mailShow Full Headers
Complete Article Headers
X-Google-Thread: f86c8,4a99b8261d3d6f2d,start X-Google-Attributes: gidf86c8,public X-Google-Language: SPANISH,ASCII Path: arc1-ca.pugleaf.net!g2news2.google.com!postnews.google.com!p79g2000cwp.googlegroups.com!not-for-mail From: "armadillo" <armadillo2003@yahoo.es> Newsgroups: es.comp.os.linux.programacion Subject: UDF's para Firebird con FreePascal/Lazarus Date: 13 Jul 2006 08:48:37 -0700 Organization: http://groups.google.com Lines: 68 Message-ID: <1152805716.942589.268620@p79g2000cwp.googlegroups.com> NNTP-Posting-Host: 84.121.32.120 Mime-Version: 1.0 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: quoted-printable X-Trace: posting.google.com 1152805722 8401 127.0.0.1 (13 Jul 2006 15:48:42 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Thu, 13 Jul 2006 15:48:42 +0000 (UTC) User-Agent: G2/0.2 X-HTTP-UserAgent: Mozilla/5.0 (Windows; U; Windows NT 5.0; es-ES; rv:1.8.0.4) Gecko/20060508 Firefox/1.5.0.4,gzip(gfe),gzip(gfe) Complaints-To: groups-abuse@google.com Injection-Info: p79g2000cwp.googlegroups.com; posting-host=84.121.32.120; posting-account=q4za5g0AAACfAFF1sCZNnudPDUelvae8