Articles on this Page
- 09/25/16--22:23: _Webinars this week!...
- 09/26/16--14:37: _Filtering support f...
- 09/30/16--05:47: _C++ Roundup #1
- 09/30/16--07:08: _Migrating Delphi - ...
- 10/03/16--14:36: _CodeRage XI Call Fo...
- 10/03/16--21:48: _秋の夜長に RAD Studio / ...
- 10/04/16--16:23: _Compile Time and Ge...
- 10/07/16--12:14: _Webinar: Connascenc...
- 10/07/16--13:08: _IoTLivingLab Worksh...
- 10/08/16--03:39: _GDG DevFest 2016 in...
- 10/10/16--10:05: _Embarcadero Confere...
- 10/10/16--12:33: _Getting Started Bui...
- 10/10/16--14:41: _Desktop Bridge apps...
- 10/10/16--23:02: _デベロッパーキャンプ開催計画と講師募集...
- 10/12/16--02:51: _Что почитать про пр...
- 10/12/16--06:06: _Learn to program wi...
- 10/14/16--06:30: _RAD Studio 10.1 Ber...
- 10/19/16--04:20: _Learn to program wi...
- 10/20/16--01:04: _今更ながら VCLとFireMonke...
- 10/21/16--15:41: _Learn Blazing Fast ...
- Migrating Your Database Applications to FireDAC and InterBase (youtube recording)
- RAD Server Scalable Cloud Deployment
- 09/26/16--14:37: Filtering support for custom ListView layouts in Update 1
- 09/30/16--05:47: C++ Roundup #1
- O'Reilly has a free ebook, Practical C++ Metaprogramming (free, where the cost is your email address.) It focuses on C++11 and C++14 language features; C++11 of course is supported by most of our compilers and we'll soon be moving far far ahead to where C++17 and C++19 are of interest.
- How hard is it to understand the full STL? There is a new blog series that looks well worth keeping an eye on, based on the premise "...with a modest and correct understanding of the C++ language semantics, you too can understand the ins and outs of the STL. How can you do this? By writing the STL yourself, of course." I will be reading this with interest.
- I really like the approach of learning by doing, including by rewriting something that exists in order to understand it. Many years ago - in about 2000 and 2001 - I wrote a simple 3D engine, starting with rendering polygons on a TCanvas in Delphi and moving on to using OpenGL. I skipped the intermediate portion of writing a library based on the polygon renderer that did more of OpenGL's stuff, like depth buffers and texture mapping, instead moving straight to using OpenGL.
A developer named Dmitry Sokolov has written a small series on github on writing an OpenGL-like software rendering library from scratch, in about 500 lines of C++ code. I find it goes over the material very fast, and if you have never done any 3D work before it may be a struggle. I find several times one paragraph has a lot of material - lesson 3, hidden face removal and the Z buffer, casually introduces texture mapping in one paragraph as a homework assignment. However, all lessons are accompanied by code, and if you're used OpenGL or Direct3D, and you're curious about the fundamentals under the libraries, you should be able to follow along.
- Arne Mertz writes a nice blog called Simplify C++. This post on const correctness is a good overview of a basic and important concept, focusing on being aware of the 'const's behaviour used in various ways and approaching class design with const in mind.
- I'm halfway through reading this Medium article about optimizing atoui (string to integer), with various approaches and comparing them to the implementations in the STL and boost's lexical_cast. Very interesting stuff!
- Ok, one non-C++ thing (but kindof related since the two languages interop in RAD Studio.) This Delphi blog post from Jim is eye-opening to a C++ developer. A million lines of code are compiled in five seconds. I don't intend to normally include Delphi material in a C++ blog, but that one is spectacular.
- The Starter edition is free! Note that Starter is not supported installed with any other SKU (eg Delphi Starter + C++Builder Pro is not supported.) Starter is intended for a developer who, well, needs to get started. It's great to have these editions free for all to use!
- We released Berlin Update 1. Some great stuff there, including lots of C++ quality improvements. If you're not already aware, we're moving to a longer release cycle (previous releases were every six months) and so we plan to have larger items in updates. We can do this because we now have the subscription update, so since everyone who buys the product has subscription and can keep up to date, we want to (a) slow down the releases with breaking interface changes etc; and (b) add more Big Features in updates, ie intermittently during the year, rather than waiting for releases. This means more good stuff for you, more often, ongoing.
- And finally, Nick Hodges of Delphi fame is joining the product management team here at Embarcadero, starting next week. Nick worked at Embarcadero several years ago, so is re-joining. Welcome Nick!
- 09/30/16--07:08: Migrating Delphi - Case Studies; September 21 Webinar
- more sales,
- new features in your application,
- new platforms,
- new markets and more happy users.
- Greater Reach for your Applications - The reach allows you to reach more users, more platforms.
- International audiences with Unicode.
- More platforms with OS X, iOS and Android.
- Reach more memory on Windows with 64-bits support.
- Reach more cores with the parallel programming library.
- · common open source libraries
- · Free 3rd Party Libraries
- · Add-in frameworks, like JEDI, etc.
- · TurboPower libraries
- · Quick and Easy install and uninstall
- · New libraries frequently added.
- String maps UnicodeString, no longer AnsiString
- Char now maps WideChar (2 bytes, not 1 byte) being a UTF-16 character
- PChar maps PWideChar
- AnsiString maps the old String type
- AnsiChar, PAnsiChar
- Short String contains AnsiChar elements
- Implicit conversions still work.
- The user's active code page controls the mode (ANSI vs. Unicode), so that ANSI strings are still supported.
- String concatenation
- Standard String functions. E.g., Length, Copy, Pos, and so on.
- Operators. E.g., , CompareStr(), CompareText(), etc.
- FillChar ( )
- Windows API
- Assume Sizeof (Char) is 1.
- Assume the size of a string equals the number of bytes in the string.
- Handle String or PChars directly.
- Saves or reads a string from/to a file.
Bob Swart’s “Delphi 2009 Development Essentials book”DataSnap chapter by Dan Miser covers the topic “Reusing Existing [DataSnap] Remote Data Modules
Migrating Delphi DCOM DataSnap Projects to Delphi 2009 DataSnap - Jon Robertson – jmrSoftware
- DataSnap 2009 Overview - By Steven Shaughnessy
- 10/03/16--14:36: CodeRage XI Call For Papers!
Success Stories & experiences - How you are using Embarcadero products
Migration and upgrading advice
Cool apps and user stories
FireMonkey multi-device development
Mobile platform specific features
VCL and Windows Development
RAD Server and Multi-Tier
DataSnap and related technologies
FireDAC Database Access
InterBase & SQL
Cloud & REST
Internet of Things (IoT), Devices and Bluetooth
Windows 10 and Windows Desktop “Centennial” Bridge
Leveraging and developing components
3rd Party Component and tools
Open to your topics as well
Standard session: 45 + 15 minutes Q&A
Double Session: 100 + 20 minutes Q&A
Lightning Talk: 10 + 5 minutes Q&A
Quick Idea: 5 minutes, no Q&A
07-Oct - Speakers notifications begin
28-Oct - Speakers submit final adjustments
07-Nov - Session videos and blog posts due
- 10/03/16--21:48: 秋の夜長に RAD Studio / Delphi / C++Builder サンプルコード
- 10/04/16--16:23: Compile Time and Generics
- 10/07/16--12:14: Webinar: Connascence: How to Measure Coupling with Nick Hodges
- Thu, Oct 13, 2016 6:00 AM - 7:00 AM PDT [Time Zones]
- Thu, Oct 13, 2016 11:00 AM - 12:00 PM PDT [Time Zones]
- 10/07/16--13:08: IoTLivingLab Workshop at Amsterdam DataLab
- 10/08/16--03:39: GDG DevFest 2016 in Amsterdam Science Park
- 10/10/16--10:05: Embarcadero Conference 2016 – Brazil
- 10/10/16--12:33: Getting Started Building Multi-Device Applications
- 10/10/16--14:41: Desktop Bridge apps available in the Windows Store
- 10/10/16--23:02: デベロッパーキャンプ開催計画と講師募集のお知らせ
- 講演希望場所： 東京 および／または 大阪
- お名前 および フリガナ（ハンドル名等で参加される場合はその旨明記ください）
- PC持ち込み あり／なし（接続にはHDMIを使用します）
- 講演希望場所： 東京 および／または 大阪
- 10/12/16--02:51: Что почитать про продукты Embarcadero. Обзор публикаций.
- 10/12/16--06:06: Learn to program with C++Builder: #1, Introduction and Installation
- a hobbyist who’s done some programming but never used C++ (or Delphi) before,
- a student,
- or a professional who wants to learn something new,
- So if you’re a hobbyist? It’s free. Enjoy!
- If you’re a student? It’s free. Enjoy!
- If you’re a startup? It’s free, but once you start making sales and get incoming revenue, you need to move to Professional or above.
- If you’re an existing company? You may find the revenue / commercial use options mean that Professional, Enterprise or Architect are a better option for you. Remember there is always the fully-featured trial version if you just want to try RAD Studio out.
- 10/19/16--04:20: Learn to program with C++Builder: #2, Building and Debugging
- A code editor
- A compiler
- A debugger
- Project*.cbproj (for me, Project2.cbproj.) This file describes the project - what files are in it, what the settings are. It corresponds to the bold top-level node labeled ‘Project2’ in the Project Manager.
- Project2.cpp: this is the first, main source code file for the application. Applications have an ‘entry point’, a place where they start. This file contains that.
- Project2PCH1.h: ‘PCH’ stands for ‘precompiled header’. We’ll get to headers later, but basically this file is used as an optimisation for making your application compile faster.
- Unit1.cpp, .fmx, and .h: C++ splits its code units into two files, the main implementation file, where your methods etc are actually written, and a header, which is where they’re declared. A header basically tells the compiler ‘this is what you should expect to see’; the implementation .cpp is where you actually implement it. These two are logically paired in the mind of any C++ programmer, but C++Builder formalises it by calling them a ‘unit’. (If you go File > New > Unit you will get a new .cpp/.h pair.) In fact, in the code editor, C++Builder opens them as a single entity too, and you switch between the .cpp and header using tabs at the bottom of the code editor.
So what is the .fmx file? The new project created a new unit by default, but this unit is special: it is used for a form (a form is what becomes a window when you run the app.) A window has a UI design part too, and this UI is stored in the .fmx file. So for visual parts of your application, which are both code and UI, the unit has three parts: cpp, header, and form.
- 10/20/16--01:04: 今更ながら VCLとFireMonkey向けボーナス スタイル パックのお話し [JAPAN]
This week is all about upgrading your Delphi database applications. Not only it is the last chance to save big on upgrading to the latest version of Delphi with 10% discount and free mobile and bonus packs, but there are also two globally available free webinars on Wednesday and Thursday that will discuss the technical details of
There are many dimensions to the process of upgrading database applications. It is about the database structure and the data model. It is about database connectivity framework. It is about the application logic. It is also about scalable deployment.
I'm going to run two logically connected developer webinars about upgrading your Delphi apps. On Wednesday the focus will be on the data model, database platform and database access framework. On Thursday we will go one step further and deploy our system in the cloud using modern, scalable REST API architecture using RAD Server technology.
These webinars are not only for developers, but also for system architects and business decision makers.
Act Now! Upgrade to 10.1 Berlin before the end of the month and register for FREE webinars on migrating your apps.
In RAD Studio Berlin, we added a new ListView Item Designer for FireMonkey applications that allows you to easily design custom ListView layouts.
Marco runs a nice series of blogs posts posting miscellaneous interesting material. I plan to do the same thing: here's number one!
On this webinar we learned how to migrate from older editions of Delphi with some stories of what to look for and how to update your code (including tools and resources to help you along the way)
In this webinar, we looked at and learn how to:
* Use the new Getit Package Manager to allow you to browse, download, purchase, and install GetIt packages into the current Delphi version.
* Use the Tech Partner Directory to find 3rd party libraries.
* Use the Unicode Statistics Tool, to estimate time and effort for the Unicode migration
* Modify non-Unicode code to Unicode for Delphi char, Read, String, Pointer, Length, MultiByteToWideChar, etc.
* Migrate the Borland Database Engine (BDE) to FireDAC for SQL databases.
* Move from MIDAS to DataSnap
* Convert Your VCL to FireMonkey using Mida –VCL to FireMonkey Convertor
Benefits gained by migrating to current 10.1 Berlin version:
10.1 Berlin gives you Business benefits:
Let me first mention Embarcadero has created a new Migration and Upgrade Center Web page. This Upgrade and Migration Center is here to help you navigate your migration from older editions to the newer current editions.
We really want to know how you are doing with your legacy Delphi and C++ Builder migrations, so please try using the “Talk to Migration Specialist today" button, that will get you in contact with an Embarcadero resource to help with your migration and help answer any migration questions J
The web page focuses on these 4 main areas of Migration; Unicode, Migrating to 64bit, Migrations of Database and Middleware, and Migrating 3rd Party Components / Libraries, with each section providing tools and resources to help with your legacy code migration.
Migrating 3rd Party Components / Libraries
One of the first questions to ask when migrating legacy Delphi code is: What 3rd party libraries and /or components are you using in your older Delphi projects?
The 3rd party plug-ins (libraries) need to be rebuilt in the current Delphi version. Having the source code makes this easier. You will need to re-compile your 3rd party components / libraries from older Delphi using the current Delphi 10.1 version so the components and libraries can be used in current Delphi projects.
Any 3rd party components / libraries without the source code may need updated versions for the current Delphi 10.1 version.
To help you find legacy 3rd Party Components / Libraries start with this link for some of the third party components available with RAD Studio
Here, you can find all the tools and components that have a version for the current Delphi 10.1 Berlin. Check the Delphi 10.1 Berlin box., for all Platforms, all Industries, all Categories, and all Countries. Click Search. Over 160 (163) tools and components get returned. Good chance you will find your 3rd party component / library to be used in the current 10.1 version of Delphi or C++ Builder!
The current Delphi includes the new Getit Package Manager to allow you to browse, download, purchase, and install GetIt packages into the current Delphi version. GetIt currently includes 31 of the popular free packages such as libraries, components, IDE extensions, and SDKs, like Open Source “TurboPack” Components, JEDI Visual Component Library, etc., certified to work in the current Delphi version!
The New GetIt Package Manager includes:
How to use GetIt Package Manager video: [YoutubeButton url='https://youtu.be/V51RhcRLZI8']
1. If you are looking for some kind of objective measure of the complexity of your Unicode migration, you can run this Unicode Statistics Tool on your Delphi application and check if any Unicode changes are needed.
This evaluation tool for migrating applications will assist you in collecting useful statistics for the time and effort needed to migrate your Delphi applications to Unicode.
The tool reviews your code and tells you where and what you will most likely have to change. This will at least give you an estimate of how many lines need to be reviewed.
But note that the tool does not know if any of your lines of code really needs to be modified or replaced at all. It does tell you have at least some number of lines you should take a quick glance at.
It could be as little as 0 changes needed. It really all depends on how you are using Strings and Chars in your application.
The result is Delphi is 100% Unicode. The migration is easy, the Visual Component Library (VCL) and the compiler handle many things.
The tool lists all used units, including Delphi units (and how many times each one was used), number of files, number of lines, and number of instances of String, Read, Write, SizeOf, etc.
One of the most relevant changes since version 2009 is that String types are now based on Unicode. Previously based on the ANSI standard, the AnsiString and WideString types still work the same way, except regarding their data size in bytes.
Unicode changes, in short:
No changes were applied to:
Operations that do not depend on character size:
Operations involving the character size (measured in bytes) may require a few changes. Nothing too complicated, but here’s a tip: pay special attention to code in which you:
Items 1 and 2 do not apply to Unicode, because in Unicode the Sizeof (Char) is 2 bytes and the size of a string is twice as big as the number of bytes. Besides, the code that reads and saves files must understand the right number of bytes to perform those operations, for a character is no longer represented as 1 byte.
As you can see, the Unicode migrating is very easy. The benefit of having Unicode support allows Delphi developers to distribute their applications worldwide!
Migrating Data Access (FireDAC)
If your application connects to a database or works with data, then you really need to look at FireDAC. FireDAC is a fantastic data access framework that supports a large variety of databases and has incredible in-memory features as well. It is based on the model that the BDE established, but much more robust and lightweight.
Move from MIDAS (DCOM) to DataSnap
DataSnap (previously known as MIDAS) is a DCOM-based software technology that enables RAD creation of multi-tier database applications. DataSnap components approach allows Embarcadero software development tools such as Delphi or C++Builder to create data broker/client applications with TCP/IP, DCOM, HTTP or even SOAP transport protocols. The TCP and HTTP transport are implemented using respectively a server side service and an ISAPI dll that act as proxies for the DCOM server.
The first release (then known as MIDAS) appeared in Delphi version 3. The name was changed to DataSnap in version 6.
For those of you looking to convert old Midas remote provider based applications to the new DataSnap Rest remote dataset based approach, this may be one of the hardest functionalities to convert/migrate in old Delphi/C++Builder applications.” But David I has a blog post with these four resources that will help you migrate your legacy DCOM based DataSnap servers all the way up to the new Delphi 10.1 Berlin:
CodeRage Webinar videos and white papers also exist to help you to move from Midas (DCOM) to Datasnap.
Mida - Convert VCL to FireMonkey
When you have the need to target multi-device platforms (Win32, Win64, Mac OS X, iOS and Android), you will be able to leverage your existing VCL Windows Applications, and create multi-device, true native apps.
The Mida –VCL to FireMonkey Convertor tool will help you to convert your VCL apps to FM apps. The Mida Converter is a third-party IDE extension that automates some aspects of migrating VCL applications to FireMonkey.
The Mida Converter is an application that can take your existing Delphi VCL apps which have legacy code in them and convert the code and the VCL so that it becomes a Firemonkey app.
You can configure the Mida tool to change properties like .caption to .text. It will even convert TImage components and their contents from VCL to Firemonkey.
Might be nice to have the Mida Converter in your tool chest even if you don’t have any legacy code you could use it convert VCL demos, code snippets, and maybe even components to work in Firemonkey for you.
You can look at the Mida Converter Home Page and try it out for yourself.
You can migrate VCL applications to FireMonkey either manually or using the third-party Mida Converter IDE extension.
Migrating VCL Applications to FireMonkey Manually
Although there is no direct migration path between the VCL and FireMonkey, you can:
This method is essentially refactoring your VCL application so that it becomes a FireMonkey application. See Commonly Encountered Differences Between the VCL and FireMonkeyfor a list of issues that you might find during the conversion.
Mida 5.5 supports Delphi 10.1 Berlin and C++Builder 10.1 Berlin
Here are a list of additional resources, papers and videos to help migrate your legacy Delphi and C++ Builder applications to the current 10.1 Berlin version.
Most, if not all of them you can get from the main new Migration and Upgrade Center Web Site.
Here we have the resources grouped by the main focus areas of this webinar; Unicode, Migrations of Database and Middleware and Migrating 3rd party Components and Libraries.
Migrating Delphi - Case Studies Video replay
Migrations of Database and Middleware
Migrating 3rd Party Components / Libraries
Announcing the CodeRage XI Call for Papers! CodeRage is the largest, free online conference of the year from Embarcadero Technologies.
This year our annual online CodeRage conference goes to 11 with “Productivity, Platforms and Performance.” The CodeRage XI Online Developer Conference takes place Tuesday, Wednesday and Thursday, November 15-17, 2016. That is three full days of content for developers like you. This is your chance to show off your rockstar skills to your peers with a session at CodeRage.
The conference will cover development topics using our products, related technologies and the Object Pascal and C++ programming languages. We are planning two tracks: One for Delphi and one for C++Builder. Sessions can be specific to one or both tracks.
Topic areas of interest for submissions:
We are doing a few things differently this year. Our standard session is 30-45 minutes with 10-15 minute Q&A (hour total tops). You can submit a double session in two parts, or twice as long for a really deep dive. We also have lightning talks (10 minutes + 5 Q&A) and quick ideas (5 minutes with no Q&A). We will have the lightning talks back-to-back on the schedule, and the quick ideas will be spread through the conference between session.
You are invited to submit abstracts for consideration as a speaker. You are encouraged to consider multiple session types. You can do the same topics as both a Quick Idea and a Standard Session. Each session also needs an accompanying blog post or web page where attendees can get more information, source code, slides, etc.
Please submit an abstract for each of your proposed presentations. Please read all information carefully.
Abstracts will be reviewed by a panel of Embarcadero employees and we will notify submitters within 2 weeks of the abstract submission regarding the status of proposals. Available time slots fill up quick, so submit your topics ASAP.
Thank you for your interest. We are thrilled to host these CodeRage events each year and the participation of our community is vital to our success. We look forward to seeing your ideas!
10月にはいりまして、秋の始まりを感じます。秋の夜長にDelphi / C++Builder Starter Editionでサンプルプログラムを参考に、プログラムのお勉強や、アプリ開発に挑戦などいかがでしょうか。
A lot of people commented that their compile times were similar, but a few questioned the code, specifically it's use of generics. Now it didn't have any generics, so I decided to make a new video.
This video is compiling the Spring4D Framework. If you aren't familiar with Spring4D you really should be. It is an incredibly useful utility framework full of all sorts of amazing features. I picked it for two reasons: most all modern Delphi developers are using it (or should be) making it very real world, And most importantly, it is full of generics. Not just simple generics, it really pushes the limits of generics, which in turn pushes the limits of the compiler.
In this video I build Spring4D first with Delphi 10.0 Seattle Update 1, and then in the same Parallels Virtual machine I build it with Delphi 10.1 Berlin Update 1. Berlin includes a number of compiler improvements, specifically around generics, so it should be interesting to see how these perform.
Did you knows that tight coupling is bad for code? Join Nick Hodges as he takes a deep dive into what Connascence is -- a taxonomy for measuring coupling. In this webinar, you'll discover how to measure coupling and how to reduce it in your applications. Reducing coupling is an important step towards making your application more testable, reducing bugs, and supporting the best practices that power agile development.
Nick Hodges has been a part of the Delphi community from the very beginning. He is an original Delphi 1 beta tester, a former member of TeamB, an Advisory Board member for the annual Borland Conference, a frequent conference speaker, a blogger and author of numerous articles on a wide range of Delphi topics. Nick is a former Delphi Product Manager and Delphi R&D Team Manager. He lives with his family in Gilbertsville, PA. He is now the Director of Product Management for Embarcadero.
There are two sessions for this webinar, register once and attend either session.
Check out Nick's Books & blog
This iotlivinglab session in Amsterdam DataLab was very inspiring. Combining data available from the cloud with information received from IoT sensors by a mobile device opens a lot of possibilities to create new generation user experience.
It was great to see IoT enthusiasts brainstorming about IoT-related initiatives that can benefit citizens of Amsterdam and all people in general.
Paul and Casper explained the idea of the workshop and how to kickstart an IoT initiative.
Very quickly six 3-4 persons ad hoc teams were created and ideas started to flourish.
The idea of our team was about using gamification strategies in engaging citizens and tourists for smart city crowd management. With C++Builder or Delphi very quickly you can get from an idea to a working beacon-enabled app that can be natively built from one source code to Android, iOS and other platforms.
Amsterdam DataLab is a nice working "hub" environment using and maintaining open datasets related to Amsterdam that any app or system can integrate into. Under fixed URLs there are daily updated JSON data sets that can be used in third-party apps to display information. The list of URLs are available at data.amsterdam.nl and include informations about different points of interest in Amsterdam.
It should be relatively easy to integrate this JSON into a Delphi app... ;-)
It is a sunny Saturday in Amsterdam today. I could not miss an opportunity to learn about for other people are doing with mobile, web, cloud and iot technologies out there. Right now it is lunch break at the DGD DevFest 2016 conference organised by The Dutch Android Use Group. It is a pretty big conference with three simultaneous tracks on mobile, cloud and web. The environment of Amsterdam Science Park is very conductive to this kind of gathering of techies with all kinds of backgrounds. The age average is pretty low and again it is all about choices because you cannot be on all sessions at the same time...
The conference started from the keynote with just the explanation of logistics, tracks, sponsors and the usual welcome. It was great to be back in a kind of a university lecture room with steep rows of chairs full of energy charged audience.
My main interest is Delphi programming. I'm not going to hear a lot about Delphi today, but the most closely related subject for starters was to go into the mobile track and listen about the benefits of code generation in your mobile projects.
The "mobile" track is in "Catwoman" lecture room. There could be a bit of confusion what "code generation" means in different contexts. Most of the time it refers to generating binary executable code from source which is typically the job of a compiler, but this session was about generating parts of your project source code. That could be driven through an external configuration file or through annotations (custom attributes in Delphi) directly in the source code.
Here is a nice snippet that shows that not only you do not need to write certain pieces of code, but the generated code is also much cleaner. Some of the code generation tools discussed were JavaPoet, Dagger, AutoValue, Requery, SQLDelight and ButterKnife. That was an interesting session by Dylan Trost.
The next session was in mobile track in the "Thor" room. It was run by Johan Stokking from The Things Network in Amsterdam. What Johan did in the course of the last year is incredible. He is really getting there in his mission "to build a decentralised, open and crowd sourced network that is owned and operated by its users". There are hundreds of user communities in different places around the world that are implementing open LoRa networks that connects to hundreds of thousands sensors. Using an unlicensed radio spectrum it is possible to achieve efficient bi-directional communication with sensors within few kilometers from a base station and no pairing is needed. Just pure radio.
LoRa is similar to Bluetooth LE but it has much bigger range. Very exciting session. IoT is big and will be bigger. This technology is in this critical infancy stage that everybody knows that that it is it, but there is no dominant technology or market player yet. I'm curious about the session by Johan about "The Things Network" in a year from now.
The session on why there is so much buzz about "cli" started from getting the audience more energetic. Everybody stand up! Ten sit ups! OK! Let's go!
There is nothing like live coding at the conference and this session was really impressive. Tracy was doing some live Typescript in Atom and was generating and updating the complete web sites in just few keystrokes.
Now back to the mobile track.
The last session I could attend was the presentation by Bas Knopper on evolutionary algorithms. Bas did a great job of mesmerising the whole audience, showed a little movie how NASA used generic algorithms to design a tiny satellite antenna and showed the "travelling salesman" solution using Go language that seems to be getting a lot of popularity among Java programmers.
I'm looking forward to the next year for the another great GDG DevFest conference in the Netherlands!
The Embarcadero Conference 2016 Brazil is now very close, so I thought about sharing some facts about the event.
1) That event is the largest Delphi and C++ Builder developers conference in the world, we have around 500 attendees every year, and we are expecting more for the next October 26th.
2) We are growing in content and space if compared with all the previous years: 7 tracks, 48+ speeches, 50+ hours of valuable content, everything in one day!
3) There are attendees from the entire country, of every state of the federation. In case you don’t know too much about Brazil, we are a continental country, so the distance here really matters: https://en.wikipedia.org/wiki/Brazil.
4) We used to have also visitors from neighbor countries, let’s see who will shows up this year… ;-)
5) We have nowadays more than 15 brazilian MVPs in the Embarcadero MVP program, and all of them will talk in the event.
6) Talking about MVPs, Jim McKeeth, the MVP Program Manager will also be here, doing the Opening Keynote!
With RAD Studio Berlin, we provide a guided tour to help you get started building your first multi-device application.
The guided tour is accessible from the Welcome Page.
For more info on the Guided Tours, click here.
[DownloadButton Product='Delphi' Caption='Download the Delphi 10.1 Berlin Trial today!']
I just got an email from the Microsoft developer program announcing "Desktop Bridge apps available in the Windows Store, Yours could be next!"
What's the big deal? The Desktop Bridge (previously known as "Project Centennial") allow native Windows API apps to be bundled as an APPX to get all the advantages of the Universal Windows Platform (UWP). This means you get all the performance of native Win32 & Win64 development, full use of the VCL or FMX, combined with the ability to distribute, update and monetize your app through the Windows Store.
The first wave of Desktop Bridge apps entered the store last month. They were enabled by Windows 10 Anniversary Edition, which added the necessary support. Anniversary Edition was a huge update to Windows 10, and rolled out slowly over a number of weeks. I had two machines that I was letting normal automatic updates run, and they just updated to Anniversary Edition a couple weeks ago, so it should be available everywhere.
Marco Cantu has a blog post about using the Desktop Bridge with your RAD Studio, Delphi and C++Builder Berlin apps, and he also covered it in his Berlin Update 1 Windows 10 webinar. Update 2 (due out soon) will include even more support around the Desktop Bridge. So if you are a Windows developer make sure you are running the latest Berlin Update 1, and have an active Update Subscription so you can take full advantage of the Windows Store app support!
[BuyButton Product='Delphi' Caption='Get Delphi Berlin Update 1']
Последние недели не удавалось публиковать посты так часто, как хотелось бы. За это время появилось достаточно много заслуживающих внимания публикаций, как на русском, так и на других языках.
Предлагаю вашему вниманию краткий обзор того, что можно было бы почитать про RAD Studio, C++, Delphi и другие продукты Embarcadero.
Для начала, о прошедших вебинарах. Записи трансляций и исходные тексты доступны для просмотра и скачивания. Первый - "Clang компилятор, синтаксис С++11 или Что нового в C++Builder 10.1 Berlin" - рассказывал о новшествах, вошедших в последний релиз Update 1, и преимуществах Clang-компилятора, поддерживающего синтаксис C++11. Запись доступна для просмотра на YouTube https://youtu.be/vmy5Z61t_Vg
Слушателям вебинара "Разработка WEB-ориентированных систем на RAD Server" не повезло: во время трансляции возникли спонтанные технические проблемы. Тем не менее, на YouTube - канале Embarcadero Russia доступна полная запись вебинара https://youtu.be/GDurI2Vie10, а исходные тексты примеров AngularJS и RAD Server EMSNotes можно скачать на GitHub https://github.com/jtierneyemb/EMSNotesNg
Для русскоязычных разработчиков есть приятная новость: опять заработал блог-агрегатор DelphiFeeds.ru: http://delphifeeds2.ru/ на котором собираются сообщения из разных блогов, посвященных Delphi, RAD Studio и другим продуктам Embarcadero для разработки ПО. Из последних мое внимание привлекли следующие публикации: Delphi. Битовые операции и фильтр Блума. Вступление Станислава Пантелеева и App Tethering в Delphi 10.1 Berlin Владислава Баженова.
Еще один примечательный пост привлек внимание на сайте ХабраХабр.
Статья Выбор СУБД для мобильного Delphi-приложения содержит полезную информацию, изложенную в объективной манере, и вызвала большой интерес на сайте.
И конечно, огромное число полезнейших публикаций поставляет интернациональное сообщество пользователей Embarcadero на сайте http://community.embarcadero.com и в других социальных сетях. Большинство публикаций на английском, но есть на немецком, португальском, японском и др. языках.
InterBase уже был темой предыдущей статьи, но у некоторых пользователей, перешедших на Windows 10 Aniversary Update, могли возникнуть вопросы при подключении приложений к серверу InterBase. В этой статье InterBase and Windows 10 Anniversary Update содержится рецепт "правильной" настройки для надежной работы соединений.
Delphi - это самый быстрый в мире компилятор! В публикации Джима МакКис (Jim MCKEETH) есть весьма наглядное подтверждение этому - ссылка на видео, как Delphi компилирует миллион (!!!) строк исходного кода. Delphi 10.1 Berlin Update 1 содержит ряд улучшений компилятора, поэтому здесь вы также найдете сравнение скорости компиляции Berlin и Seattle, особенно при массивном применении Generics в коде программ. Статья Compile Time and Generics
Многие компании и разработчики уже давно понимают, что пришла пора обновлять свои средства разработки Embarcadero до последних версий, например, Berlin. Для тех, кто долгое время решал свои задачи на "старых" вариантах Delphi или C++Builder, и собирается мигрировать свои системы на Berlin, как можно более плавно, мы подготовили специальный вебинар, Центр миграции и Обновления, а также ряд инструментов. Подробности здесь: Migrating Delphi - Case Studies; September 21 Webinar. Тем, кто хочет понять, не устарела ли VCL, что "лучше" - VCL или FMX, на чем следует разрабатывать новые приложения, предлагается специальный пост FireMonkey vs. VCL. В ноябре-декабре мы рассмотрим подробности по этой теме на русском языке.
Без сомнения, многие читали замечательную книгу Ника Ходжеса (Nick Hodges) "Coding in Delphi". Некоторое время назад мы бесплатно раздавали ее нашим покупателям. Ник вернулся в компанию и теперь занял соответствующее место в Embarcadero. Это очень добрая новость для всех, кто разрабатывает на RAD Studio. Он продолжает писать прекрасные технические статьи и проводить вебинары. Например, 13 октября он будет вести вебинар Connascence: How to Measure Coupling with Nick Hodges, посвященный распространенной проблеме программирования - чрезмерной связанности кода.
Я уверен, что вы знаете, что редакции Delphi Starter и C++Builder Starter стали бесплатными. Они имеют ограниченные возможности, но несмотря на это, посмотрите, что наши немецкие коллеги сумели сделать на Delphi Starter: программа управления аэропортом
В октябре-ноябре состоится очередная онлайн-конференция Embarcadero. Приглашаем всех присоединиться к ней в качестве слушателей. Это интересно, полезно и бесплатно.
Welcome to the first blog post in the ‘Learning to program with C++Builder’ series - a set of five articles taking you from knowing nothing about C++ to writing a real-world, useful application.
I’m David Millington, the C++Builder Product Manager, and in parallel Pawel Glowacki is writing the same series and same app in Delphi. We may have some cross-language rivalry here ;) In the coming weeks, Pawel and I are going to publish weekly blog posts taking you step by step through programming in our respective languages, with Delphi and C++Builder. We’ll be taking you through from the very beginning, assuming you know no Delphi or C++ at all, and show you how to build a real-world, useful application - we’re currently thinking a scientific calculator, because it demonstrates UI, UI and logic separation, and many useful classes like stacks and utility methods, ie is a great overview of many areas you need to know about.
The really neat thing is that you can use both languages together in one natively compiled application, something we won’t show in this series but is one of the amazing integrations our tooling offers.
Today’s post is an introduction and will show you how to install the Starter edition of C++Builder - it's available at 100% off, ie $0, see below for more information about Starter - and then next week we’ll dive into code. We are assuming that you know some programming basics - we’re not going to explain what a class is, for example, but instead will show how to write and use one in C++.
If you are
this series is for you.
As much as possible we will try to synchronize topics and content, so you could even switch from one track to another. It will also be very interesting to see the same application developed in two languages, written the “Delphi way” and the “C++ way.”
C++Builder is a particularly powerful C++ platform, because not only does it give you C++ (of course), but it includes a massive variety of libraries and frameworks that other C++ tooling does not. This includes tools for writing cross-platform user interfaces, including using native controls; database access for several dozen databases in a very clean and powerful library; REST, JSON and other web frameworks; and more. The libraries and frameworks are fast to use - we find that users who know our tooling can achieve polished and complete applications in fractions of the time it takes using other IDEs, whether that be C++ or other languages like C#. The end result is you can build an application once, including designing its UI for multiple platforms, and deploy it - natively compiled - to Windows, iOS, Android, and MacOS, fast. Linux is coming in the next release too.
So let’s get started! Today’s post is an introduction to the series, and shows you how to install C++Builder Starter. Starter is available at 100% off - ie for $0 - right now. The following four posts over the next few weeks will introduce you to the IDE and to C++ itself, and then go on to develop a real-world, cross-platform, useful application.
Let's install C++Builder Starter. Starter is free - go download it now!
Important note: The 10.1 Berlin Starter version does not co-exist with any other edition (SKU) of 10.1 Berlin. Ie, if you have Delphi 10.1 Berlin Pro, you cannot install 10.1 Berlin Starter. On the other hand, if you have 10.0 Seattle, ie another version, they co-exist fine. It's just that Starter Berlin doesn't co-install with AnythingElse Berlin. If you have, say, Delphi Berlin Pro (or Starter) already installed, install C++Builder Starter on another PC or in a virtual machine. If you want both, you can always download the RAD Studio trial instead - it includes both C++Builder and Delphi.
When you visit that link, you will be asked to create an EDN account if you haven't already got one. EDN is the Embarcadero Developer Network. Go ahead and fill in the info, or if you already have an account, click the Login text in the middle right to just enter your email and password.
Once done, you'll get a download automatically starting, and a notice that you've been sent an email with your license key.
and if you check your email, you'll see something like this (with my key redacted in yellow.)
So, you have the download and a license key. Run the installer:
Agree to the license agreement:
(You can ignore the Options button; there's nothing there you need to change.)
Click Next, and on the next screen select that you already have a serial number (you do; this is the key that was in your email):
When you click Next, you might see a regular install progress window for a few seconds, but pretty soon you'll be asked for the serial key in a popup dialog. Enter it in the top section. You don't need to worry about the rest of the window (EDN login details), just the license key.
...and click Register.
You'll get the install progress window for a while...
Right now, it's installing the IDE shell. (In fact, after this bit completes you'll even be able to run and use the IDE as a text editor. It just won't have Delphi or C++Builder living inside it - that comes in a moment.)
At some point, Windows will prompt you with a firewall question, saying BDS.exe wants to access the network. It's important you click the checkboxes to allow this. Starter is ok, but other editions use the network for, for example, communicating with debuggers. If you don't enable this then you might find things don't work correctly.
Pretty soon, you'll be greated with this really pretty window. This is where you select the "personalities" and platforms that live in the IDE. Since you've downloaded C++Builder Starter, there's only one - C++ for Win32. (The other versions have many more platforms, like iOS, Android, Win64, macOS, and of course possibly Delphi as well as C++.) Click Continue.
On the next page, you can click through, but I'd recommend you select to install samples and help. The samples are useful demo programs we ship to demonstrate various features, libraries, etc. The help gives you a language reference, information about the various libraries and classes, the various parts of the IDE, etc.
Then it will install. This should go by very quickly - the installer you're seeing is known as the GetIt Feature Installer, and it uses GetIt, our package manager. It's much faster than the old installer.
Soon, you will see another dialog to install the Windows SDK. This is a Microsoft redistributable:
However, you don't need to install everything it suggests. If you want, you can install just the Windows Software Development Kit:
This might take a while. Sorry. It's not ours.
And then, oh happy day...
Success! START WORKING, now that's a good button to click.
And in a moment, you'll have the IDE!
Congratulations! You're installed, and ready for next week's post digging into the IDE.
What is Starter Edition?
So what is Starter Edition after all? Is it free? Can it be used commercially? Can I use it as a student?
Put simply, yes (with caveats) for all three.
Starter is intended to get people started with Delphi or C++Builder, and that can be either getting started with programming in general - such as a student - or for starting something else, such as writing software for your startup company. It is a cut-down version of the Professional version and it contains only Windows 32-bit compilation. That’s enough to learn to program, or to write a saleable Windows program or a almost-complete mobile application (where you buy Pro + Mobile to finish and build for Android or iOS.) If you’re a startup, you can do almost all your development for no cost at all.
The only license restriction is based on revenue. This isn’t legal advice - please read the EULA - but roughly speaking, if you make enough money that you could buy Pro, we ask that you do.
That’s why we say Starter is to help you get started. If you’re using it and start making money, then please buy a copy; if you aren’t, it remains free. Either way we’re very glad you’re using our products, and this series of blogs is a great resource to get you started.
See you next week!
Wir sind wieder unterwegs. Und zwar am 1. November in Hamburg, am 4. November in Mannheim und am 15. November in Zürich/CH.
Volker Hillmann (adecc-Systemhaus) und ich präsentieren die Neuerungen im RAD Studio 10.1 Berlin.
Eine völlig neue Installationsroutine ermöglicht es Ihnen, genau so viel oder so wenig zu installieren, wie Sie möchten - und damit die Startzeit auf wenige Minuten zu reduzieren! Die geräteübergreifende Entwicklung wurde durch den FireUI App Preview erweitert. Sie erhalten so eine Vorschau Ihrer Formulare auf jedem beliebigen Gerät (Desktop oder Mobile). Damit Sie das Internet of Things (IoT) noch effizienter und schneller in Ihre Apps einbinden können, erhalten Sie mit der neuen Version einfach zu handhabende Tools und Bibliotheken existierender APIs.
Das alles und noch viel mehr wird Ihnen Matthias Eißing (Delphi) und Volker Hillmann vom adecc-Systemhaus (C++Builder) live an einem Tag vorstellen. Natürlich haben Sie in den Pausen Zeit, Ihre Fragen zu stellen und sich untereinander zu vernetzen. Wir laden Sie herzlich ein, dabei zu sein. Für die Tagungspauschale erheben wir einen Beitrag von 45 EUR bzw 50 CHF, damit wird den ganzen Tag für Ihr Wohl gesorgt.
Nähere Informationen zu den Veranstaltungen (Agenda, Ort, Kosten) und die Anmeldung finden Sie hier:
Hamburg / 1. November
Mannheim / 4. November
Zürich / 15. November
Welcome to the second blog post in the ‘Learning to program with C++Builder’ series - a set of five articles taking you from knowing nothing about C++ to writing a real-world, useful application. The first entry covered installing C++Builder Starter. Now it’s time to start using it! Today, we’ll cover the tools you use, creating your first app, and basic debugging.
Understanding the IDE
C++Builder, the product, is what we call the IDE (Integrated Development Environment), which is the program you see when you start C++Builder. An IDE has three general areas or things that it helps you do:
The code editor - and because C++Builder is great for UI programming, the form designer fits into this area too - is where you write code, a text editor with special enhancements for programming. When you have a form (that is, a window you are designing), one tab of the code editor lets you edit the form.
The compiler is what converts the code into a program that Windows can run.
The debugger lets you run the program and see what it’s doing. You can pause it, look at various parts of it, run through your code step by step, and so forth, all to understand what your code is doing and find the cause of any unexpected behaviour - that is, bugs.
All three of these are integrated together and accompanied by a number of dockable tool windows, other tools, etc. You don’t even need to think of these are separate things, more as just different actions you do: “now I’m writing code”, “now I’m running my program”.
Typically, you want to use more than one single source code file to create your application. A project is how the IDE groups together multiple source code files into one app, and includes other information, things like which platform you’re compiling for, or ‘targeting’, such as Windows or Mac, if when you compile you add in extra information for the debugger so it can see more about your app’s internals, etc.
When you create a new project the IDE creates several files for you. Let's have a look at these files.
The first thing to do is create a new project. Start C++Builder, go to the File menu, and choose New > “Multi-Device Application - C++”. This create a new FireMonkey project, one that can be used on Windows, iOS, Android, etc. (Note that Starter only supports Windows 32-bit, but you can open a project created by Starter with Pro or higher, and target, say, iOS.) In the dialog that appears, select “Blank application” and click OK.
You now have a project, and you’ll see this in the Project Manager, a window that by default is docked on the right hand side of the IDE.
Before going any further, click the Save All button. You will be prompted to save several files. Put them all in the same folder. You’ll notice they are files listed in the Project Manager.
So what are these files? Open up the folder where you saved everything and have a look. For me, many of these are labeled ‘Project2’ - for you, they might have a different number. Most likely, yours will be Project1.
This app will become our calculator, and those default names are not very good. We could have saved the files with new names, but I wanted to explain what each one is first - project file, main file, precompiled header, form and unit. But let’s rename these.
In the project manager, right-click the bold Project2 node, and select Rename. Type in CppSuperCalculator. You’ll notice that the precompiled header and main file are renamed too - that’s because the IDE manages those and keeps them in sync. Then rename the unit - right-click it, Rename, and call it ‘uFormCalculator.cpp’. Notice that the unit has a + symbol next to it so you can see all three files that together form the unit - you can rename any one of these and the others will automatically rename to match.
Click Save All and check back in Explorer. The files will have been renamed.
You might see some other files - ‘*.local’, a ‘__history’ folder, etc - ignore these. The IDE uses them.
Building the project
Building is compiling - going from all the text source code to a final EXE file. You can build from either the Project menu, or by right-click the project and selecting Build. (Make is like a light build - it compiles only the bits that changed since last time. Clean wipes everything, all the intermediate saved files, so you start compiling from a clean slate next time.)
Do this, and you’ll see a window appear telling you it built successfully.
When you go back into Explorer, you’ll notice some new files and folders. There is now ‘CppSuperCalculator.res’ - this contains the program icon and version. There is also a Win32 folder, and inside that a Debug folder. These are where the temporary files are saved while building, and the final EXE is located. Win32 is the target platform (the only one available for Starter) and Debug is the build configuration - you can see this node in the Project Manager; there are two configurations by default, Debug and Release. (Debug does less optimization and includes information helpful for the debugger to see what’s going on inside your program; Release does more optimization and less debug info. You use Debug while developing, and Release for the app you give your users.)
Going by file extensions, the .#01 (and other number) files and the .pch file are to do with precompiled headers - something that doesn’t matter now. The .obj files are object files, which are compiled versions of each source code file or unit. The .map and .tds files are used by the debugger, and the .exe file is your final program!
Running and debugging
Don’t run this EXE (although you can) - let’s make the IDE run it.
Back in the IDE, there are two toolbar buttons, one a large green arrow and one the same green arrow but smaller, over a program.
These are Run Without Debugging and Run [implied, this means Run With Debugging]. (They are in the Run menu too.) Run Without Debugging just runs the program and doesn’t do any IDE / debugger magic; the most useful, and the one you’ll want to use every single time you run, is Run, which debugs as well. Go ahead and click it.
You will see the IDE change a couple of docked windows, and lots of messages appear in a window at the bottom. Then, you will see your application appear - a blank window, currently, but it’s your app!
Congratulations. Close the app by clicking its X button in its window, or in the IDE, click the red Program Reset button near the run buttons.
‘Programming is a mental art’, Pawel says in his Delphi version of this blog post, and he’s right. Debugging is part of it, and is the process of figuring out why your app is not doing what you want it to be doing. When you’re doing that, the debugger is a very useful tool: it lets you examine the internal of your program to see what it’s actually doing, and step through code to see why it does particular things. You can change your program too: change the values of variables, call methods, right down to changing the values in processor registers if you really want to.
In order to demonstrate this, we’re going to add some more code to what is currently a very minimal project. Make sure the blank form is visible in the center of the IDE (if it isn’t, in the Project Manager double-click uFormCalculator, then in the center part, the code, editor, click the Design tab at the bottom. You will see the form designer appear: mostly white, with a grey blank form in the middle. This corresponds to the blank grey window when you ran the app.) In the bottom right part of the IDE, below the Project Manager, you will see the Tool Palette, and this contains lots of reusable components - visible controls, like buttons or checkboxes, and non-visual controls as well which perform other actions. (Make sure your app isn’t running; the IDE has different layouts when debugging vs coding.)
Expand the Standard item, and double-click TButton. A button will appear in the middle of our form. (Note you can drag and drop a control to the form too.)
Now, double-click on the button. This creates an event handler for when the button is clicked, that is, a method that is called when the button is clicked, and moves to the code editor. The method has been generated for you. Let’s add a line to show a message dialog - change it so it looks like this:
Note you need to get this exactly right. The L prefix to the string says it's a Unicode string (specifically, this is actually a string literal using wide characters, an array of wchar_t); the " marks have to be as they are on the keyboard, not Word-style quotes that change to point slightly towards the text they enclose; you need a semicolon at the end. If you make an error here, when you click run, you will get an error message in the Messages window at the bottom of the dialog.
Click Run, and your app will run. Now click the button, and you’ll see the message:
So far so good. Go back to the code editor, and notice that the ‘ShowMessage’ line has a blue dot next to it. That means the EXE contains code relating to that line.
Click the dot, and it will turn red and highlight the line. This is called a breakpoint, and means that whenever the application reaches that line of code, it will pause.
Click the button again, and this time instead of showing the message, the IDE will bring itself to the front. The red dot now has a blue arrow over it - that indicates the current line.
The program is now paused in the debugger. You can do several things - run it, so it continues; step line by line, so it executes the ShowMessage line but stops at the next, and so forth. Have a look at the other buttons on the toolbar next to the Run buttons, and also look in the View menu, Debug Windows, at all the things you can see.
That’s it for this week. We’ve created our first project, seen what a project contains, seen how the IDE manages some parts of it, run it, and debugged it. If you want to explore before next week, experiment with the debug windows, with the Step Over button on the toolbar near the Run buttons, with the breakpoint properties (if you right-click one), with the call stack window which shows the ‘stack’ of which method has called what to get you where you are now. Next week we’ll continue this app and start turning it into a real, useful calculator.
RAD Studio / Delphi / C++ Builder 10.1 Berlin がリリースされたのが今年2016年の4月でした。既にに6か月が過ぎようとしているのですが、この 10.1 Berlin 向けのボーナス スタイルパックが提供されています。「スタイル」は、簡単な設定を行うだけでUIの印象を大きく変えることができる便利な機能です。
Getting Started Building Mobile Applications for iOS and Android Introduction in this video.