Not tremendous useful today as when developed (Delphi 2010 time frame) but, if someone is still using my DataSnap Filters Compendium (and I know some users heavily use it), now can find the Delphi 10 Seattle version on github. Currently works all the speed test and the server/client test. Consider this as a very stable beta.
Some years ago, at the Delphi 6/7 timeframe I was working on a client/server program with c.a. 400 forms and 200 units. At that time I needed a simple way to localize in Italian (in primis) and in other languages, all the standard dialogs (ShowMessage, InputBox, InputQuery etc.). Moreover, I would have liked to give a unique style to them. In addition, I needed to localize that dialogs. Moreover I needed a simple way to show a program of a background operation using a not modal dialog with a simple pattern like the following:
ShowStatusPos(STATUS_CAPTION, Point(50, 50), True);
for i := 1 to 100 do
while not LMyDataset.Eof do
UpdateStatus(i, Format(STATUS_CAPTION + ' %2d%%', [i]));
So, after some tests I wrote Message Master for Delphi. MM4D is a smal library which supports all of these features, or at least these features were supported at that time. Indeed, since then I saw many (really many) 3rd-party Delphi/C++Builder written programs which actually use MM4D. However, since then I didn’t supported that library anymore. Now, more or less, 15 years after, a user wrote to my about MM4D support in Delphi 10 Seattle. So, I decided to update the code to let it compile on Delphi 10 Seattle. So, now it is currently supported (even if I dont plan to improve it in any way in the short term). However if someone use it or want to use it and update/upgrade/improve, here’s the github reporitories. I hope I have done something good for all the old time users.
In the repositories there is a demo to show all the features of MM4D and there is also a small tool called UnitsAdded.exe which can be used to add the MM4D features to a project automatically (search for Dialogs.pas and, if exists, add MessDlgs after it).
MM4Delphi uses the good XiControls (included). So, still thank you to Eugene Genev for his XiControls.
Mathias Pannier did a nice talk at the 10° Delphi Meetup in Dresden, Germany. You can find his review with the slide (both in english) in his blog.
Mathias contacted me about some specific questions the audience did.
Here’s my replies.
Is it possible to have a [MapperJSONSer(‘first_name’)] attribute for DataSet fields?
Not currently. It quite simple to implement but now this feature is available only for objects using RTTI attributes. Maybe in the near future this will be extended also to dataset serialition.
Is it possible to implement a custom renderer for example for xml output?
Sure! DMVCFramework is really opened to extensions. You can implement renders for every format you like, you are not tied to the built in.
Which Delphi edition is required? Starter, Professional, Enterprise, Ultimate?
DMVCFramework requires Professional version, because WebBroker is available from that version upwards.
Did You have any performance comparison?
Yes, it is not a complete test, is just a rough test between DMVCFramework and nodejs. DMVCFramework is not running into Apache or IIS, but is using its INDY default web server so the actual performance using a real webserver are far better.
I’m planning to do more tests and as sson I’ll do them, will be published here and in the facebook group.
What about documentation?
The framework is quite intuitive, so after read this presentation (ITDevCon2013) you can go though all the samples (which covers all the features) and you will be up&running in in an hour or so.
However, some volenterous users, are starting to work on a more structured documentation. There will be a markdown generated site which will provide tutorial and devguide.
Still thank you to all the people which actively partecipating in this project.
Just after 1 year and half from the 1st edition, the 2nd edition of Delphi Cookbook has been announced. The first edition got a lot of interest and appreciation comments, so the editor decided to ask me a 2nd edition. So here it is! It is still in work-in-progress but the work is going smooth. In a month or two will start the review phase and then the book should be officially presented.
However, if you are interested, the book is already available in preorder.
In the 2nd episode of DelphiPodcastIT (Delphi podcast in italian language by Marco Breveglieri) there is a my interview about the past, the present and the future of DelphiMVCFramework with a lot of technical contents. The interview itself is quite long, just like a micro training on DelphiMVCFramework.
P.S. bit Time Professionals offers specific training, consultancy and development about DelphiMVCFramework (besides to Delphi, web development, mobile development, Android, C++ Builder, PHP, Lua, nodejs, Python and embedded)
Almost an year ago I started to write a book about Delphi for Packt Publishing. Today that book has been published.
This book is a cookbook! That’s it, in 328 pages you will find useful (I hope) “recipes” for your day-by-day Delphi job.
Topics of the book
Create visually stunning applications using FireMonkey
Effectively use LiveBindings with the right OOP approach
Create server-side programs to serve RESTful web services and provide data to your mobile apps
Develop mobile apps for Android and iOS using well-defined GUI design patterns for a great user experience
Build efficient mobile apps that read data from a remote server
Call the platform-native API on Android and iOS even for an unpublished API
Use extended RTTI to better manage the software customization for your customer
Leverage the most popular design patterns for a better design without wasting too much time debugging
It is not an introductory book, you will not find any “Introduction to the Object Pascal language”, however the majority of the chapters are not too complex and can be grasped also by the new Delphi programmers.
The book is available for sale on the editor website and on Amazon.
The Parallel Programming Library introduced in XE7 is one of the most awaited built-in library for the Delphi and C++Builder RTL, at least for me. I’ve still a nice list waiting for the next versions, but this is another story 🙂
Marco Cantù wrote about dynamic arrays some days ago, another nice feature introduced in Delphi XE7. In the post he talk about an integration between Parallel Programinng Library and dynamic arrays which I shown to the audience in the Milan and Rome XE7 world tour.
I planned to write about Parallel Programming Library in this blog, so why don’t start with that simple example?
Here’s the code.
procedure TFormThreading.Button1Click(Sender: TObject);
tasks: array of ITask;
value := 0;
tasks := [
sleep(1000); // 1 seconds
sleep(3000); // 3 seconds
sleep(5000); // 5 seconds
ShowMessage('All done: ' + value.ToString);
This code configure and start 3 parallel tasks and wait for their completitions. Then show the result using a ShowMessage.
This code takes 5 second to be executed because the 1st second there are 3 tasks running, from 2nd second to the 3rd second there are 2 tasks running while the last 2 seconds only one task is running. All the internal threads are managed by a thread pool. Hey! This means parallelize!