[Gambas-user] Sub and Function hijack ?? is this possible ?
Brian G
brian at westwoodsvcs.com
Mon Feb 15 17:58:25 CET 2021
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 < [ mailto:ocoquet at 3d-phenomen.fr | ocoquet at 3d-phenomen.fr ] > wrote:
BQ_BEGIN
Le 13/02/2021 à 20:45, Christof Thalhofer a écrit :
BQ_BEGIN
BQ_BEGIN
Am 13.02.21 um 09:08 schrieb olivier coquet:
BQ_BEGIN
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.
BQ_BEGIN
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?
BQ_END
No. The only possibility is that in Fmail you call this: maclasse.maprocedure()
BQ_END
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 with [ http://www.deepl.com/Translator | www.DeepL.com/Translator ] (free version)
BQ_END
BQ_END
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
BQ_END
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 [ http://www.deepl.com/Translator | www.DeepL.com/Translator ] (free version)
----[ http://gambaswiki.org/wiki/doc/netiquette ]----
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.gambas-basic.org/pipermail/user/attachments/20210215/28bf411a/attachment.htm>
More information about the User
mailing list