maxpiton4D
Messages postés16Date d'inscriptionjeudi 5 février 2004StatutMembreDernière intervention31 mai 2006
-
17 avril 2006 à 11:38
Guillemouze
Messages postés991Date d'inscriptionsamedi 25 octobre 2003StatutMembreDernière intervention29 août 2013
-
17 août 2006 à 15:56
Bonjour à tous,
Comment pourrais-je faire choisir à celui qui utilise ma librairie le type de variable que retournera une fonction?
exemple : Function GetResult(lineNb: integer = -1): Char;
Je vois pas comment je pourrais passer en paramètre le "Char"
f0xi
Messages postés4205Date d'inscriptionsamedi 16 octobre 2004StatutModérateurDernière intervention12 mars 202235 17 avril 2006 à 15:01
pour avoir plusieurs fonctions avec le meme nom mais differents parametres :
function GetResult(args : integer) : char; overload;
function GetResult(args : string) : char; overload;
sinon
procedure GetResult(args : integer; out result : char); overload;
procedure GetResult(args : double; out result : string); overload;
procedure GetResult(args : extended; out resultA: string; out resultB : integer); overload;
florenth
Messages postés1023Date d'inscriptiondimanche 1 août 2004StatutMembreDernière intervention17 août 20083 17 avril 2006 à 16:06
Sinon, si ta fonciton renvoie un type de résultat différent suivant les parametres que tu lui donnes, tu peux renvoyer un pointeur.
Cela fait un peu maché comme travail, mais comme il s'agit ici de librairies (DLL), tu n'as pas d'autre choix.
Allez, un exemple pour la route:
<hr size= "2" width="100%">{ Fonction dans ta librairie. }
function MyFunc(P: Integer): Pointer; stdcall; var I: PInteger;
begin case P of 0: Result : = PChar('OK');
1:
begin New(I);
I^ := 8;
Result := @I;
end;
end;
end;
Voila. Cette fonction te renvoie la chaîne OK si P 0 ou le nombre 8 si P 1.
<hr size="2" width="100%">
Mais, en principe, une fonction ne doit pouvoir renvoyer qu'un type de résultat.
C'est bizarre que tu aies besoin d'une telle fonction. Tu pourrais nous dire à quoi elle servirait ? Car, si ca se trouve (et c'est même quasi-sûr), il y a moyen de faire beaucoup plus simple.
++
@ F0xi: les deux premières lignes que tu proposent ne vont pas. Notre ami demande comment faire varier le résultat et non les parametres. Dans ce cas-là, la directive 'overload' ne fonctionne pas.
Pour les trois autres solutions: c'est à méditer. Mais je ne suis pas sûr que ça passe (je parle des parametres de sortie) à travers une DLL (tout comme le type string ...)
Si tu ne te plantes pas ......
tu ne pousseras jamais
maxpiton4D
Messages postés16Date d'inscriptionjeudi 5 février 2004StatutMembreDernière intervention31 mai 2006 17 avril 2006 à 18:56
Merci pour vos réponses
En fait j'en ai besoin car cette fonction récupere le résultat d'une requete sql, et le champ sql peut être de plusieurs types...
Je vais essayer avec ce que vous m'avez dit je verrais bien
sinon, d'autres idées ?