DelphiMVCFramework is now Open Source!

Yes, just after 1 year of development, and a couple of big projects developed with it, the DelphiMVCFramework has been published as OpenSource. The project is on google code svn I’ll talk about it at ITDevCon2013 ( In the trunk there are many samples and I’m planning to put many others. Main DMVCFramework features RESTful (RMM Level 3) compliant Server side generated pages using eLua (Embedded Lua) Messaging extension using STOMP (tested with Apache Apollo and Apache ActiveMQ) Can be used in load balanced environment using memcached ( Fancy URL with parameter mappings Integrated RESTClient Works with XE4 and XE5 (tested, but should works also on XE3 and XE2) Experimental support for IOCP Simple, but very very simple, to use… It contains also a lot of indipendent code that can be used in other kind of projects. These are the most notable: Mapper (convert JSON <=> Object, ObjectList <=> JSONArray, ObjectLists <=> DataSets) LuaBinding (integrate Lua script into Delphi native code) LuaTextFilter (convert eLua into plain Lua executable script just like JSP) Currently DMVCFramework use Embarcadero WebBroker framework, but is not tied to it. I’m working on a version that use IOCP (that is 10 times faster than plain WebBroker) and other web libraries for Delphi. Code is enough stable and is already used in big production system. WARNING! There are a couple of bugs that affect WebBroker and so, DMVCFramework. In our system, I’ve applied some patches to solve these problems. If you need those patches, ask me (I cannot publish the full code because it is Embarcadero licensed code). The bugs are: And another bug that affect also DataSnap and TIdHTTPWebBrokerBridge based projects. Code is tested on XE4 and XE5 but should works also on XE3 and XE2.
Read More

Personal question about Chinese characters…

When sending messages from Android to iPhone (or vice versa) using Whatsapp or Facebook, sometimes the special "smiley" characters on one end are replaced by chinese/japanese characters on the other end, see for an example. Just out of personal interest, I wonder if anyone has any idea what these characters actually mean.
Read More

XE Plus Pack – Release 14

Release 14 is now available to all existing XE Plus Pack users. Release 14 also brings support for Delphi XE5. The reason why the XE5 release was delayed was that the addition on iOS 7 support and a couple of changes to internal IDE component names (which made no sense to change) broke two of […] … Read More

Read More

Delphi / VMWare Fusion / OSX Mavericks / Samsung Android Devices USB Connection Problem solved

First let me say what a horror installation. Second Delphi has nothing to do with this problem. What’s going up: I use a new Samsung Galaxy S4 for developing Android Applications from Delphi. I use a MacMini with running VMWare Fusion 6.01 and a installation of Windows 8. Connecting the Samsung Device on the MacMini …
Read More

Read More

Read More

Multi-Device In Action: Mobile Security Client (iOS/Android)

Digifort creates security and surveillance hardware and software solutions and in this video is demonstrating Digifort’s new native iOS and Android mobile apps built with Delphi XE5. Digifort’s mobiles apps can view and control Digifort security cameras from a variety of iOS and Android devices, in varying form factors. Digifort’s new mobile apps are great example of the advantage Delphi XE5’s single source native multi-device capabilities. Share This | Email this page to a friend
Read More

Delphi XE5 Update 1 – fixes for serious issues on ClientDataSet

The Update 1 for Delphi XE5 and C++Builder XE5 has been released. This update touch some areas like FireDAC, FireMonkey, Debugger, IDE and mainly ClientDataSet. Below a list of fixes related to ClientDataSet, which I consider critical errors and a blocker for anyone that was looking to migrate to XE5. Quality Central Reference No. Summary Component/s 118951 Numeric Filters on a TClientDataSet do not filter Data, Data\Midas 119028 Linker error: TXMLTransformProvider libraries missing Data, Data\Midas 119164 Attempting to use MIDAS (eg TClientDataset) in the simulator on iOS7 fails Data, Data\Midas 119432 TClientDataSet.Locate method fails to work properly with XE5 midas.dll Data, Data\Midas   Application stops when driver is missing Data, Data\FireDAC   [Phys]-300 on connecting using Oracle / MSSQL / etc drivers using Arch SKU at design-time Data, Data\FireDAC   For a complete list of the specific problems fixed in this update, click here. Download Links You can download the update 1 installer or a new fresh ISO that includes Update 1: Update 1 installer (279.5MB) ISO with Update 1 (4.7GB) That’s is, have fun. Andreano Lanusse | Technology and Software Development Follow me on Twitter: @andreanolanusse Related posts: Delphi XE5 Update 2 – many bug fixes on FireMonkey for iOS, Android and compiler What does AnyDAC acquisition by Embarcadero mean for Delphi and C++Builder Developers? Update 2 for Delphi XE2, C++Builder XE2 and RadPHP XE2 available
Read More

TMS software speaks at, exhibits at and sponsors Embarcadero Conference Brasil

The Brasil Delphi developer community is one of the biggest in the world. Many of our smartest and most enthusiast customers are based in Brasil and come up all the time with very innovative and creative Delphi solutions. Therefore, we're pleased that TMS software can be present at the Brasil Embarcadero Conference on October 31, 2013 in São Paulo. This conference is also one of the biggest, if not THE biggest with over 600 attendees.
Our TMS Aurelius lead, Wagner R. Landgraf will have a session there about the use the TMS Aurelius ORM in combination with the upcoming TMS XData product. We will also have a booth where you can learn more about our products for VCL Windows application development and meanwhile also our increasing number of tools and components for mobile cross platform application development for iOS and Android.
Finally, we will provide 15% in our products for all attendants.
We look forward to meet you at the Brasil Embarcadero Conference and hear about your projects, your needs and answer your questions!

Read More

The Return of the Byte-Strings

Delphi’s NextGen compiler (Android, IOS) removed support for UTF8String, AnsiString and RawByteString. But if you look into System.pas you see that those types are still there but Embarcadero makes them inaccessible from outside of System.pas by prefixing them with an underscore that the compiler converts to the at-sign. And you can’t write “@UTF8String” as it is not a valid identifier. By patching DCU files it is possible to make those hidden types accessible. And guess what, the compiler generates correct code for the “unsupported” strings. The unit System.ByteStrings reintroduces: ShortString AnsiString AnsiChar PAnsiChar PPAnsiChar UTF8String PUTF8String RawByteString PRawByteString Usage: Add the System.ByteStrings.dcu’s path to the compiler’s search path and add the unit to your uses clauses. There is no *.PAS file because the DCU is patched with a hex editor to get access to the hidden types. Name IDE Version File Size Downloads Added System.ByteStrings XE5 RTM/UP1 only XE5ByteStrings.7z 2.45 KB 611 times 2013-10-23 System.ByteStrings XE5 UP2 only XE5Up2ByteStrings.7z 2.85 KB 533 times 2013-12-20 System.ByteStrings XE6 XE6ByteStrings.7z 2.89 KB 402 times 2014-04-16
Read More

ITDevCon 2013

The ITDevCon conference is almost there (register while you still can!). As four times before, the organizer has invited an impressive list of speakers which will be giving 19 presentations (if I counted correctly), divided in three parallel tracks over two days. The conference will occur on 14th and 15th in the beautiful city of Verona.

On the first day of the conference I’ll be presenting two Delphi-related sessions. In the Using attributes and RTTI to automate programming tasks talk, I’ll introduce a concept of attributes in Delphi and present few different practical uses for this interesting but underused language concept.

In my second session of the day, Continuous Integration, delivery and deployment, I’ll talk about continuous integration and its cousins, continuous delivery and continuous deployment. In the session I’ll present few different software tools that support those concepts and I’ll also speak about practical experiences with continuous integration in the field.

On the second day of the conference, both my sessions will revolve around the Smart Mobile Studio. [BTW, four SMS developers will be visiting – and presenting at the conference. This year’s ITDevCon is a great place to discuss JavaScript programming with Pascal!] In the Smart Mobile Studio today session I’ll present new release of Smart Mobile Studio 2.0, which should be released soon after the ITDevCon. SMS 2.0 will support new targets (Node.JS, Espruino, Web Workers), contain new components and libraries (grid, new game framework) and new data connectors (DataSnap) so I’ll have problems showing everything new inside the one hour time frame.

In my second session of the day, From Zero to Hero in 60 minutes, I’ll try to write a very simple client/server mobile application in one hour. The client side will run in a browser, the server side in Node.JS, and both will be written in Pascal without adding a single line of JavaScript. Participants will be welcome to test the application while it is being developed.

I hope I’ll see you in Verona so we can talk about Delphi, Pascal, and everything related and unrelated!

— Published under the Creative Commons Attribution 3.0 license

Read More

Read More

My CodeRage session files

At the time of writing my two sessions for CodeRage 8 are being broadcast around the Arpanet.

I’ve got two session this year, both related to Delphi mobile development, and both concerning how to reach out from the island that is the FM Application Framework (aka FMX aka FireMonkey) and gain access to the underlying mobile OS platform APIs.

The first session is Accessing the iOS API and looks at how Delphi-written iOS apps can talk to the CocoaTouch APIs and access additional iOS frameworks. We look at the Objective-C bridge and see how it is used to import iOS APIs, namely classes and protocols (Apple’s term for what we call interfaces), and how you can implement iOS interfaces and inherit from iOS classes. We also briefly look at how to pull in APIs that are not already imported by Delphi’s RTL. As a proof of concept we briefly see a Delphi iOS app that has no FMX code or units in it whatsoever, operating purely through the iOS APIs using the standard CocoaTouch model.

Files from the Accessing the iOS API session can be downloaded from here.

The second session is Accessing the Android API and looks at how Delphi-written Android apps can talk to the Android SDK classes. We look at the Java bridge and see how it is used to import Android APIs. We’ll also look at how to pull in APIs that are not already imported by Delphi’s RTL. We also look at how to add a splash screen to an Android app to cover up the startup time on anything other than the fastest devices, how to add Android menus to an app and how to launch external activities and get results back from them.

Files from the Accessing the Android API session can be downloaded from here. Take note that since several of the samples involve various required preliminary steps in order to function, as they step outside the comfort zone of Delphi XE5 RTM’s Android support, you should check the ReadMe.txt files supplied in the project directories of those projects.


I plan to write up some of the subjects covered by these demos in further posts or articles as time and work schedules permit. However in the mean time I’ll respond to comments by expanding this post as necessary.

It appears that when the small Java source files get compiled, the Android dx tool expects them to be compiled by the JDK 1.6.x compiler as opposed to the JDK 1.7.x compiler. If you have JDK 1.7.x installed, you hit a problem with dx reporting:

bad class file magic (cafebabe) or version (0033.0000)

However, to avoid forcing a reinstall of JDK 1.6 you might like to modify my build.bat batch files and add in extra command line switches to the javac.exe command-lines. You need to insert this after the javac.exe command to force Java 1.6 byte code output, which is digestible by the Android dx command:

-source 1.6 -target 1.6

[Update 2]

Current write-ups:

  • Splash screens are written up here for Delphi XE5 and Delphi XE6.
  • Launching activities and getting results back is written up here for Delphi XE5 and Delphi XE6.

Read More

Read More

OmniThreadLibrary 3.03

OmniThreadLibrary 3.03 has just been released. It is available via SVN or as a ZIP archive. What is OmniThreadLibrary? OmniThreadLibrary is simple to use threading library for Delphi. It's main "selling" points (besides the price, of course are power, simplicity, and openess. With just few lines of code, you can set up multiple threads, send messages between them, process Windows messages and more. OmniThreadLibrary doesn't limit you in any way - if it is not powerfull enough for you, you can ignore any part of its "smartness" and replace it with your own code. If you don't like working with threads - no problem! You can use high-level primitives like parallel for, futures and pipelines to introduce parallelism into your application. OmniThreadLibrary is an open source project. It lives in the Google Code and is licensed under the BSD license. At the moment, OmniThreadLibrary supports Delphi 2007, 2009, 2010, XE, XE2, XE3, XE4, and XE5 on the Win32 and Win64 platforms. Currently, there are no plans to support older Delphi compilers and .NET. XE2+ support is limited to Windows targets. Firemonkey is currently not supported. Where can I get more information? Home page: discussion forum: tracker: checkout instructions:'s blog: http://thedelphigeek.comAuthor's home page: wiki: book: http:// Changes since version 3.02 New features Support for XE4 and XE5 (tnx to [Uwe Raabe]). TOmniMREW is automatically initialized to 0 when created. Implemented IOmniPipeline.PipelineStage[] property returning Input/Ouput collections of a specific stage. Added IOmniTaskControl.Stop - signals thread to stop and immediately returns. Added OtlSuperObject (tnx to [Lee_Nover]). Different thread pool can be specified for all OtlParallel operations via the new TaskConfig.ThreadPool function. Added IOmniLockManager<K> to the OtlSync unit. Bug fixes Fixed XE2/XE3 package compilation. TOmniBaseBounded(Queue|Stack) internally aligns allocated memory to required CAS granularity (8 bytes on 32-bit platforms, 16 bytes on 64-bit platforms) (tnx to [Alexander Alexeev]). TOmniBaseBoundedQueue's ring buffers are internally aligned to 2*SizeOf(pointer) (tnx to [Alex Egorov]). Prevent memory leak if (Queue|Stack).Initialize is called more than once (tnx to [h.hasenack]). Fixed memory leaks in `forEach output` and `checkVat` examples(tnx to [Steve Maughan]). Fixed TOmniTaskGroup.TerminateAll. Simple pipeline stage handles exceptions in the executor function. Compiles when 'Typed @ operator' is enabled (tnx to [arioch]). Removed optimization which caused ForEach to behave differently on uniprocessor computers. New demos 54_LockManager: Demonstrates the new lock manager (IOmniLockManager<K>). --- Published under the Creative Commons Attribution 3.0 license
Read More

The Walking Dead Season Premiere: Starring Delphi

In last nights Walking Dead Season premiere, at 00:52 minute mark, in the Library scene – check out the bookshelf behind Carol. A little Delphi Unleashed goodness. Also an OWL book (the precursor to VCL and later, Firemonkey)! There are also some more Delphi books on the lower shelves. Of course these are all from back […] … Read More

Read More

TMS software platinum sponsor of Be-Delphi + Delphi Developer Days

We're pleased to announce TMS software is platinum sponsor of the upcoming Be-Delphi conference on November 21 in Antwerpen, Belgium and the Delphi Developer Days on December 4,5 in London, UK.
The Be-Delphi conference in Antwerpen has its third edition this year with an impressive roster of speakers and ditto technical content. From Embarcadero, Marco Cantu will be present to introduce the new Delphi XE5, from USA, Ray Konopka from Raize software has an in depth session about generics. Delphi gurus from day 1, Brian Long, Jeroen Pluimers and Bob Swart are present as well. Brian Long talks about developing for Android, Jeroen Pluimers about the MVVM pattern in Delphi and Bob Swart about (dis)connected mobile datasnap.
But there is more, Mathias Dellaert talks about TVirtualInterface / TVirtualMethodInterceptor, Detlef Overbeek from the Blaise Pascal magazine talks about Leap Motion and we have Anton Vogelaar giving a session about Delphi for industrial control.
The TMS software team will be present with a booth and Bruno Fierens gives a session on consuming GEO services from Delphi.
As you can see, Be-Delphi 3.0 will be again a top technical conference packed with interesting talks and exciting subjects. The TMS software team looks forward to meet you there!

Shortly after, on December 4 and 5, Carry Jensen and Bob Swart bring the Delphi Developer Days and an extra day on December 6 devoted to a Delphi Mobile development workshop. No new technical subject is left untouched on the Delphi Developer Days. FireMonkey, FireDac, Gestures and touch, debugging, Datasnap, XML, JSON, threads, Android, iOS, ...
If you want to update yourself to the latest knowledge about Delphi, don't hesitate to register for the Delphi Developers Days as places are strictly limited!

Read More

TMS Aurelius session at CodeRage 8

Join Embarcadero and software development experts from around the world this week at CodeRage – the totally free, totally technical, online conferences dedicated to technology and development.

On Thursday Oct 17, our colleague Wagner Landgraff is giving a presentation on our Delphi ORM TMS Aurelius and this introduction will help you quickstart using the TMS Aurelius framework for writing effective database driven Delphi applications in a productive way.

Read More