Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   UDF y parámetros (https://www.clubdelphi.com/foros/showthread.php?t=69908)

ARPE 17-09-2010 14:26:37

UDF y parámetros
 
Hola a tod@s, necesito una aclaración, por más que busco no encuentro.

Código SQL [-]
DECLARE EXTERNAL FUNCTION Prueba
    INTEGER,
    CSTRING(50)
RETURNS PARAMETER 2
ENTRY_POINT 'Prueba' MODULE_NAME 'UDFs.dll';

con la declaración de udf anterior que retorna una cadena... ¿se necesita reservar memoria en la función o se encarga Firebird?, es decir

esto:
Código Delphi [-]
function Prueba(Var numero: integer): PChar;
Var
  Cadena: String;
  L: integer;
Begin
  Cadena := IntToStr(Numero);
  L := Length(Cadena);
  Result := ib_util_malloc(L + 1);
  Result := StrPLCopy(Result, Cadena, L);
end;

o esto:

Código Delphi [-]
function Prueba(Var numero: integer): PChar;
Var
  Cadena: String;
  L: integer;
Begin
  Cadena := IntToStr(Numero);
  L := Length(Cadena);
  Result := StrPLCopy(Result, Cadena, L);
end;

Result := ib_util_malloc(L + 1); ¿es necesaria esta línea?
creo que no, pero...

saludos y gracias de antemano

rastafarey 07-10-2010 06:44:07

Resp
 
Hasta donde recuerdo tu debes reservar la memoria y firebird se encarga de liberarla.

Y las funciones deben tenr la clausula de importacion cdecl o stdcall

y deben ser declaras con FREE_IT para que firebird libere la memoria asignada.


La franja horaria es GMT +2. Ahora son las 11:30:57.

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