2010-08-20 41 views
12

Tôi muốn thiết kế khung plugin Delphi. Có ba lựa chọn:
1. DLL
2. BPL
3. COM giao diện

Mỗi tùy chọn có một số nhược điểm.Khuôn khổ plugin Delphi

DLL - Huy hiệu với MDI apllication, biểu mẫu từ plugin không thể được nhúng vào ứng dụng exe - mdi lưu trữ.
BPL - Mọi plugin * .bpl và ứng dụng máy chủ * .exe phải được biên dịch cùng phiên bản Delphi.
COM - Giao diện {xxx-xx-xxx-xx} phải được đăng ký trong hệ thống, (regsvr) Vì vậy, khuôn khổ plugin không thể di chuyển được!

Mọi thứ có đúng với những gì tôi đã viết ở trên không? Nếu không, hãy sửa tôi, hoặc có khả năng nào khác không?
cảm ơn

+0

thể trùng lặp của [hệ thống Plugins cho các ứng dụng Delphi - bpl vs dll] (http://stackoverflow.com/questions/1192734/plugins-system-for-delphi- application-bpl-vs-dll) –

+0

Cũng có thể trùng lặp: [Cách tốt nhất để thêm khả năng của trình cắm vào chương trình Delphi] (http://stackoverflow.com/questions/365968/how-best-to-add-plugin-capability -to-a-delphi-program) – lkessler

+1

Nó không phải là trường hợp giao diện COM cần phải được đăng ký. Nếu bạn biết nơi triển khai DLL, bạn có thể tải nó và gọi trực tiếp các hàm liên quan đến COM của nó. Không cần phải có hệ điều hành làm điều đó cho bạn.Và điều đó làm cho nó di động trong * cả hai * ý nghĩa của từ: Bạn có thể biên dịch mã trên các hệ điều hành khác, và bạn có thể đặt chương trình trên một ổ USB và chạy nó bất cứ nơi nào bạn đi. –

Trả lời

8

Có, những gì bạn đã viết là chính xác. Tất cả những điều này đều có lợi thế và bất lợi, câu hỏi là điều quan trọng đối với bạn, bạn không nói những gì bạn muốn làm, vì vậy chúng tôi không thể nói cho bạn biết làm thế nào để làm điều đó.

Nói chung, tôi sẽ chọn BPL theo mặc định, sử dụng DLL nếu bạn cần sử dụng nó từ các ứng dụng không Delphi và chỉ chọn COM nếu bạn thực sự phải làm như vậy.

Cách khác là không xây dựng của riêng bạn, vì có một số khung plugin Delphi sẵn có.

Ngoài ra, chủ đề này đã được thảo luận ở đây trước, kiểm tra:

1

Một khả năng khác là có một giao diện kịch bản, chẳng hạn như với Python hoặc Pascalscript. Có rất nhiều lợi thế cho cách tiếp cận này, không kém phần quan trọng là nguồn plugin cũng là thực thi, giúp dễ dàng gỡ lỗi và chia sẻ.

0

Chúng tôi sử dụng DLL, ngay cả khi chỉ sử dụng với ứng dụng Delphi. Các hình thức dll được nhúng trong biểu mẫu chính và sử dụng Tab thay vì MDI. Để DLL hoạt động đúng, chúng tôi cũng sử dụng trình quản lý bộ nhớ dùng chung và được xây dựng với các gói thời gian chạy: vcl, rtl và gói riêng của chúng tôi.

+0

Có, có một số cách giải quyết cách vượt qua lỗi "không thể gán TFont cho TFont" và TFrame từ * .dll có thể được đặt vào ứng dụng máy chủ * .exe, nhưng có một số vấn đề khác với đặt hàng tab với TFrame được nhúng, (sau khi nhấn phím tab, tiêu điểm không được di chuyển đến điều khiển tiếp theo trong khung ...) Hoặc có cách giải quyết nào đó cho nó không? – Peter

+0

Ngoài ra các phím mũi tên không bị chặn bởi biểu mẫu có nghĩa là các điều khiển TEdit và TMemo không hoạt động chính xác. – rhody