ขออธิบายเพิ่มเติม ในส่วนการสร้าง Object แบบ Runtime ครับ
ปกติ เราต้องประกาศตัวแปร เป็น ประเภท oject นั้นๆ เช่น
var
tc : Tclientdataset; ประกาศตัวแปร tc เป็นประเภท Clientdataset
begin
tc := Tclientdataset.create(ระบุความเป็นเจ้าของของ Oject ที่สร้าง);
end;
พารามิเตอร์ ที่ระบุ มี 3 แบบ ครับ
nil ,self และ Application
ทำไมต้องระบุ ความเป็นเจ้าของ เพราะ มันจะทำหน้า free Oject ให้เราเอง (คืนหน่วยความจำ)
ถ้า ระบุ nil (ไม่มีเจ้าของ) เราต้อง free เอง
tc := Tclientdataset.create(nil);
try
.....
......
finally
tc.free;
end;
ถ้าระบุ Self หมายถึง Form ที่ Oject เราเกาะอยู่ Form จะทำหน้าที่ Free ให้เราเอง
tc := Tclientdataset.create(self);
ถ้าระบุ Application หมายถึง โปรแกรม exe เรา เมื่อปิดโปรแกรม จะ free ให้เรา
tc := Tclientdataset.create(Application);
กรณี เราสร้าง Class เราไม่ต้องระบุเจ้าของ ครับ เช่น
var sl : TStringlist;
begin
sl := TStringlist.create;
try
....
....
finally
sl.free;
end;
ถ้าอธิบายผิดพลาดประการใด ขออภัยด้วยครับ หรือรบกวนผู้รู้ อธิบาย ให้ถูกต้องอีกที ครับ
หรือ รบกวน อ.อ๊อด ด้วยครับ ผมเองก็มือใหม่ ครับ