使用Package的問題 |
尚未結案
|
AaronChang
一般會員 發表:1 回覆:0 積分:0 註冊:2002-07-08 發送簡訊給我 |
我正嘗試將Project以Package方式來開發
在LoadPackage後 應使用 GetClass() 來轉換並create form... 可是 GetClass() 始終傳回Nil !! (Initialization 時已有RegisterClass() ) 所以Form無法Show出來 請各位高手幫幫忙, Thanks
|
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
引言: 我正嘗試將Project以Package方式來開發 在LoadPackage後 應使用 GetClass() 來轉換並create form... 可是 GetClass() 始終傳回Nil !! (Initialization 時已有RegisterClass() ) 所以Form無法Show出來 請各位高手幫幫忙, Thanks我看整個都很好, 錯誤大概是無意間犯的吧!如此改不知是否符合你須求 測試時DataBase 未接,無此Alias也. "load", "showform"均ok AClass := GetClass(FileName); 呼叫時傳入了xxx.bpl 不是一個class, 你應該是要傳FormClass吧? 或者只是loadpackage,此處只暫時測試用, xxx.bpl不是class當然GetClass為nil 為了傳入Form Class如下修改 [note] 我path與你不同用default path, 請自行注意 1. UnitMain中button1 procedure TFrmMain.Button1Click(Sender: TObject); begin if LoadinPackage('PkgNormal_1.bpl','TFrmNormal_1') then begin LBMsg.Items := GetLoadedPackages; end; end;2. UnitShare function LoadInPackage(const PackageName, FileName: string):Boolean; var ModuleInstance : HModule ; AClass : TPersistentClass; pkg:string; begin pkg:=changeFileExt(ExtractFileName(packageName),''); // if LoadedPackageList.IndexOf(UpperCase(PackageName)) < 0 then if LoadedPackageList.IndexOf(UpperCase(Pkg)) < 0 then begin ModuleInstance := LoadPackage(PackageName) ; // ModuleInstance := LoadPackage(FileName) ; // if FindHInstance(Pointer(ModuleInstance)) = LoadedPackageList.AddObject(UpperCase(Pkg), Pointer(ModuleInstance)); // LoadedPackageList.AddObject(UpperCase(PackageName), Pointer(ModuleInstance)); AClass := GetClass(FileName); //FileName 為Form之classname if AClass = nil then showmessage('AClass is nil right after Loadpackage'); Result := True; end else Result := False; end;3. 看起來你的意思應該是pkgDataModule.bpl, pkgShared.bpl 加入project, 而pkgNormal_1 Runtime load吧, 故將前二package加入runtime package 於J3.exe 由menu Project|Options 至package page->check "Build with Runtime package", 並"add"此二package 發表人 - ccchen 於 2002/08/04 13:29:14 發表人 - ccchen 於 2002/08/04 13:29:55 發表人 - ccchen 於 2002/08/04 13:30:59 發表人 - ccchen 於 2002/08/04 13:32:25 |
cyl
中階會員 發表:163 回覆:171 積分:66 註冊:2002-07-11 發送簡訊給我 |
引言: 我正嘗試將Project以Package方式來開發 在LoadPackage後 應使用 GetClass() 來轉換並create form... 可是 GetClass() 始終傳回Nil !! (Initialization 時已有RegisterClass() ) 所以Form無法Show出來 請各位高手幫幫忙, Thanks請問我下載此範例程式,執行時出現 [Fatal Error] UnitLogin.pas(35): File not found: 'UnitShared.dcu' 請問要如何解決?? |
ccchen
版主 發表:61 回覆:940 積分:1394 註冊:2002-04-15 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |