Accueil > Forum > > > > Passer une Fonction en Paramètre
Passer une Fonction en Paramètre
mardi 10 janvier 2006 à 15:02:16 |
Passer une Fonction en Paramètre

moldov
|
Bonjour,
je cherche un moyen de passer une fonction en parametre pour pouvoir
l'executer dans une autre fonction afin d'avoir un code plus propre.
Exemple :
procedure X;
var
status : integer
begin
status := 1;
while status <> 0 do
status:=DAQmxReadAnalogF64(TaskHandleAI[nDevice,nCanal],-1,10.0,DAQmx_Val_GroupByChannel,Buffer,NbMesures,@status1,nil);
status := 1;
while status <> 0 do status:=DAQmxStopTask(TaskHandleAI[nDevice,nCanal]);
end;
je voudrais a la place
procedure X;
begin
Y(DAQmxStopTask(TaskHandleAI[nDevice,nCanal]));
Y(DAQmxReadAnalogF64(TaskHandleAI[nDevice,nCanal],-1,10.0,DAQmx_Val_GroupByChannel,Buffer,NbMesures,@status1,nil));
end;
procedure Y(fct : ....)
var
status : integer;
begin
status := 1;
while status <> 0 do
status := fct;
end;
Merci Beaucoup pour votre aide
Bonne Prog 
|
|
mardi 10 janvier 2006 à 16:03:51 |
Re : Passer une Fonction en Paramètre

Loulibier
|
Bonjour moldov, Et pourquoi ne fais tu pas une function recursive ? exemple : procedure X; begin DAQmxReadAnalogF64(TaskHandleAI[nDevice,nCanal],-1,10.0,DAQmx_Val_GroupByChannel,Buffer,NbMesures,@status1,nil); DAQmxStopTask(TaskHandleAI[nDevice,nCanal]); end; function DAQmxReadAnalogF64(TaskHandleAI[nDevice,nCanal], -1, 10.0, DAQmx_Val_GroupByChannel, Buffer, NbMesures, @status1, nil) : integer; begin // Traitement puis on traite le resultat si different de 0 alors on appel la même fonction.
if Result <> 0 then Result := DAQmxReadAnalogF64(TaskHandleAI[nDevice,nCanal],-1,10.0,DAQmx_Val_GroupByChannel,Buffer,NbMesures,@status1,nil); end;
function DAQmxStopTask(TaskHandleAI[nDevice,nCanal]): integer; begin // Traitement puis on traite le resultat si different de 0 alors on appel la même fonction.
if Result <> 0 then Result := DAQmxStopTask(TaskHandleAI[nDevice,nCanal]); end;
Bonne Prog,  Olivier PS : Lorsqu'une réponse vous convient, n'oubliez pas de la valider.
|
|
mardi 10 janvier 2006 à 20:41:34 |
Re : Passer une Fonction en Paramètre

florenth
|
Réponse acceptée !
type { Définition du type de fonction. } TMyFonction = fonction (Parametres): Integer;
procedure Y(AFonction: TMyFonction); var Status : Integer;
begin Status := 1; while Status <> 0 do Status := AFonction(Parametres); // Appel de la fonction passée en parametre
end;
{ Procédure principale. } procedure X; begin { Appels à la procedure Y en lui passant un parametre fonction. } Y(AFunc); Y(AOtherFunc); end;
Cet exemple te montre comment faire. Evidemment, il faut que les fonctions AFunc et AOtherFunc soient déclarées avant la procédure X (ou en forward) et qu'elle soient bien du type TMyFonction.
++ Flo
Si tu ne te plantes pas ...... tu ne poussera jamais
|
|
mardi 10 janvier 2006 à 20:51:38 |
Re : Passer une Fonction en Paramètre

jlen100
|
-->florenth ton doigt auarit-il déraper?
TMyFonction = fonction (Parametres): Integer;--TMyFonction = fUnction (Parametres): Integer;
@+
jlen
|
|
mardi 10 janvier 2006 à 21:02:46 |
Re : Passer une Fonction en Paramètre

florenth
|
Oups .... vive le français !!! Evidemment, il faut lire fUnction et non pas fOnction. Merci de cette remarque jlen
Dérapé, mon doigt ... je ne crois pas. A moins que chez toi le ''u'' soit à côté du ''o'', mais ya le ''i''. Bref ...
Si tu ne te plantes pas ...... tu ne pousseras jamais
|
|
mardi 10 janvier 2006 à 21:13:59 |
Re : Passer une Fonction en Paramètre

jlen100
|
ah les faux amis!!
non mon clavier est tout à fait standard mais mes doigts apparament beaucoup moins:
aurait est devenu auarit!!!! ou je suis devenu dyslexique.
@+
jlen
|
|
mercredi 11 janvier 2006 à 13:35:40 |
Re : Passer une Fonction en Paramètre

DeltaFX
|
Et :
Type TmyProc = procedure(Sender: TObject) of object;
si tu souhaites passer des fonction/procédure de la Form genre
procedure TForm.MachinOnDblClick(Sender: TObject);
gnh !
|
|
mercredi 11 janvier 2006 à 17:49:30 |
Re : Passer une Fonction en Paramètre

florenth
|
@ DeltaFX: je suis d'accord pour le "of object" mais par contre, le Sender n'est pas un parametre obligatoire. Ca sert, d'accord, mais pas toujours donc on peut l'ommetre (et rajouter d'autres parametres evidemment) si on le souhaite.
@jlen100: je penche plus pour la première raison quoi qu'une dyslexie n'est pas forcément grave ... Par contre, dans ton premier post, ce n'est pas déraper mais derapé, ... aïe aïe aïe !!!
++
Si tu ne te plantes pas ...... tu ne pousseras jamais
|
|
mercredi 11 janvier 2006 à 20:55:36 |
Re : Passer une Fonction en Paramètre

DeltaFX
|
Beuh, en fait j'ai juste fait un copy-paste depuis un de mes prog. J'avais le "of object " en bleu...
gnh !
|
|
mercredi 11 janvier 2006 à 20:56:19 |
Re : Passer une Fonction en Paramètre

Delphiprog
|
@DeltaFx : le type de procédure que tu déclares existe déjà nativement avec Delphi et se nomme TNotifyEvent  , lol. @Moldov : en gros, tu voudrais utiliser ce que l'on appelle des fonction callback (de rappel in French). Ce type de fonction est très fréquemment utilisé dans la programmation Windows et permet une grande souplesse en passant, en argument, une fonction plutôt qu'une autre. L'essentiel étant de déclarer le type de la fonction passée avant de l'utiliser. C'est un principe intangible en Pascal (à quelques rares exceptions près) et tu le sais déjà.
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
|
|
Cette discussion est classée dans : fonction, status, taskhandleai, ndevice, ncanal
Répondre à ce message
Sujets en rapport avec ce message
fonction de "consersion" [ par jakouz ]
bonjour je voudrais savoir s'il existe une fonction intégrée delphi qui me donne le chemin absolu de mon répertoire de base http (web) ? Merci d'avanc
Appeler un fonction a partir d'une autre unit [ par fabiin ]
Salutalors voila,g une fonction ki ce trouve dans une autre unit, mais cette unit n'est pas "lié" a une form, elle est juste comme ca pour mettre des
limitation de sendtext ? [ par Xavier ]
Bonjour,Comme la fonction sendtext prend en parametre un string et sachant qu'un string peut faire 2 Mo, pensez-vous qu'il est raisonnable d'utiliser
prb avec dll et tableau dynamique [ par bd ]
actuellement je recois en parametre d'une fonction un tableau de longueur variable. ce tableau est rempli dans la fonction de la dll.au retour dans la
Retourner une chaine... [ par ELECTRORESiSTiK ]
Salut,J'ai une chaine "1234567890" je cherche une fonction qui me donnerai "0987654321". Comment puis-je faire ça ? Il existe une fonction ?Merci d'av
Fonction ??? [ par ELECTRORESiSTiK ]
Salut, je cherche une fonction qui me permettrai de mettre un texte en forme sur une largeur de 70 caractère sans couper un mot et mettre des espaces
Une fonction existe pour ça ? [ par ELECTRORESiSTiK ]
Salut, je cherche une fonction qui me permettrait de mettre un texte en forme sur une largeur de 70 caractères sans couper un mot et mettre des espace
déclaration d'une fonction [ par vib ]
Je désire déclarer la fonction:function trouver_composant(t:string):Tcompopour quelle soit visible dans les autres unités.Je la déclare donc dans la p
Fonction pour séparer des champs dans une chaine [ par belkin ]
Bonjour,Existe-t-il une fonction qui permet de séparer des champs dans une chaine ?Exemple : MaVariable := '123_456.dat';Je veux séparer le 123 et 456
mot-clé inherited et les fonction [ par JesseJames ]
salut, j'ai un problème qui me torture la vie, help !Ayant 2 classes, A et B, A était la super-classe et B une classe fille.la méthode (fonction) de A
Livres en rapport
|
Derniers Blogs
[SHAREPOINT] LES SESSIONS TECHDAYS 2012.[SHAREPOINT] LES SESSIONS TECHDAYS 2012. par Patrick Guimonet
Voici donc pour ceux qui n'ont pas pu venir, ou ceux qui n'ont pas pu toutes les suivre la liste des sessions SharePoint aux TechDays 2012, que je mettrais à jour dès que les liens des vidéo seront disponibles. Ou ici : http...
Cliquez pour lire la suite de l'article par Patrick Guimonet TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3TECHDAYS PARIS 2012 : SESSION PLEINIèRE JOUR 3 par ROMELARD Fabrice
Speaker: Bernard Ourghanlian Cette session est comme chaque jour transmise en live par BrainSonic, et j'ai donc suivi cette troisième pleinière par ce moyen sur mon iPad . Elle est dédiée comme chaque année à la mise en perspective de l'é...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE !MISHRA READER : UN LECTEUR RSS TRèS ZUNE STYLE EN OPEN SOURCE ! par Vko
Hier durant une session dédiée aux Techdays 2012, j'ai eu le plaisir d'annoncer la sortie de la Béta 2 de Mishra Reader. C'est quoi ? Pour les utilisateurs, c'est une vraie expérience de lecture de flux RSS sur Windows. Rien à voir avec les produit...
Cliquez pour lire la suite de l'article par Vko [FRAMEWORK 4] LES TASKS ET LE THREAD UI[FRAMEWORK 4] LES TASKS ET LE THREAD UI par fathi
Je viens de passer quelques temps au TechDay's et j'ai pu voir pas mal de session intéressante. Par contre une chose m'a un peu étonné lors de certaines de ces sessions qui abordaient les améliorations du framework .NET (donc le 4.5) : en gros, bea...
Cliquez pour lire la suite de l'article par fathi WORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBEWORKFLOW FOUNDATION 3 A UN PIED DANS LA TOMBE par JeremyJeanson
Depuis déjà un an, je conseille vivement les utilisateurs de Workflow Foundation 3 à migrer vers la version 4. L'information qui va suivre ne devrait donc pas trop prendre au dépourvu les personnes qui m'ont suivi. Je profite de ce poste, pour faire le re...
Cliquez pour lire la suite de l'article par JeremyJeanson
Logiciels
Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System Easy-Planning (1.0.0.1)EASY-PLANNING (1.0.0.1)Basé sur les mêmes principes que MyPlanning, Easy-Planning permet de créer des plannings sous la ... Cliquez pour télécharger Easy-Planning COLLECTOR PLUS (3.00B)COLLECTOR PLUS (3.00B)COLLECTOR PLUS version 3.00B est un logiciel utilisant une base de données alimentée par :
- L... Cliquez pour télécharger COLLECTOR PLUS PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V7.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO LettresFaciles 2011 (8.0.0.1)LETTRESFACILES 2011 (8.0.0.1)LettresFaciles est un logiciel facilitant la création et la rédaction de lettres types.
Son inte... Cliquez pour télécharger LettresFaciles 2011
|