ไฟล์ DLL นั้นในจุดประสงค์การใช้งานแล้ว ไม่ต่างจากการสร้าง Library ในการพัฒนาโปรแกรม แต่จะแตกต่างกันในรูปแบบของการใช้งาน เพราะ DLL เป็น Library ที่มีการทำให้เป็นภาษาเครื่องแล้ว และให้โปรแกรมอื่นๆสามารถเรียกใช้งานได้ เป็นการเรียกใช้ Library จากภายนอก
การเรียกใช้ DLL จาก Apllication |
ตัวอย่างการสร้างไฟล์ DLL ผู้เขียนจะใช้ไฟล์ DLL ในการเปิด และบันทึก Text File โดยการเรียกใช้จากโปรแกรมอื่น
สร้างไฟล์ Dynamic Link Library (.dll)
ผู้เขียนจะสร้างไฟล์ DLL จาก Delphi XE โดยการเลือกสร้าง Project เป็น Dynamic-link Library
จากนั้นผู้เขียนจะบันทึก Project เป็น myDLL
เมื่อบันทึกแล้วจะพบว่าชื่อ Project เปลี่ยนเป็น myDLL.dll |
library myDLL;
uses
SysUtils,
Dialogs,
Classes;
{$R *.res}
// method เปิดไฟล์ เมื่อเปิด Text File แล้วจะคืนค่า กลับไปเป็น WideString
function OpenFile: WideString; stdcall;
Var
openDlg: TOpenDialog;
fileText: TStringList;
Begin
try
openDlg:=TOpenDialog.Create(nil);
openDlg.Filter:='Text File|*.txt';
fileText:=TStringList.Create;
if openDlg.Execute then
Begin
if openDlg.FileName<>'' then
//load Text ในไฟล์มาเก็บไว้ใน TStringList
fileText.LoadFromFile(openDlg.FileName);
End;
Result:=fileText.Text; //ส่ง WideString ออกไปจาก method
finally
FreeAndNil(openDlg);
FreeAndNil(fileText);
end;
end;
//method บันทึกไฟล์ ค่าที่ส่งเข้ามาคือชุดข้อความที่จะบันทึก
procedure SaveFile(Value : WideString); export;
Var
saveDlg: TSaveDialog;
fileSave: TStringList;
begin
try
saveDlg:=TSaveDialog.Create(nil);
fileSave:=TStringList.Create;
if saveDlg.Execute then
Begin
if saveDlg.FileName<>'' then
Begin
//นำ TStringList เข้ามาเก็บชุดข้อความที่ส่งเข้ามา
fileSave.Text:=Value;
//ให้ TStringList บันทึกลงไฟล์
fileSave.SaveToFile(saveDlg.FileName);
End;
End;
finally
FreeAndNil(saveDlg);
FreeAndNil(fileSave);
end;
end;
//ประกาศชื่อ method ของ DLL
exports OpenFile,SaveFile;
begin
end.
จากนั้นให้ Compile และ Build Project จะเกิดไฟล์ myDLL.dll ขึ้นมา
การใช้งานไฟล์ Dynamic Link Library (.dll)
ผู้เขียนใช้ Delphi 7 ในการสร้างส่วนเรียกใช้งาน DLL โดยออกแบบฟอร์มตามภาพด้านล่างนี้
ประกอบด้วย TMainMenu และ TRichEdit |
- function ชื่อ method : ค่าที่ส่งกลับมา ;external 'Path ที่อยู่ของ DLL File'
- procedure ชื่อ method(ค่าที่ส่งไป);external 'Path ที่อยู่ของ DLL File'
type
TForm1 = class(TForm)
MainMenu1: TMainMenu;
File1: TMenuItem;
OpenFile1: TMenuItem;
SaveFile1: TMenuItem;
RichEdit1: TRichEdit;
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
function OpenFile : WideString; stdcall; external 'D:\Project\Delphi\_project test\XEdll\Debug\Win32\myDLL.dll'
procedure SaveFile(Value: WideString);external 'D:\Project\Delphi\_project test\XEdll\Debug\Win32\myDLL.dll'
คำสั่งเรียกใช้ DLL ผ่านเมนูที่สร้างขึ้น
//Event Click ของ เมนู Open File
procedure TForm1.OpenFile1Click(Sender: TObject);
begin
Self.RichEdit1.Text:=OpenFile;
end;
//Event Click ของ เมนู Save File
procedure TForm1.SaveFile1Click(Sender: TObject);
begin
SaveFile(Self.RichEdit1.Text);
end;
เมื่อรันโปรแกรมก็จะสามารถบันทึก และเปิด Text File ได้คล้ายๆกับโปรแกรม notepad
ทดสอบการบันทึกไฟล์ เป็น dllsave.txt |
ตรวจสอบไฟล์ที่บันทึก |
เปิดไฟล์ที่บันทึกไว้ |
ไม่มีความคิดเห็น:
แสดงความคิดเห็น