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):
1type
2 Nullable<T> = record
3…..
4 public
5
6 constructor Create(const AValue: T);
7
8
9 property IsNull: Boolean read GetIsNull;
10 property Value: T read GetValue write SetValue;
11 property ValueOrDefault: T read GetValueOrDefault;
12
13 procedure MakeNull(); inline;
14
15
16 class operator Implicit(const AValue: Nullable<T>): T; inline;
17 class operator Implicit(const AValue: T): Nullable<T>; inline;
18 end;
19
20procedure SumAnArray(const AArray: array of Integer): Nullable<Integer>;
21var
22 Sum, X: Integer;
23begin
24
25 if Length(AArray) = 0 then
26 Result.MakeNull()
27 else
28 begin
29 Sum := 0;
30
31 for X in Array do
32 Sum := Sum + X;
33
34
35 Result := Sum;
36 end;
37end;
38
39var
40 Sum: Nullable<Integer>;
41
42begin
43 Sum := SumAnArray([1, 2, 3]);
44
45 if Sum.IsNull then
46 WriteLn('Pole má nula prvků!');
47 else
48 WriteLn('Součet je: ', Sum.Value);
49end;
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ě.