Monday, December 23, 2013

My still not working stable enough, FireMonkey app.

In my previous post i comment about a recent app my company release.

This one is just a simple app in kiosk mode with a few screens, not very impressive if just ask.

The detail is this one have to consume a web services. The web services is implemented with Delphi using RemObjects library.

As i say before, i code and deliver this time using Oxygene because the Firemonkey pair app auto close alone after 2 to 3 hours working. No error, no chance to debug, no way to fix this.

In my last post i advice about have no time to test with XE5 update 2. So, just for the shake i test my FM app with update 2 and sadly, the results are the same. And i must add, now the process to debug seems a little more bad working than before.

I love to ear anybody else experiences with real world app and fire monkey. I see a few videos , one very impressive about capturing video on real time. The main point to me is stability and seems like Embarcadero is working there. Can we cross fingers for the next release?

In any case , in the meantime, i have to start another android project very complex and i believe cannot start with XE5 at this stage. It will be Oxygene 100%. The bad part is the UI design, but, again, Oxygene is a very pleasant tool to code.
I really hope XE6(?) give me the confidence im lost in FireMonkey.

If anybody have another experiences about this, im open.


Wednesday, December 11, 2013

My first real world Android app, coded in pascal.

I want to share my experience building a very simple android app.

My app have  3 screens, main screen, data screen and configuration screen. That just connect to a RO Server build with delphi and working ver well from some like 5 years i think.

I have to make a design decision. What to use? I have an familiar tool with so many minor changes i can do a app in hours, and on the other hand i have Oxygene , a good tool, but requiring a *lot* of knowledge of java and android secrets.

You can easy understand my smart decision was Delphi.

So, i start.

Design the UI was easy, very easy. In a few hours i have all the UI and basic behavior. get some bugs here and there, but my app was working. That was impressive and was very happy to have a android app working without know ANYTHING from Android!

Then i need it to connect to my delphi server. The main problem was the lack of support from RO to delphi mobile.

I must use SOAP for this. After a few problems, solved for RO stuff, i get running.

Ok, time to test! The app start to have some bugs, exit without message, crashed here and there... I can´t get it working more than 2 hours on my tests.

I try everything to simplify even more the app, use threads to be sure is not overload, lets figure, whatever you can imagine. No luck. Always goes out with errors related to canvas, graphics, etc, the most part of the time.

What to do? My app must run in kiosk mode 24x7, i can't release some unstable. Cant find a solution there, always close with signal 11, invalid pointer operation, or canvas error.

Ok, lets try to do some, not at the same quality, i think, but running to test Oxygene stability.

My app was ready on 2 days, and do all the stuff i need. I have running it from years, stress test, and the result was a super stable app, connecting using standard RO channels, reboot if it don't find the server at a stipulated time, and have 150 Kb (vs 15 mb on Delphi)

My  conclusion:

The process of working on Oxygene was amazing. I have a lot of prejudices before start. The need to know java an android by example, but the reality is code completion, gendarme and oxidizer do the most part of the work and all the android related questions where there to be solved with a simple google search.
Same for the UI, i find my working quick and easy to adjust my UI using external editors and adjusting XML by hand when needed. Even at the last time, i don't use editors and add some controls by hand.

Im a delphi lover, i love delphi and i was a delphi lover for years. Everybody here knows it, i even be very contrary to the idea coming from RO to not support delphi mobile, and feel that as a betray.

Now i must say FM is not ready yet , and even when it will be ready if some day happens, is a very different option ( i don't want to say inferior) than that Oxygene offer. Now i understand why mh complains a lot about what FM have to offer and why the better way to go is Oxygene.

I hope not lost my friends of the delphi Community but i always be honest and i don't plan to stop being honest now.

Is great to have bot options and maybe in a next release Delphi will be ready to a cooler experience.


Disclaimer: I can't test XE5 update 2, because it ruins my XE5 install. Im downloading the iso and will try with a fresh install.

Friday, December 6, 2013

Using GExperts to comment code with date, time and author

I am a happy user of GExperts . From my beginnings in Delphi consider it more a part of the IDE , irreplaceable for its flexibility , speed and how many tasks easier to perform daily.

Luckily I have already migrated to Delphi XE5 and despite being in an experimental version I've used without problems since.

One of the virtues of this package is the ability to add date and time code . this time I want to give a little tip that I find to also add an automatic comment that includes better detail the moment of change , the author and let us start writing a detailed after insertion.

First , we access GExperts settings.


Select the option to add date and wrote this


Enclosed in quotation marks I have placed the literal text and want to appear in my code and have added a date format option with hour minutes and seconds.

Then add my initials and finalize an arrow that makes reading the subsequent comments .

Then save the changes and at the press anywhere in the editor Ctrl + Alt + code To get this:


leaving the cursor at the right point to start writing the comment

An important detail is that eventually the line if they return the edited down to the next line but even with activated comment (this is because we put 3 slash /// . Whether they produce this effect is placed just 2 slash // .