Start up function in library

Post

Posted
Rating:
#1 (In Topic #134)
Regular
bill-lancaster is in the usergroup ‘Regular’
 Does anyone know if this can be done?
At the moment I have to remember to call a startup procedure from my project each time.
GB 3.9.2
Online now: No Back to the top

Post

Posted
Rating:
#2
Avatar
Regular
jornmo is in the usergroup ‘Regular’
What exactly do you mean by a "start up function"? A function that is run when the library is accessed? In that case, if it is an object, you can utilize the constructor, _new().

Online now: No Back to the top

Post

Posted
Rating:
#3
Regular
bill-lancaster is in the usergroup ‘Regular’
Thanks for the reply.
I have a library which that performs a number of mysql routines.
A connection to the database is required before the routines will run.

Have tried:-

Code (gambas)

  1. Public Sub _new()
  2.     Initialise()
  3.  

But nothing happens.

In the Gambas wiki reference is made to automatically invoking a startup routine but this is all it says:-
"There is a better way. It will happen automatically and independently of your main project execution logic.[More to come…]"
So is there a way to avoid having always to call a startup procedure from the project us a library?
Online now: No Back to the top

Post

Posted
Rating:
#4
Avatar
Regular
jornmo is in the usergroup ‘Regular’
You cannot use _new if the library is static. A module is a static class, i.e. it cannot be created, only accessed directly. If you put the library code in a class file, you can create objects out of it, and this is where _new comes in. As the new object is created, you can have it initialise the connection with _new.

Try to read up on the Gambas object model here to get a better understanding of this: /doc/object-model - Gambas Documentation

Taking a look in the Gambas farm on how people are doing this can also be enlightening :)

Online now: No Back to the top

Post

Posted
Rating:
#5
Avatar
Expert
Quincunxian is in the usergroup ‘Expert’
 You can still use a Module to do this I think
Use a class to instantiate your SQLite database
when the Module starts assign this class to a "$Con" variable
You can then use the _new() in the class to do what you need.

so you get something like this Mod_Global.DB.$Con.
The downside is that your library will depend on this convention always being used.

Cheers - Quin.
I code therefore I am
Online now: No Back to the top

Post

Posted
Rating:
#6
Avatar
Administrator
gbWilly is in the usergroup ‘unknown’
Hi,

I was checking some  old post when I ran into this one.
Maybe a bit of a very late reply, but this might do the trick.

As your library needs a start up class anyway, you might as well use that class to your advantage.
In that class define a:

Code (gambas)

  1. Public Sub _Init()
  2.  
  3.   'your code here
  4.  
to make the library do stuff you want it to do at start up of the library
More info on init() see: /lang/special/init - Gambas Documentation

Haven't tested this myself (but I will in 2 days at work in my own libraries)

gbWilly
- Gambas Dutch translator
- Gambas wiki content contributor
- Gambas debian/ubuntu package recipe contributor
- GambOS, a distro for learning Gambas and more…
- Gambas3 Debian/Ubuntu repositories


… there is always a Catch if things go wrong!
Online now: No Back to the top
1 guest and 0 members have just viewed this.