vložil Radek Červinka
3. května 2010 23:21
Nejsem velkým zastáncem velkých knihoven (snad kromě JCL), ale často se v takových knihovnách inspiruji, popř. je "kuchám", protože jsem přesvědčen, že nejlépe se člověk naučí programovat když se rýpe v cizím kódu. Ideálně v kvalitním kódu. A tím určitě DeHL je.
DeHL je knihovna užitečných tříd pro Delphi 2010+. Kromě některých zajímavých tříd jako BIGInteger implementace, generická serializace za pomocí RTTI jak do XML, tak do INI nebo binárních souborů, cca 20 generických kolekcí projekt především ukazuje jak takové věci psát (tím myslím serializaci atd.) za pomoci nového RTTI z Delphi 2010, popř. generických typů.
Mezi další zajímavosti patří např. typ Nullable (z příkladů DeHL - všimněte si, že Nullable je record):
type
Nullable<T> = record
…..
public
{ Constuctors }
constructor Create(const AValue: T);
{ Nulling }
property IsNull: Boolean read GetIsNull;
property Value: T read GetValue write SetValue;
property ValueOrDefault: T read GetValueOrDefault;
procedure MakeNull(); inline;
{ Value }
class operator Implicit(const AValue: Nullable<T>): T; inline;
class operator Implicit(const AValue: T): Nullable<T>; inline;
end;
procedure SumAnArray(const AArray: array of Integer): Nullable<Integer>;
var
Sum, X: Integer;
begin
{ Není žádný element, vrať NULL }
if Length(AArray) = 0 then
Result.MakeNull()
else
begin
Sum := 0;
for X in Array do
Sum := Sum + X;
{ vrat hodnotu! }
Result := Sum;
end;
end;
var
Sum: Nullable<Integer>;
begin
Sum := SumAnArray([1, 2, 3]);
if Sum.IsNull then
WriteLn('Pole má nula prvků!');
else
WriteLn('Součet je: ', Sum.Value);
end;
Takováto třída vám může pomoci např. konvertovat kód z .NET, kde string může být "" nebo null.
A takových zajímavých tříd je tam hodně.