Bir süredir işlerimin yoğunluğundan Delphi 2009 (kod adı Tiburon) konusunda yazı yazamamıştım.
Evet Delphi 2008 değil 2009 yanlış duymadınız.
Çünkü Codegear Embarcadero ‘nun versiyon sistemini uygulamaya başlamış.
Yani Eğer o dönemin 2. yarısını geçtiyseniz artık versiyon yeni senenin ismi oluyor.
Şİmdi gelelim, D2009 ile bizi bekleyen yenilikler neler;
1- Unicode (Tüm dünya dillerindeki karekterleri kullanabilme kolaylığı.)
2- Generics (Bir TList nesneniz var ki ben çok yoğun kullanırım, her türlü tipte oluşturabiliyorsunuz.)
(TList dışında TQueue, TStack, TDictionary, TObjectList, TObjectQueue, TObjectStack ve TObjectDictionary yada kendi nesneleriniz
için kullanabilirsiniz.) ve Anonymous Methods desteği.
3- Ribbon desteği.
4- Bazı VCL yenilikleri (TStringBuilder, TButtonedEdit, TEncoding, TCharacter)
5- IDE üzerindeki değişiklikler. (Tool Palette, Project Manager)
6- Yeni DataSnap değişiklikleri. (Beni en fazla bu ilgilendiren kısmı bu.)
Önce Mr. Nick Hodges’un hazırlamış olduğu ekran görüntüsü ile başlayalım.
Bu ekranda Ribbon, UniCode ve Delphi IDE’sinin yeni hali gözükmekte.
Yeni görünümde ne varki sorusu hemen kulağımı çınlatıyor,
Tool Palete bir bakalım, Search dikkati çekiyor.
Project Manager’da yeni butonlar mevcut.
Generics için ise TList’in yeni halina bakalım;
TList<T> = class
private
FItems: array of T;
FCount: Integer;
procedure Grow(ACapacity: Integer);
function GetItem(AIndex: Integer): T;
procedure SetItem(AIndex: Integer; AValue: T);
public
procedure Add(const AItem: T);
procedure AddRange(const AItems: array of T);
procedure RemoveAt(AIndex: Integer);
procedure Clear;
property Item[AIndex: Integer]: T
read GetItem write SetItem; default;
property Count: Integer read FCount;
end;
Use:
var
ilist: TList<Integer>
slist: TList<String>
procedure PrintListInteger;
var
i: Integer;
begin
for i := 0 to ilist.Count - 1 do
Write(ilist[i], ' ');
Writeln;
end;
procedure PrintListString;
var
i: Integer;
begin
for i := 0 to slist.Count - 1 do
Write(slist[i], ' ');
Writeln;
end;
begin
ilist := TList.Create;
try
ilist.AddRange([1, 2, 3]); // ['1', 'second', 'third']);
PrintListInteger;
ilist.RemoveAt(1);
PrintListInteger;
ilist.Clear;
PrintListInteger;
finally
ilist.Free;
end;
slist := TList.Create;
try
slist.AddRange(['one', 'two', 'three']); // ['first', 'second', 'third']);
PrintListString;
slist.RemoveAt(1);
PrintListString;
slist.Clear;
PrintListString;
finally
slist.Free;
end;
Readln;
end.
Ve Anonymous Methods için bir örnek;
type
// method reference
TProc = reference to procedure(x: Integer);
procedure Call(const proc: TProc);
begin
proc(42);
end;
Use:
var
proc: TProc;
begin
// anonymous method
proc := procedure(a: Integer)
begin
Writeln(a);
end;
Call(proc);
readln
end.
6- Yeni DataSnap ile ilgili ise,
aşağıdaki linklerden bilgi edinebilirsiniz.
http://blogs.codegear.com/andreanolanusse/2008/07/…
http://blogs.codegear.com/steveshaughnessy/2008/07…
Ama Tamamen dbx4 üzerine kurulu olması ve midas.dll gibi ek dll dosyalarına
gerek duyulmaması çok güzel.
Artık dbx4 kullanımı kaçınılmaz hale gelmeye başlamıştı zaten.
Herkese kolay gelsin.