Page 1 sur 1

interface, prototype , procedure ...

Publié : ven. 01/sept./2006 10:33
par jerexgrz
Quelqu'un pourrait me dire à quoi servent exactement ces fonctions ? J'ai regardé sur l'aide, mais il n'y a aucun détails concernant la rapidité d'une ou de l'autre fonction.

Actuellement, j'utilise des procedures du style :
dessin (x,y,type)
pour afficher un carre par exemple.

Je me demande si l'utilisation de prototype n'est pas + approprié pour ce style de commande graphique ou il n'y a pas lieu de mettre en memoire certains parametre comme X, Y. :?:

Publié : ven. 01/sept./2006 11:03
par Flype
les prototypes ne servent pas du tout à remplacer d'une quelconque manière les procédures.

leur utilisation est réservée à des cas assez particuliers.

ils servent entre guillemets à transformer une adresse d'une fonction en nom de fonction comme s'il s'agissait d'une commande purebasic ou d'une procédure.

Example :

Tu ouvres une DLL avec OpenLibrary.
Tu obtiens l'adresse de la fonction qui t'intéresse avec adresse = GetFunction(0, "NomDeLaFonction")
Tu appelles la fonction via son adresse avec CallFunctionFast(adresse,...)

Mais pour faire plus propre, plus pratique tu peux 'dire' à purebasic que 'adresse' sera implicitement utilisé en définissant un prototype plutot que d'utiliser CallFunctionFast().

L'aide PureBasic (fr) donne un petit example :
Prototype.l ProtoMessageBox(Window.l, Body$, Title$, Flags.l = 0)

If OpenLibrary(0, "User32.dll")

MsgBox.ProtoMessageBox = GetFunction(0, "MessageBoxA")

MsgBox(0, "Hello", "World")
EndIf
Par ailleurs, les prototypes sont aussi très pratiques quand ils sont utilisés avec l'API windows conjointement avec les 'pseudotypes' (voir l'aide).

Mais dans une programmation classique il n'est pas nécessaire de connaitre tout çà.

Publié : sam. 02/sept./2006 13:55
par jerexgrz
ok ! Merci. :wink:

Re: interface, prototype , procedure ...

Publié : mar. 13/oct./2009 12:50
par Kwai chang caine
Trois ans plus tard......
Le fossoyeur de topic KCC..posa une question.... :D

En fait les protoype, c'est un peu comme un ALIAS en VB ???
Ca permet de donner un autre nom a une procedure ???

J'ai essayé ça, et j'comprend pas.....ça marche 8O

Code : Tout sélectionner

Procedure Coucou(Texte$)
 MessageRequester("Essai prototype", Texte$)
EndProcedure

Prototype.l ProtoMessageBox(Texte$)
MsgBox.ProtoMessageBox = @Coucou()

MsgBox("Coucou")