🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: es.comp.os.linux.programacion
Article #972

UDF's para Firebird con FreePascal/Lazarus

#972
From: armadillo
Date: Thu, 13 Jul 2006 15:48
67 lines
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-mail

Show 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