[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