Although Delphi supports Unicode with its WideString type and with many Unicode-aware runtime functions and classes, the user interface controls of Delphi’s VCL don’t currently support Unicode. CodeGear is planning to move the VCL to Unicode in the future, but if you want to build Unicode-aware applications with Delphi right now (which you probably should), you have to use third-party controls and components for your project.
Because it’s sometimes difficult and time-consuming to find out which Delphi third-party tools and libraries support Unicode and because we have some experience with this topic from porting SmartInspect to Unicode, here is a list of Unicode-aware Delphi components. This list isn’t complete and I would appreciate it if you could add any missing library or component by leaving a comment.
TntWare Unicode controls
This originally freely available component and library pack offers Unicode-aware versions of most Delphi standard UI controls and classes. This one is a must-have if you plan to port your application to Unicode. Whether you need a Unicode-ware TLabel, TEdit, TFileStream (file names!), TOpenDialog and so on, this component pack has it. There are multiple versions of this control pack out there and the official one is now maintained by TMS Software and can be obtained for a rather cheap fee of just EUR 30. Another version of this library with support for Unicode exceptions is freely available from mh-nexus:
- TMS Unicode Component Pack
- TNT Unicode Controls with support for Unicode exceptions
- Original website with acquisition announcement
Virtual Treeview component
One of the best free Delphi components out there is the well known Virtual Treeview component. One of the strengths of this tree and list view control is its flexibility as well as the great performance. Mike Lischke developed this control with Unicode in mind and it’s fully Unicode-aware. Mike also published UniCodeEditor, a Unicode aware memo control with support for syntax highlighting. Another Unicode-aware library from Mike is his Unicode library, a collection of useful classes and functions for developing Unicode-aware Delphi applications. This library also features a basic Unicode-aware regular expression class. Because the Unicode library is now part of JEDI, you should get the JEDI Code Library if you need this (see below).
JEDI Code Library
Although the JEDI Code Library is not fully Unicode-aware, it contains a very useful JclUnicode unit with many useful Unicode functions and classes. This unit is based on Mike Lischke’s Unicode library which is now maintained by the JEDI folks.
Unicode-aware SynEdit component
Besides the TNT Unicode Controls with support for Unicode exceptions, mh-nexus is also maintaining its own fork of SynEdit with full Unicode support, Unicode SynEdit. SynEdit is a popular memo control with syntax highlighting and other IDE-like features. Worth checking out.
EControl Syntax Editor SDK
Another syntax highlighting enabled source editor with Unicode support is the Syntax Editor SDK from EControl. Although I have no experience with this component, I had people recommend it to me and it looks like a powerful alternative to SynEdit.
TMPHexEditor hex editor Delphi component
The free hex editor component TMPHexEditor from mirkes.de supports displaying Unicode characters. It’s a great component even if you don’t need the Unicode support.
Sisulizer localization tool
The commercial Sisulizer localization tool supports Unicode. Sisulizer allows you to localize your Delphi application and contains a translation tool that you can redistribute to language translators.
Unicode libraries from The Delphi Inspiration
The Delphi Inspiration, a German vendor of Delphi libraries, offers some interesting and useful Unicode-aware libraries. One of these libraries, DIRegEx, is a complete Unicode-aware regular expression library for Delphi (it’s based on PCRE). Other Unicode-aware libraries from The Delphi Inspiration include an HTML parser library, an HTML label control, Unicode text reader and writer classes and a Unicode encoding library (based on libiconv). The libraries and classes are available for a small fee of EUR 25 – EUR 75.
SmartInspect Delphi logging
Of course, our own third-party product SmartInspect is fully Unicode-aware. SmartInspect is a logging tool that helps you to build more reliable and secure applications by offering a powerful and fast logging library and viewer application. We ported SmartInspect to Unicode last year and you can read about some of our experiences with this in this blog posting.
Delphi’s own WideStrUtils and WideStrings units
Although not a third-party library or control, I wanted to mention the not-so-well known WideStrUtils and WideStrings units that ship with Delphi itself. These units contain useful Unicode-aware functions and classes including a TWideStringList implementation. Additionally, the SysUtils unit contains overloaded versions of many functions that can handle WideStrings (like Trim, for example).
If I didn’t forget anything (which I probably did!), these are the main Unicode-aware Delphi libraries I know of. If you know any other component, library or third-party tool for Delphi that supports Unicode, please leave a comment.