Delphi 2009 có gì mới ?

Published by Việt Coding on

Tiếp sau sự kiện ngày 01/07/2008, khi CodeGear chính thức được Embarcadero Technologies mua lại từ Borland với giá 24.5 triệu USD, năm 2008 tiếp tục ghi dấu ấn với người dùng Delphi nói riêng và các tín đồ của Borland nói chung bằng sự kiện phiên bản Delphi 2009 và C++Builder 2009 chính thức có mặt trên thị trường.

Trong buổi lễ trang trọng được tổ chức ngày 25/8/2008 tại San Francisco, Embarcadero Technologies chính thức công bố bộ công cụ lập trình CodeGear RAD Studio 2009 cho hệ điều hành Windows với hai công cụ chính là Delphi 2009 (cho cả phiên bản Win32 và phiên bản .NET) và C++ Builder 2009.

Đối với những người đã từng sử dụng Delphi hoặc C++ Builder thì bản cập nhật CodeGear RAD Studio 2009 thực sự quan trọng vì gần như giải quyết được hầu hết các đòi hỏi mà các lập trình viên cũng như những nhà cung cấp đã đặt ra đối với các phiên bản trước đó.

Hình 1: Toàn cảnh IDE của Delphi 2009, có thể thấy Delphi 2009 đã hỗ trợ Unicode.

Trong bài viết này, chúng ta sẽ tìm hiểu một số cải tiến đặc biệt quan trọng trong phiên bản Delphi 2009 (tên mã là Tiburon).

Thay đổi quan trọng và đáng kể nhất trong Delphi 2009 là khả năng hỗ trợ Unicode hoàn hảo. Delphi 2009 hỗ trợ Unicode đầy đủ trong trình biên dịch, RTL, VCL, IDE, COM, dbExpress,… Các ứng dụng Unicode được viết bằng Delphi 2009 là thuần tuý 32-bit và không yêu cầu cài đặt thêm .NET Framework.

Để giải quyết triệt để vấn đề về Unicode, Delphi 2009 đưa vào đối tượng TStrings hai hàm LoadFromFile và SaveToFile với cú pháp như sau:

procedure TStrings.LoadFromFile(const FileName: string);
procedure TStrings.LoadFromFile(const FileName: string; Encoding: TEncoding);
procedure TStrings.SaveToFile(const FileName: string);
procedure TStrings.SaveToFile(const FileName: string; Encoding: TEncoding);

Hình 2: Ví dụ về giao diện kiểu Ribbon cho ứng dụng viết bằng Delphi 2009.

Ví dụ, câu lệnh sau sẽ đọc nội dung file c:\temp\MyListBoxItems.txt với định dạng UTF8 sau đó chèn vào Listbox1:

Listbox1.Items.LoadFromFile(c:\temp\MyListBoxItems.txt,TEncoding.
UTF8
);

Delphi 2009 cũng chính thức hỗ trợ việc tạo giao diện người dùng kiểu Microsoft Office 2007 (tên gọi Ribbon).

Kể từ Delphi 2009, định dạng file ảnh PNG (Portable Network Graphics) cũng được chính thức hỗ trợ. Với việc hỗ trợ này, giao diện các chương trình viết bằng Delphi sẽ bóng bẩy hơn.
Chính thức xuất hiện từ Delphi 3 với tên mã Midas và được đổi tên là DataSnap kể từ Delphi 6, DataSnap đã được tu sửa và tối ưu trong Delphi 2009. Quá trình sử dụng cho thấy việc sử dụng DataSnap dễ dàng và tiện lợi.

Về mặt ngôn ngữ, Delphi 2009 hỗ trợ hai cách tiếp cận mới là Generics và Anonymous, đây chính là điểm nhấn quan trọng nhất trong Delphi 2009. Gần như với 2 cách tiếp cận này, Delphi 2009 mở ra cho người sử dụng sự tự do trong việc viết mã lệnh. Chúng ta hãy quan sát hai đoạn mã lệnh ví dụ sau để hiểu rõ 2 cách tiếp cận mới này:

Phương pháp Generics:

Khai báo:

TList = 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;
Cách sử dụng:
var
ilist: TList;
slist: TList;

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]);
PrintListInteger;
ilist.RemoveAt(1);
PrintListInteger;
ilist.Clear;
PrintListInteger;
finally
ilist.Free;
end;
slist := TList.Create;
try
slist.AddRange([‘one’, ‘two’, ‘three’]);
PrintListString;
slist.RemoveAt(1);
PrintListString;
slist.Clear;
PrintListString;
finally
slist.Free;
end;
Readln;
end.


Hình 3: Hộp tìm kiếm cho bảng công cụ Tool Palette.

Phương pháp Anonymous:
Khai báo:
type
TProc = reference to procedure(x: Integer);

procedure Call(const proc: TProc);
begin
proc(42);
end;
Cách sử dụng:
var
proc: TProc;
begin
proc := procedure(a: Integer)
begin
Writeln(a);
end;

Call(proc);
readln
end
.

Một điểm khác đáng chú ý trong phiên bản 2009 này là sự xuất hiện của câu lệnh Exit với đối số. Chúng ta hãy theo dõi hai đoạn mã lệnh sau cho kết quả như nhau:

function DoSomething(aInteger: integer): string;
begin
if aInteger < 0 then
begin
Exit(Negative);
end;
Result := Positive;
end;

function DoSomething(aInteger: integer): string;
begin
if aInteger < 0 then
begin
Result := Negative;
Exit;
end;
Result := Positive;
end;

Hình 4: Trên nền Windows Vista, Delphi 2009 thật bóng bẩy.

Trong phiên bản 2009 này, Delphi IDE cũng có nhiều cải tiến đáng kể. Điều dễ nhận thấy nhất đó là sự xuất hiện của rất nhiều hộp tìm kiếm, nhờ có chúng, giờ đây bạn có thể dễ dàng tìm được các component cần thiết.

Ngoài ra, còn một loạt thay đổi trong các component của Delphi 2009 nhằm mục đích đem lại sự tuỳ biến cao cho người sử dụng. Xem các hình ảnh minh hoạ (hình 5, 6, 7).

Tính tới thời điểm hoàn thành bài viết này, các gói công cụ sau đã hỗ trợ Delphi 2009 (chi tiết các bạn có thể xem tại đây: http://dn.codegear.com/article/38459):

• TMS Component Pack: http://www.tmssoftware.com/site/tmspack.asp

• JCL và JVCL: http://www.delphi-jedi.org

Hình 5: TCategoryPanels, TButtonedEdit, TLinkLabel và TBallonHint.

SmartInspect: http://www.gurock.com/products/smartinspect

• Castalia: http://www.twodesk.com/castalia

• MySQL Data Access Components: http://devart.com/mydac

• Oracle Data Access Components: http://devart.com/odac

• SQL Server Data Access Components: http://devart.com/sdac

• InterBase Data Access Components: http://devart.com/ibdac

Hình 6: Đối tượng TButton được bổ sung thêm nhiều tuỳ chọn như bsCommandLink hoặc là  bsSplitButton.

• Devrace FIBPlus: http://www.devrace.com/en/fibplus

• LMD: http://www.lmd.de

• GExperts: http://www.gexperts.org

• Nexus: http://www.nexusdb.com/support/index.php

• TsiLang Components Suite: http://www.tsilang.com

• Raize Components: http://www.raize.com/DevTools/RzComps

• QuickReports: http://www.qusoft.com

• TeeChart Pro: http://www.steema.com/products/teechart/whatsnew.html

• ComponentAce: http://www.componentace.com

Hình 7: Đối tượng TProgressBar với nhiều tuỳ chọn khác nhau.

Lời kết: Hiện tại Delphi 2009 chỉ hỗ trợ Windows trên nền tảng 32-bit, theo tiến trình mà CodeGear đưa ra, phải đến giữa năm 2009, thế hệ tiếp theo của Delphi 2009 với tên mã là Commodore sẽ hỗ trợ song song cả 32-bit và 64-bit. Không có nhiều thông tin từ phía CodeGear về hậu duệ của Commodore cũng như Delphi cho Linux, tuy nhiên theo phán đoán và những thông tin mà chúng tôi nhận được thì CodeGear sẽ hỗ trợ nhiều hơn nữa các ứng dụng Web, AJAX, và đặc biệt là các thiết bị cầm tay PDA trong thời gian sắp tới. Bản dùng thử của Delphi 2009 có tại địa chỉ http://cc.codegear.com/free/delphi. Và bạn còn chờ gì nữa mà không thử?

Ngô Quốc Anh
National University of Singapore
Email: bookworm_vn@yahoo.com

Tài liệu tham khảo:
• http://dn.codegear.com/article/38478
• http://blogs.codegear.com/nickhodges
• http://www.codegear.com
• http://dn.codegear.com/article/36620

——————–

Nguồn : http://www.pcworld.com.vn/pcworld/magazine_a.asp?t=mzdetail&atcl_id=5f5e5d5b5f5d57

Quảng cáo tài trợ


Việt Coding

Là một người đam mê lập trình, tôi vọc vạch đủ thứ liên quan đến lập trình cho thoả chí tò mò. Hiện làm chủ yếu ở mảng phát triển ứng dụng di động cho iOS và Android với React Native. Thỉnh thoảng vọc vạch mấy thứ liên quan đến Internet of Things như Smart Home. Đang nghịch mấy con Raspberry Pi và thấy nó cũng thú vị :)

0 Comments

Leave a Reply

Avatar placeholder

Your email address will not be published. Required fields are marked *

To create code blocks or other preformatted text, indent by four spaces:

    This will be displayed in a monospaced font. The first four 
    spaces will be stripped off, but all other whitespace
    will be preserved.
    
    Markdown is turned off in code blocks:
     [This is not a link](http://example.com)

To create not a block, but an inline code span, use backticks:

Here is some inline `code`.

For more help see http://daringfireball.net/projects/markdown/syntax