[Gambas-user] Sub and Function hijack ?? is this possible ?
olivier coquet
ocoquet at 3d-phenomen.fr
Mon Feb 15 14:35:10 CET 2021
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)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210215/47ce7792/attachment.htm>
More information about the User
mailing list