Académie des recrues :
[UDF Series 4] : transmission et renvoi de données vers une UDF écrite en Delphi
traduit par Warton
Auteurs : Chris Lévesque, Tina Grubbe, Brett Bandy
-------------------------------------------------- ----------------------------------
[Déclaration du traducteur] :
J'ai déjà traduit plusieurs articles sur l'écriture d'UDF. Bien que certains amis aient pu obtenir un peu d'aide de leur part, ils ne connaissent peut-être pas UDF.
Il y a encore quelques problèmes de compréhension. Aujourd'hui, je vais traduire deux autres articles, tous deux issus de mer system (http://www.mers.com)
Oui, les amis intéressés peuvent consulter le texte original.
[argument]:
Lorsque la bibliothèque de liens dynamiques ne prend pas de précautions particulières pour les valeurs de données protégées, notre UDF a des résultats de données avec des valeurs de paramètres ou des valeurs de retour.
Peut être dans une exception protégée ou un résultat d’erreur.
[Solution]:
Chaque valeur de date est stockée dans deux types d'entiers de 32 bits : un entier signé représentant la date et un
Un entier non signé du temps. Utilisez le code Delphi pour définir cette structure (isc_quad) et le pointeur vers la structure (pisc_quad) :
taper
{enregistrement de date/heure interbase}
isc_quad = enregistrement
isc_quad_high : entier; // date
isc_quad_low : cardinal ; // heure
fin;
pisc_quad = ^isc_quad;
Afin de protéger la valeur de retour, déclarez une variable isc_quad thread-safe en dehors de la définition de la fonction afin qu'elle contienne la valeur de retour (si la valeur de retour
est une donnée de type date).
threadvar
tempquad :isc_quad;
Écrivez ensuite votre fonction pour que le résultat pointe vers la variable de thread.
//définir la fonction
// cette fonction ajoute un nombre de jours à une date existante.
fonction dayadd (var jours : entier ; ibdate pisc_quad) : pisc_quad ;
commencer
tempquad.isc_quad_high := ibdate^.isc_quad_high + jours ;
tempquad.isc_quad_low := ibdate^.isc_quad_low;
résultat := @tempquad;
fin;
L'auteur vient de : mer systèmes inc. http://www.mers.com