bpl 使用之我見 作者:陳曉兵 lead001@126.com, lead@people.com.cn

bpl 使用之我見

作者:陳曉兵 lead001@126.com, lead@people.com.cn

寫在前面

在此不再贅述bpl與dll的比較,只介紹bpl的動態調用。

bpl 使用之我見 作者:陳曉兵 lead001@126.com, lead@people.com.cn
如需轉載敬請保留原版作者信息,

及實現部分的完整性,

開始---------------------------------------->

實現過程

<第一部分 接口單元>

創建一個接口單元

{$WEAKPACKAGEUNIT}

unit uInterface;

interface

uses

Classes, Forms;

type

TBaseClss = class(TComponent)

function CreateForm:TForm; virtual; stdcall;abstract;

...

end;

implementation

{ TBaseClss }

end.

<第二部分 調用的主程序>

選項設置

Project -> Options -> Packages : Runtime Packages

將Build with Runtime Packages複選框選中;

引用uInterface單元

調用過程

function LoadPacket(Fbpl, FClass: String): Boolean;

var

FForm : TForm;

FPersistentClass: TPersistentClass;

FBaseClss : TBaseClss;

H: HMODULE;

begin

try

try

H := 0;

H := LoadPackage(Fbpl);

FPersistentClass := FindClass(FClass);

if FPersistentClass <> nil then

begin

FBaseClss :=

TBaseClss(TComponentClass(FPersistentClass).Create(Application));

FForm := nil;

FForm := FBaseClss.CreateForm;

FBaseClss.Free;

FBaseClss := nil;

FPersistentClass := nil;

if Assigned(FForm) then

begin

FForm.ShowModal;

FreeAndNil(FForm);

end;

end;

except

Application.MessageBox('此功能未安裝', '提示', MB_OK +

MB_ICONINFORMATION);

end;

finally

if H <> 0 then

begin

UnloadPackage(H);

H := 0;

end;

end;

end;

<第三部分 創建bpl包>

創建包

引用uInterface單元

創建接口類,實現TBaseClss

TTestClass = class(TBaseClss)

function CreateForm:TForm; override;

...

end;

function TTestClass.CreateForm: TForm;

var

Form2: TForm2;

begin

Form2 := TForm2.Create(Application);

if Assigned(Form2) then

Result := Form2

else

Result := nil;

end;

注冊類

initialization

RegisterClass(TTestClass);

UnRegisterClass(TBaseClss);

反注冊類

finalization

UnRegisterClass(TTestClass);

----------------------------------------結束>

 
C#網絡編程概述(引用自http://www.daima.com.cn/info/203.htm,向原作者表示感謝!)
C#網絡編程概述 微軟下一代互聯網開發工具VS.Net已于三月份在全國範圍推出,其中的一門新興語言C#正被越來越多的開發者所接受並運用。  C#作爲一門集衆家之長的語言,在各個方面尤其是網絡編程方面有著很大的優勢。...查看完整版>>C#網絡編程概述(引用自http://www.daima.com.cn/info/203.htm,向原作者表示感謝!)
 
C#的多線程機制初探 (引自 http://www.daima.com.cn/info/234.htm ,在此感謝原作者)
注:本文中出現的代碼均在.net Framework RC3環境中運行通過 一.多線程的概念 Windows是一個多任務的系統,如果你使用的是windows 2000及其以上版本,你可以通過任務管理器查看當前系統運行的程序和進程。什麽是...查看完整版>>C#的多線程機制初探 (引自 http://www.daima.com.cn/info/234.htm ,在此感謝原作者)
 
關于使用http://www.tenaa.com.cn/求證手機真假的方法
第一次使用這個鑒別方法是2000年購買的MOTO8088,當時對手機知識了解甚少,還是通過朋友知道這個方法,在鄭州一零售商(只賣行貨)購機後,上網驗證,得到信息爲"您提供的標志信息是真的,但該部手機暫未到本中心注冊!"當然...查看完整版>>關于使用http://www.tenaa.com.cn/求證手機真假的方法
 
火狐中國網站Firefox.com.cn上線-業內資訊
  2011年伊始,謀智網絡趕在春節前發布全新火狐浏覽器中國唯一官方網站firefox.com.cn。  全新改版的官方網站采用了更簡潔現代的設計風格,網站劃分爲産品、下載、擴展、社區以及關于五個頻道,同時加重了擴展和...查看完整版>>火狐中國網站Firefox.com.cn上線-業內資訊
 
CN域名整頓 COM域名注冊1周增加18萬-業內資訊
  時近新年,最流行的過年禮物似乎變成了互聯網域名。據統計,從12月7日到12月14日,短短一周時間內,.COM域名在中國的注冊量增加了18萬個,同比暴增十三倍。最大的域名注冊機構Godaddy趁勢出擊,將中國用戶注冊一...查看完整版>>CN域名整頓 COM域名注冊1周增加18萬-業內資訊