bonjour,

je veux creer une petite UDF en delphi me permettant de renvoyer un float . Le parametre passée à l'UDF est également un float. j'ai fait un test en ecrivant une fonction qui ramene la valeur absolu. ça donne cela :
declaration UDF
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
DECLARE EXTERNAL FUNCTION ABS_1 
    FLOAT
    RETURNS FLOAT BY VALUE
    ENTRY_POINT 'UDF_abs' MODULE_NAME 'maDLL'
fonction delphi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
 
function UDF_abs(avaleur: double): double; cdecl; export;
 
var
wval : string;
begin
//wval := floattostr(avaleur);
//MessageDlg('DLL  ' + wval, mtWarning, [mbOK], 0);
if avaleur < 0 then
  result := avaleur*(-1)
else
  result := avaleur;
end;
voila rien de bien compliqué...Pourtant si j'effectue la requete suivante
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
 
select abs_1(4) from rdb$database
j'obtiens 0,000 ??? La valeur passée semble correspondre à l'adresse mémoire ...pourtant j'ai trouvé des exemples d'UDF avec return FLOAT by value...?????
Qqun peut il m'éclairer ?