Delphi / C++Builder 10.3.3でApple A12 Bionicチップを含むiOSデバイス向けのデバッグ実行時に発生する問題へのパッチをリリースしました。このパッチはQuality Portalで報告された次の問題を解決します。(read more)
An issue debugging on iOS devices containing an A12 chip has been resolved
We've just released a patch for Delphi and C++Builder 10.3.3 which resolves the following issues:
RSP-26709 Debugger 'freezes' on iPhone 11 Pro
RSP-25732 Can't debu...(read more)
A great tip from [WayBack] Hi, need help regarding Datasnap. How to know the name of the methods called by client in delphi datasnap server? – sujansiddhi – Google+ that I needed a few months ago:
Inside TDSAuthenticationManager.OnUserAuthorize, inspect the EventObject.MethodAlias property. (Obviously once the method is actually called you implicitly know the methodname.)
This was introduced in Delphi XE:
[Archive.is] DSAuth.TDSAuthenticationManager.OnUserAuthorize – XE API Documentation
[Archive.is] Authentication and Authorization – RAD Studio XE
今日のクールアプリセレクションは、Konstantinos Onoufriadis氏の「Tears of Ra（ラーの涙）」です。これは、エジプト風のスロットマシンアプリで、とても楽しくプレイできます。「Tears of Ra」は、Delphiで開発されており、Androidで利用できます。(read more)
Today’s CoolApps selection is Tears of Ra, by Konstantinos Onoufriadis. It is an Egyptian-themed slot machine app that is a lot of fun to play and explore. Tears of Ra was written and developed with Delphi and is available now on Android.
I've been in a rut for about the past six months. Not just a Delphi programming rut but a "life rut". What's worse, I knew I was in a rut and thought I was trying to get out of it only to realize I wasn't. Then this morning came and... I now know what I didn't know."I knew I was in a rut and thought I was trying to get out of it..."I was fascinated by a post in the Delphi Developer group on FaceBook written by a long-time VCL developer who is frustrated with making something work on an Android device. Admittedly, this person is not a GUI guy nor an OOP fundamentalist. I can totally relate to this. I have been using Delphi since it was Turbo Pascal 3. I am a traditional "top-down procedural" programmer who has been struggling to wrap my head around OOP fundamentals.One of the comments on this post stopped me dead in my tracks. It simply stated... "Put your login form in a TFrame" and gave a link to a GitHub repository of FMX Cross-Platform-Samples.https://github.com/FMXExpress/Cross-Platform-SamplesI've seen some of this FMXExpress stuff before but never knew about this GitHub repository. At the time of this writing there are 99 well organized Cross Platform Samples available. I've been looking for an excuse to rededicate myself to learning FMX cross application development in Delphi and this GitHub repository looks like the perfect spot for me to learn."I really don't know what GitHub is or how to use it."Now, I've heard of GitHub before and I've been to a few different GitHub repositories, but I really don't know what GitHub is or how to use it. This was the my first acknowledgement of YDKWYDK. So I jumped on lynda.com and looked for a course about GitHub and found this one called "Learning GitHub".About ten minutes into the course the instructor says "Projects allow you to visualize your work with Kanban-style boards." I've never heard of Kanban. What is Kanban? (More YDKWYDK)."What is Kanban?"I do another search within lynda.com and discoverd a course called "Stay Lean with Kanban".Wow, this Kanban stuff is really cool. In it's simplest form Kanban is a way to visualize and prioritize the workload. You visually see what you are doing and what needs to get done. You also eliminate waste by focusing on what's most important. This is done by limiting the work in progress.I'm about a third of the way through this tutorial and paused it to write this blog because of another YDKWYDK episode.As I was getting to understand this Kanban stuff it hit me. Why can't I use Kanban for my personal life?"Why can't I use Kanban for my personal life?"I can and I intend to do just that. There's a website for "Personal Kanban". There's also a book called "Personal Kanban: Mapping Work | Navigating Life".It's safe to say I have climbed out of my rut and I'm getting back at it. What a journey today has been...FB Delphi Developer > FMXExpress > GitHub > KanbanSemper Fi,Gunny Mike
Delphi / C++Builder / RAD Studio 10.3.3でAndroid サービスが正しく実行されない問題を修正するパッチをリリースしました。詳細は以下の通りです。(read more)
Delphi / RAD Studio 10.3.3でAndroid 64-bitアプリケーション向けデバッグの際に発生する問題の修正パッチをリリースしました。このパッチは以下の問題を修正します。(read more)
An issue where an Android service would not run has been fixed
We've just released a patch for RAD Studio 10.3.3 which resolves the following issue:
An issue that prevented an Android service running because it could not load its ...(read more)
Since Delphi got generic types, in the 2009 version, its runtime library (RTL) has a generic collections unit. The RTL however, still has the classic collections. Recently I got some requests about which is recommended to use, and while the discussion can go a bit deeper, I wanted to blog a high level overview.
Classic Container Classes
The most basic collection class in the RTL is the TList class (in the System.Classes unit), which represents a general list of pointers (or object references). The container classes (in the System.Contnrs unit) includes the following:
TObjectList, which is a TList for TObject references and includes ownership support
TComponentList, which adds to the ownership also the notification support all components have
TStack and TQueue with TObjectStack and TObjectQueue
Various bucket lists
When you are using these containers you often need to cast from the type of the objects you are managing to the fixed type the list supports. This introduced the possibility of errors and causes some runtime delay if you continuously check the type of the objects extracted from the list with dynamic casts (like "as"):
myList.Get(3) as TMyObject
Generic Collection Classes
Along with generic types in the language Delphi added a set of basic generic collections. These are defined in the System.Generics.Collections unit and offer a generic blueprint for containers tied to the specific data type you need. Generic collections include:
TList, a basic generic list including support for sorting and enumerations
TThreadList, a more thread-safe list with locking support
TQueue and TStack
TDictionary, a fairly powerful dictionary with customizable key and value types
TObjectList which has ownership support for can be used only for object types, similarly to the other following containers
TObjectQueue and TObjectStack
Advantages of Generic Collections
Generics collections offer the ability to define specific containers for given data types you need to use, and let the compiler check the data type compatibility, rather than doing the same at runtime. This results in cleaner and more readable code, more robust applications, and faster execution -- given the reduced need ot runtime checks:
myList: TList ;
myList.Get(3); // returns TMyObject
All of the new libraries and subsystems in Delphi use the new collections, for example FireMonkey leverages them a lot rather than using the traditional coding style.
Any Reason not to Use Generic Collections?
There are basically two reasons for not using the new collections. One is that if you have existing working code, you might not want to change it. Even more if the code is in a library (like VCL) changing it could cause incompatibility in code that uses the library.
The other reason is that generics in Delphi cause a significant code bloat, because for any data type used by the collection the class methods are replicated, even if almost identical. In very large applications, this has a negative effect on compile and link time and on executable side.
Additional Generic Collections
Finally, I want to mention that if you use generic collections heavily, you should consider those available in the Spring4D library, which extends what we have in the RTL. See the documentation at https://bitbucket.org/sglienke/spring4d/wiki/Collections
Again this is meant to be a short summary and I know I could have been more extensive and precise, hope it is helpful to some of the old developers not fully aware of our generic collections -- which was the goal of the blog post.
本日のクールアプリセレクションは、Rolf Eschenbach氏の「Sylt App für den Urlaub（バケーションアプリ）」です。このアプリセットは、バケーション情報のワンストップ・リソースで、役に立つツールや情報がいっぱい詰められています。FireDACとFMXコンポーネントを使ってDelphiによって構築されており、AndroidとiOSプラットフォームで利用できます。(read more)
We have found a severe issue with the TInAppPurchase component on Android 64-bit and here is a workaround you can apply directly to your code.(read more)