Bonjour a tous
J'essaye de creer des UDF sous Delphi pour les utiliser sous FIREBIRD 2.0 (en utilisant le modele trouve sur : http://www.firebirdsql.org/index.php...&id=geldenhuis)
Voici le code delphi :
La libraire :
et l'unite associee est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 library UDF_Olivier; uses UDF in 'UDF.pas'; {$R *.res} exports UDF_Test, UDF_Test1; begin end.
La compilation ne pose pas de probleme et je stocke la DLL generee dans le repertoire 'UDF' de Firebird
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30 unit UDF; interface uses SysUtils, Classes; function UDF_Test(var Width,Height:Integer):Integer; stdcall; function UDF_Test1(var Entree:pChar):pChar; stdcall; implementation function UDF_Test(var Width,Height:Integer):Integer; begin Result:=Width+Height; end; function UDF_Test1(var Entree:pChar):pChar; begin Result := Pchar(UpperCase(String(Entree))); end; end.
Je declare l'UDF (test1) dans ma base avec :
Mais lorsque j'essaye d'utiliser cette fonction dans une requete ou PS (ex :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 DECLARE EXTERNAL FUNCTION TEST1 CSTRING(80) CHARACTER SET NONE RETURNS CSTRING(80) CHARACTER SET NONE ENTRY_POINT 'UDF_Test' MODULE_NAME 'UDF_Olivier.dll';
select test1(b_bagueur.prenom) from b_bagueur
qui devrait afficher le prenom en majuscule m'indique
Invalid token.
Invalid request BLR at offset 79.
Function TEST1 is not defined.
Module name or entrypoint could not be found.
Quelqu'un a t'il une idee ?
merci d'avance
Olivier
Partager