เพิ่งมีเวลาว่างมานั่งเขียนการพัฒนา Software ด้วย Turbo Delphi ครับ หัวข้อนี้สำหรับผู้ที่ต้องการศึกษาการใช้ Turbo Delphi ทำงานกับ Database โดยเฉพาะครับ
ปัจจุบัน Tools ที่ใช้ในการพัมฒนา Software มีการแข่งขันกันค่อนข้างสูงมาก ทำให้ Borland ที่เคยเป็นผู้นำในเรื่องของ RAD Tools จึงต้องเปลี่ยนกลยุทธ์ในการขายใหม่ โดยออก Delphi มา 2 รุ่น คือ Turbo Delphi Professional และ Turbo Delphi Explorer โดยในแต่ละรุ่น ก็จะมี Compiler 4 ชนิด แยกเป็น Delphi for .Net, C#, C++ และ Delphi for Win32 และจำกัดการติดตั้งได้เพียง 1 ชนิดต่อ 1 เครื่อง (จะลง Turbo Delphi for C# และ Turbo Delphi for Win32 ในเครื่องเดียวกันไม่ได้) และที่สำคัีญ Turbo Delphi Explorer เป็น Freeware ที่มีความสามารถเหมือนกับรุ่น Professional ต่างกันก็แค่ไม่สามารถติดตั้ง Component เพิ่มได้ และสามารถนำมาใ้ช้งานพัฒนา Commercial Application ได้โดยไม่ต้องเสียค่าใช้จ่ายใดๆ (แต่ถ้าจะเอามาทำ Commercial ผมแนะนำให้ซื้อ Turbo Delphi Professional ดีกว่าครับ ราคาประมาณ $499 )
และเนื่องจาก HOSxP ถูกพัฒนามาด้วย Delphi แต่มีการใช้งาน 3rd party component ค่อนข้างเยอะมาก ดังนั้นจึงเป็นโอกาศอันดี หากจะนำ Source Code มาปรับปรุงใหม่ ให้สามารถใช้ Turbo Delphi Explorer พัฒนาได้ และใช้เฉพาะ GPL Component เพื่อที่ว่าหากใครอยากจะเข้ามาร่วมด้วยช่วยกันพัฒนา ก็สามารถทำได้โดยง่าย
ถึงแม้ว่า Turbo Delphi Explorer จะจำกัดการติดตั้ง 3rd Component แต่จำกัดเฉพาะในตัว IDE ครับ (ตอน Design) แต่ในขั้นตอนการทำงานสามารถเขียนคำสั่งให้สร้าง Component ที่ต้องการขึ้นมาได้ครับ โดย 3rd Component ที่ HOSxP จำเป็นต้องใช้ ได้แก่
- Zeoslib สำหรับทำหน้าที่เป็น Database Engine เชื่อมต่อกับระบบฐานข้อมูล (MySQL,PostgreSQl,Microsoft SQL, etc) และจัดการข้อมูล
http://zeos.firmos.at/- DCPCrypt สำหรับทำหน้าที่เข้ารหัสข้อมูลบางอย่าง (เช่น User Password)
http://www.cityinthesky.co.uk/cryptography.html- Freereport จากผู้ผลิต Fast Report สำหรับสร้างรายงาน
http://freereport.sourceforge.net/en/ในส่วนของ 3rd component ที่จำเป็น ผม upload ไว้ที่
ftp://ftp.hosxp.net/pub/delphi_componentอันดับแรกให้ทำการ Download Turbo Delphi Explorer for Win32 มาติดตั้งในเครื่องก่อนครับ โดย Download ได้จาก
http://www.turboexplorer.com (แนะนำให้ Download file ที่เป็น ISO มา Write CD เพราะจะมีไฟล์ที่จำเป็นมาครบครับ)
หลังจาก Download มาแล้วให้ทำการติดตั้ง .Net Framework 1.1, .Net Framework SDK, msxml, dotNETJSharp (ที่ต้องติดตั้ง .Net เนื่องจาก Tool บางตัวที่มากับ Delphi ถูกพัฒนาขึ้นโดยใช้ C# ครับ เช่น ECO ) จากนั้นก็ติดตั้ง Delphi และจะต้องลงทะเบียนขอ License key มาติดตั้งไว้ในเครื่องครับ (ลงทะเบียน Free ใช้งานได้ 100 ปี ..... )
พอติดตั้งเสร็จแล้ว ก็ทำการติดตั้ง 3rd Component ที่จำเป็นลงไปครับ (จาก link ด้านบน) และระบุ Path ให้ Delphi ค้นหาแฟ้มที่จำเ็ป็นพบ ไม่อย่างงั้นจะ Compile Project File ไม่ได้ครับ
หลังจากติดตั้ง component เสร็จแล้ว ก็ให้ทำการ Download Turbo HOSxP มาจาก
ftp://ftp.hosxp.net/pub/Turbo_HOSxP ที่ตั้งชื่อ Turbo HOSxP ก็ให้คล้องจองกับ Turbo Delphi Explorer ไงครับ
ในส่วนของ Turbo HOSxP Source Code ผมได้ทำการปรับปรุงให้มี Function ที่จำเป็นในการเชื่อมต่อกับฐานข้อมูลของ HOSxP (ผ่าน zeoslib) และการตรวจสอบรหัสผู้ใช้งาน (ผ่านระบบ Login) มี Splash Screen และ Mainmenu ตัวโปรแกรมมีลักษณะเป็น MDI Application แต่ตอนนี้มีเฉพาะโครงครับ ยังไม่มีระบบงานอะไร
ในการเข้าถึงข้อมูลและจัดการข้อมูล ระบบถูกออกแบบให้ใช้ TClientDataset ครับ ยกตัวอย่างเช่น หากผมต้องการนำข้อมูลจากตาราง pttype มาใช้งาน ก็เพียงแต่เขียน Code ดังนี้
Unit xxxx;
interface
uses .....,...
implementation
uses HOSxPDMU;
Procedure Button1Click(Sender:TObject);
var TC : TClientDataset;
begin
TC := TClientDataset.Create(nil);
TC.Data := HOSxP_GetDataset('select * from pttype');
while not TC.eof do
begin
showmessage(TC.fieldbyname('name').asstring);
TC.next;
end;
TC.free;
end;
จากตัวอย่าง การนำข้อมูล (ผลจากคำสั่ง SQL) มาเก็บไว้ที่ TClientDataset จะผ่าน Function HOSxP_GetDataset(sql) ครับ (ง่ายดีไหม) อยากได้อะไรก็ดึงมาเลยครับ
หากมีการแก้ไขข้อมูลใน TClientDataset และต้องการ Update ไปยัง Database ก็เพียงแต่เรียกใช้ Function HOSxP_UpdateDelta ครับ ดังตัวอย่าง
Unit xxxx;
interface
uses .....,...
implementation
uses HOSxPDMU;
Procedure Button1Click(Sender:TObject);
var TC : TClientDataset;
begin
TC := TClientDataset.Create(nil);
TC.Data := HOSxP_GetDataset('select * from pttype');
while not TC.eof do
begin
TC.edit;
TC.fieldbyname('name').asstring := 'New Name';
TC.post;
TC.next;
end;
if TC.changecount > 0 then
HOSxP_UpdateDelta(TC.delta,'select * from pttype');
TC.free;
end;
ใน Function HOSxP_UpdateDelta จะต้องระบุ Delta packet และ คำสั่งเดิมที่ดึงข้อมูลมาครับ
Project ที่ Compile แล้วอยู่ที่นี่ครับ
ftp://ftp.hosxp.net/pub/Turbo_HOSxP/Turbo_HOSxP.exeTo be continue ....