[Gambas-user] Sub and Function hijack ?? is this possible ?
Jeff P. Zacher
adsicks at gmail.com
Tue Feb 16 20:42:50 CET 2021
If I run this code:
' In Form1
Public Sub Test()
Print "form"
End
Public Sub Form_Open()
Test()
End
' In Class1
Public Sub Test()
Print "class"
End
I get the following output:
form
What am I missing? This is what I would expect.
If you want to overload, just create a class that inherts a form class
and overload it....
On 2/15/21 10:58 AM, Brian G wrote:
> Are you adding dynamic classes as plugins? Not sure when this would be
> needed? Or are you defining classes on the fly in you code?
>
> Would be interesting to know how your using it!
>
> It is a simple way of writing once and basically having a sort of self
> modifying code. That is any module or class can change the actual
> destination of a call without the main process knowing about it.
>
>
> Thank You
> Brian G
>
> ------------------------------------------------------------------------
> *From: *"olivier coquet" <ocoquet at 3d-phenomen.fr>
> *To: *"Gambas mailing list" <user at lists.gambas-basic.org>
> *Sent: *Monday, February 15, 2021 5:35:10 AM
> *Subject: *Re: [Gambas-user] Sub and Function hijack ?? is this possible ?
>
> Le 14/02/2021 à 21:44, Jussi Lahtinen a écrit :
>
>
>
> On Sun, Feb 14, 2021 at 10:05 AM olivier coquet
> <ocoquet at 3d-phenomen.fr <mailto:ocoquet at 3d-phenomen.fr>> wrote:
>
> Le 13/02/2021 à 20:45, Christof Thalhofer a écrit :
>
> Am 13.02.21 um 09:08 schrieb olivier coquet:
>
> A question to specialists, is it possible to hijack a procedure or
> function?
> Let me explain:
> in my FMain class, I have a procedure:
>
> public sub maprocédure()
>
> This "é" should nor be allowed in the name of a symbol.
>
> print "toto"
> end sub
>
> in a maclasse class, I have a second procedure:
> public sub maprocédure()
> print "titi"
> end sub
>
> I would like that during a call: maprocédure() in the FMain class, it is
> the one of the maclasse class that runs and not the one of FMain.
>
> Is this possible?
> and how?
>
> No. The only possibility is that in Fmail you call
> this: maclasse.maprocedure()
>
> Hello Christof and thank you for your answer.
>
> As I'm French, I'm stubborn :)
> So I dug a little bit into the problem and I found a solution.
>
> Just declare a public variable (*varfct*) of type object in fmain and initialize it with "Me".
> In Fmain we call the procedure in this way:
>
> /varfct.maprocedure()/
>
> In the main() of the class added next, I change the value of*varfct* by "Me" (the one of the new class), and it's done, the call changes destination without changing the main() code.
>
> Not very elegant but it works.
>
> Friendship
> Olivier Coquet
>
> Translated withwww.DeepL.com/Translator <http://www.DeepL.com/Translator> (free version)
>
>
> I don't quite understand what you are trying to achieve, but "Me"
> can refer to any class (here FMain or maclasse).
> So, even when your variable name stays the same (varfct), you are
> essentially doing the same as this:
>
> FMain.maprocedure
> maclasse.maprocedure
>
> or perhaps more enlightingly:
>
> Dim hObj as object
>
> hObj = FMain
> hObj.maprocedure
>
> hObj = maclasse
> hObj.maprocedure
>
>
> Jussi
>
> Hi jussi,
>
> Thank you for your response,
> To answer your question, I have been working for 3 months on a home
> automation project that involves the use of several elements.
> The first one, an http server that is simple to implement and that
> integrates perfectly with a gambas program has been made as a gambas
> component (see my messages about this) is perfectly operational.
> The second one is the main program that takes care of the management
> of the connected objects, the scenarios and the launch schedule of
> each scenario is also operational (well almost, still some bugs).
> The third one is a system that would allow to add functions at will to
> the main program without rewriting it.
> It is on this last point that I am working on, a plugin system that
> installs itself and joins the main program. To do this, I use a
> component that I made in a special way.
> Its functions:
> - Able to create new buttons on the interface of the main program.
> - Manage these buttons.
> - To be able to substitute its own functions and procedures to those
> of the main program without modifying it.
> - Do not disturb the main program if the plugin is not installed.
>
> Hence my last question and the answer I gave there this weekend
> So my plugin system is now operational, if someone is interested, I
> can send the sources of a test plugin and the sources of an example
> program implementing it.
>
> Friendship
> Olivier COQUET
>
>
> Translated with www.DeepL.com/Translator (free version)
>
>
>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
>
> ----[ http://gambaswiki.org/wiki/doc/netiquette ]----
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210216/f5159831/attachment.htm>
More information about the User
mailing list