Academia de novatos:
[UDF Serie 4]: Pasar y devolver datos a una UDF escrita en Delphi
Traducido por Warton.
Autor: chris levesque, tina grubbe, brett bandy
-------------------------------------------------- ----------------------------------
[Declaración del traductor]:
He traducido varios artículos sobre cómo escribir UDF antes. Aunque es posible que algunos amigos hayan recibido un poco de ayuda de ellos, es posible que no estén familiarizados con UDF.
Todavía hay algunos problemas de comprensión. Hoy traduciré dos artículos más, ambos de mer system (http://www.mers.com).
Sí, los amigos interesados pueden ver el texto original.
[argumento]:
Cuando la biblioteca de enlaces dinámicos no toma precauciones especiales para los valores de datos protegidos, nuestra UDF tiene resultados de datos con valores de parámetros o valores de retorno.
Puede ser una excepción protegida o un resultado de error.
[Solución]:
Cada valor de fecha se almacena en dos tipos de enteros de 32 bits: un entero con signo que representa la fecha y un
Un entero de tiempo sin signo. Utilice código Delphi para definir esta estructura (isc_quad) y el puntero a la estructura (pisc_quad):
tipo
{registro de fecha/hora interbase}
isc_quad = registro
isc_quad_high: entero; // fecha
isc_quad_low: cardinal // hora
fin;
pisc_quad = ^isc_quad;
Para proteger el valor de retorno, declare una variable isc_quad segura para subprocesos fuera de la definición de la función para que contenga el valor de retorno (si el valor de retorno
es un dato de tipo fecha).
subproceso
tempquad: isc_quad;
Luego escriba su función para que el resultado apunte a la variable del hilo.
//definir función
// esta función agrega una cantidad de días a una fecha existente.
función dayadd( var días: entero; ibdate pisc_quad): pisc_quad; exportar;
comenzar
tempquad.isc_quad_high := ibdate^.isc_quad_high + días;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
resultado := @tempquad;
fin;
El autor proviene de: mersystems inc.. http://www.mers.com