Soletta DeCAL für Delphi

Tool-Update für Delphi XE 11

Soletta DeCAL für Delphi 11 "Alexandria"

Soletta DeCAL war eine im Jahr 2000 angesagte Programmbibliothek für Datenstrukturen und Algorithmen, die in vielen kommerziellen Projekten verwendet wurde. DeCAL steht für “Delphi Container and Algorithm Library”. Das Paket wurde von der Firma Soletta kommerziell vermarktet, um das Jahr 2000 jedoch als Quellcode freigegeben. Die Idee basierte auf Stepanov's STL (Standard Template Library).

DeCAL machte sich die Eigenschaft der “array of const” zunutze, die der Compiler transparent in TVariant-Datentypen umwandelte. TVariant-Datentypen können jeden unterstützten, atomaren Wert (plus Zeichenketten vom Typ AnsiString) enthalten. Die Containerauswahl war vollständig und ließ keine Wünsche offen: Maps, Arrays, Lists, HashMaps/Lists und Sets wurden angeboten und mit Iteratoren versehen. Ein weiterer, nicht zu unterschätzender Vorteil war die Dokumentation im Format PDF, die die meisten Funktionen mit anschaulichen Beispielen erklärte und nicht unerheblich zum Erfolg von DeCAL beitrug.

Die Einführung von Unicode als Standard-Stringformat in Delphi 2009 erwies sich jedoch als “breaking change”, da nunmehr Zeichenketten nicht mehr aus 8-bit-Zeichen einer Codepage, sondern als 16-bit Unicode Token codiert wurden. Nach der Einführung von Collections wurde DeCAL schließlich vollständig obsolet.

Ich verwende aber DeCAL in einigen alten Projekten, die ich an Windows 10/11 anpassen wollte. Anstatt meinen Code vollständig an Delphi Collections anzupassen, entschied ich mich für den steinigeren Weg, das DeCAL Paket zu korrigieren.

Die Fixes im Einzelnen:

  • Einführung von UnicodeString ("vtUnicodeString")
  • Stringbehandlung von UnicodeStrings im Persistenzmodul SuperStream korrigiert

Projekteigenschaften

Lizenz Mozilla Public License 2.0
Target Platforms Win32, Win64
Supported Delphi Versions Delphi 11 "Alexandria"
Hinweis:

Diese Bibliothek ist nicht für den Produktiveinsatz bei neuen Softwareprojekten gedacht, da die Testabdeckung dafür nicht ausreicht. Ich hoffe aber, dass irgendjemand mit diesem Update einer alten Software ohne weitere Codeänderungen neues Leben einhauchen kann.