jayceblaster
Messages postés12Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention18 septembre 2006
-
3 août 2006 à 19:40
cs_Loda
Messages postés814Date d'inscriptionvendredi 3 novembre 2000StatutMembreDernière intervention30 juillet 2009
-
7 août 2006 à 14:21
Bonjour,
je suis en train de créer un dll via l'expert de DLL delphi et je souhaite déclarer une fonction privé comme je peux le faire dans un projet VCL
cs_Delphiprog
Messages postés4297Date d'inscriptionsamedi 19 janvier 2002StatutMembreDernière intervention 9 janvier 201332 3 août 2006 à 22:49
Si tu as compris :
1- comment est structurée une unité Pascal
2- quelque chose à la Programmation Orientée Objet
Tu dois donc savoir que le mot "private" désigne la portée des membres (propriétés et méthodes) d'une classe et non d'une simple fonction.
Comme te l'as indiqué loda, il suffit donc de déclarer ta fonction dans la partie implémentation en retirant la directive private.
Si tu en es encore à ce stade, mets de côté la programmation des DLL et révise les bases du langage avant tout. Ce sera un investissement payant si tu souhaites continuer et voir tes projets aboutir un jour.
May Delphi be with you !
<hr color="#008000" />
Pensez à cliquer sur Réponse acceptée lorsque la réponse vous convient.
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 4 août 2006 à 00:50
Je ne vois pas l'interet d'une fonction "private" dans une DLL. Soit elle est exportée, soit elle est interne (pas de stdcall; et pas listée dans exports), et donc "private" de facto.
jayceblaster
Messages postés12Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention18 septembre 2006 4 août 2006 à 13:58
Alors y a du monde la et j'ai grave l'impression de me faire tailler mdr.... Alors premièrement il est vrai que c'est peut etre pas judicieux de commencer par une DLL mais dans la vie on ne fait pas toujours comme bon nous semble (je suis obligé de faire une DLL --> I m sorry). Et puis désolé la prog n'est pas mon domaine et tout le monde n'a pas la chance d'avoir des années de codes dans les pattes ou d'etre sortie d'une grande école d'info.... Il me semble pourtant avoir posté sur le forum des débutants.
Et j'ai tres bien capté cette notion de privé et public je sais bien que si la fonction n'est pas définie dans les exports elle est automatiquement privé. Et en fait je souhaite déclarer une fonction privé qui puisse etre accessible par les autres fonctions de ma DLL (qu'elles soient public ou privé)
jayceblaster
Messages postés12Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention18 septembre 2006 4 août 2006 à 15:24
Ah merci Loda tu viens de m'apprendre un truc que je ne savais pas.
Je sais que pour une dll si elle n'est pas exporté elle est "privée". En revanche je ne savais pas que: qu'une méthode n'est visible que depuis la ligne ou tu la déclare.
Ca parait evident maintenant que tu me le dit mais je ne le savais pas mais normal je suis chez les débutants (même si ca a l'air de déranger mdr)
DeltaFX
Messages postés449Date d'inscriptionlundi 19 avril 2004StatutMembreDernière intervention 8 avril 20092 4 août 2006 à 16:59
Mais y a pas de honte à attaquer direct par une dll, surtoutquandon débute. J'ai fait strictement pareil d'ailleurs, jadis : avoir les yeux plus gros que les neurones coders. Et une fois que j'ai eu une belle dll qui marche, ben je me suis rendu compte que ca me pompait l'air, et j'ai dégagé la dll du projet.
De toute façon, les histoires de dll, ca fait chier, il en manque toutjours une à zindows qqpart, c'est abstru et abscon tant que t'as pas essayé d'en faire une. Apres on est tout de suite détendu, zen, on se rend compte qu'on aime ca, et tres vite on oublie le Tmediaplayer pour utiliser Bass.dll.
jayceblaster
Messages postés12Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention18 septembre 2006 4 août 2006 à 19:37
merci DeltaFX
En fait j'ai encore un ptit soucis.
Dans cette DLL je crée une form dynamiquement (avec un webBrowser) sur laquelle je crée un bouton. En fait je tiens a associer une fonction privé d'impression à l'événement OnClick de mon bouton.
procedure Imprimer(Sender: TObject);
var
vaIn, vaOut: OleVariant;
begin
WebBrowser_Affichage.ControlInterface.ExecWB(OLECMDID_PRINT, OLECMDEXECOPT_DONTPROMPTUSER, vaIn, vaOut);
end;
............dans une autre fonction de la DLL j'ai:
//définition de l'événement OnClick du bouton
Button_Imprimer.OnClick := Imprimer;
Mais j'ai une erreur de compilation au niveau de la derniere ligne et je ne comprend pas pourquoi
jinh68
Messages postés215Date d'inscriptionmardi 29 juillet 2003StatutMembreDernière intervention 1 septembre 2006 6 août 2006 à 21:58
Salut,
Il y'a effectivement un problème de typage. En effet la procédure que tu dois associer à ton OnClick doit être de type TEvent, qui est équivalent à procedure of object(une méthode en gros).
Donc tu dois déclarer ta fonction imprimer comme étant une méthode de ta fiche.
jayceblaster
Messages postés12Date d'inscriptionmercredi 31 mai 2006StatutMembreDernière intervention18 septembre 2006 7 août 2006 à 13:38
ok c'est bon j'ai compris (enfin je pense ), enfin maintenant ca marche
En fait moi j'ai créé ma form et mon tWebBrowser dynamiquement pour ne pas a avoir a inclure dans ma DLL une fiche. Parce que si je rajoute une fiche (donc une form) autant placer les composants de la forme en utilisant la palette d'outils non?