Would you choose XOJO ?

OK. Sounds like an odd question to put on this forum, but here’s my dilemma.

I wrote a piece of software 15 years ago in Visual Basic 5. It is still going and has evolved into a beast. Had a ‘few’ updates over the years and grew to a large chunk of code as new ideas and features were added.

Primarily, its main function is to retrieve and store data, analyze, and display reports and graphs.

For quite some time now I have been delaying a rewrite of the code, but I am experiencing growing problems with expanding data, new Windows OS’s ( 7 & 8 ). Basically I didn’t want to have to do it as I know how much work it is going to take.

I have also been receiving a growing number of requests for an Apple version of the app.

So this morning I stumbled on to xojo.

This looks like a solution sent from above. Multi platform ( my main interest is Windows and Apple, later possibly Linux ) and has the MBS ChartDirector Plugin, which looks like it would make a lot of my re-coding a LOT easier.

I have also been doing a bit of php coding, and also on the Arduino IDE as a hobby, and together with the VB code I started with, the xojo code seems reasonably easy to follow and very close to what I have used before.

But I still have a number of concerns and hope that someone could share their knowledge and experience on some of these :

The data for my app is currently stored in some txt files ( about 350 Mb ). What database would be the best to convert this into ?

Would that database be common to each different OS ?

Would each OS need specific installed files for the compiled xojo app, or the database, to be able to run ( like VB6 on Windows needs the VB runtime files installed in windows ), or is the compiled xojo executable ( if it is an exe ? ) a self contained file.

Is the cost of the MBS ChartDirector Plugin a once off ( lifetime ) cost, or is that also an annual cost ?

Would I need another add-in if I wanted my app to retrieve data from my internet server, either via http calling a php script, or direct with ftp ?

If a contract coder already had a specific add-in that was needed for a certain part of the project, would I also need to purchase that add-in to be able to import that section / form / window into my app ?

Would the coder be able to compile the section he is working on into a stand alone executable, and can I call / shell / open that exe from within my app, without having to purchase the add-in that he used ?

I have also seen some online comments about xojo made apps being very slow on Linux ? Is this still a problem ?

Any suggestions or advice greatly appreciated.
Regards
Dave

[quote=181551:@Dave OBrien]Would you choose XOJO?
[/quote
YES!!! Xojo has made my coding life so much simpler and easier. It’s hard going back to C/php/anything else.

[quote]The data for my app is currently stored in some txt files ( about 350 Mb ). What database would be the best to convert this into ?
[/quote]
Sqlite. It’s single user, like your txt file, and is built in to Xojo.

[quote]Would that database be common to each different OS ?
[/quote]
Yes.

[quote]Would each OS need specific installed files for the compiled xojo app, or the database, to be able to run ( like VB6 on Windows needs the VB runtime files installed in windows ), or is the compiled xojo executable ( if it is an exe ? ) a self contained file.
[/quote]
Xojo produces an executable file and a set of .dll files, but they are “self contained” in that they do not need to be registered with the system. You can just drop in the exe and the libs directory and run.

[quote]Is the cost of the MBS ChartDirector Plugin a once off ( lifetime ) cost, or is that also an annual cost ?
[/quote]
Don’t know.

[quote]Would I need another add-in if I wanted my app to retrieve data from my internet server, either via http calling a php script, or direct with ftp ?
[/quote]
You can use http to call a php script without a plugin. If you want to use ftp, MBS has a plugin.

[quote]If a contract coder already had a specific add-in that was needed for a certain part of the project, would I also need to purchase that add-in to be able to import that section / form / window into my app ?
[/quote]
If you want to be able to compile, you will need a license for the add-in. Using someone else’s license is poor form.

[quote]Would the coder be able to compile the section he is working on into a stand alone executable, and can I call / shell / open that exe from within my app, without having to purchase the add-in that he used ?
[/quote]
Yes. That would be fine.

Fwiw, when a Xojo license expires, you can still use and build with the versions that you are licensed for.

This is more an issue of designing for your target. Xojo is very good about being cross-platform but you still will want to adjust some behaviors based on target. Xojo gives you some good #if targetX compiler directives so you can optimize your programs as required.

Thanks for making that crystal clear Greg. I was wondering about that. That also changes the costs quite a bit.

So if I have a license, and the compiled app works on the existing platforms, then even after the license expires, I can still modify code, recompile / build and distribute the app, using the version of xojo that I had the ( now expired ) license for.

And I assume there would be no limitation to adding new projects to xojo either, as long as I remained in the same xojo version.

The only time I would need to buy another license, would be when a new OS appears, new version of Windows, etc which ‘MAY’ need a different runtime dll to be created by xojo, or if I wanted to use a feature of the new OS in the app.

Thank You Tim.

You have been very helpful. I appreciate the direct answers.

Database common to all OSs : would the sqlite database file also be contained within the same directory as the exe and the dll files ?

And would the same database be accessible / available to 2 different apps ?
Could 2 apps use the same database at the same time ?

[quote=181559:@Tim Hare][quote=181551:@Dave OBrien]Would you choose XOJO?
If you want to be able to compile, you will need a license for the add-in. Using someone else’s license is poor form.
[/quote]

Thanks. I totally agree with your statement. I was not asking to look for loopholes. But it does tell me that if I use a contract coder, I must be very specific about knowing and agreeing on exactly which add-ins can be used for a project. No use getting a section of code written for $100, and then having to spend $1000 just to buy the add-in that the coder used.

The good news is that few add-ins are that expensive. The ultimate add-in is the MBS plug-ins. That runs around $300 for the big set which is very big.

At last, what will help you greatly are:

For OS X: MacOS Lib

For Windows: Windows Functionality Suite

Both are free and a must have (use).

That would be your design decision, but yes, you can place the SQLite database file next to the exe file (I usually do this in most of my projects).

Sometimes you might, on Windows for example, store the file in the application data folder.

I prefer the first method because if all the files are together you can easily run your app from a flash disk if you wanted to.

The probleme here is more the 32bit problem, xojo cant create 64 bit apps on linux…this quite a big fail :wink: you have to search 32 bit compatibility libraries :frowning:

Even Xojo it self runs very slow on linux i think.

Others can speak with more authority, but I think it has to do with the the Linux distro. I have no trouble at all in Mint even through emulation on my Mac.

Dave, you can store files anywhere you have write permission, but (especially on a Mac), you generally don’t store them next to the executable. You don’t want the user to trash or update the app only to lose all their data too.

One option is to distribute the “starter” database in your app package, then copy that to your app’s designated application data folder (in Xojo, SpecialFolder.ApplicationData.Child( "com.mycompany.myapp" )) and work off of that.

Two apps sharing the same SQLite database on the same machine is not an issue. However, if you want to access it across a network so two or more different machines could access it, you will need some sort of server. There are servers available for SQLite, or you could use Postgres, MySQL, or (for additional cost) Valentina. (Those are not the only options.)

It sounds like much of what you need is already built into Xojo.

The thing I like about XOJO is it gives you some choices on how you distribute an app.

  1. You can compile a desktop app and take advantage of the cross platform capability
  2. You can create a Web App and put it on YOUR server somewhere on the Internet
  3. You can create a stand alone Web App for the OS of your choice and deploy it on a desktop computer or server at a client site for all to share via a browser

In addition I just like BASIC syntax. There are a few quirky (at least to me using other dialects of BASIC) looking statements like writing and reading flat files but you get used to it. I also like I can mix/match object stuff since I am not an OOP purest.

The community is very active, and just like this post, you can get lots of ideas and feedback.

There are many third party add ons if you need them. The prices vary from free to reasonable and could save you plenty of coding.

It certainly sounds like Xojo will meet your needs nicely. And as you’ve already seen, we also have quite a wonderful Xojo community that is great at helping out others.

Thanks Paul

Yes, it certainly does look very promising, and the speed of replies here tends to show that help is not too far away.

Thank You to everyone for your answers, advice and suggestions. Greatly appreciated.