線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1646
推到 Plurk!
推到 Facebook!

使用Package的問題

尚未結案
AaronChang
一般會員


發表:1
回覆:0
積分:0
註冊:2002-07-08

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-08-04 08:34:17 IP:61.58.xxx.xxx 未訂閱
我正嘗試將Project以Package方式來開發 在LoadPackage後 應使用 GetClass() 來轉換並create form... 可是 GetClass() 始終傳回Nil !! (Initialization 時已有RegisterClass() ) 所以Form無法Show出來 請各位高手幫幫忙, Thanks
附加檔案:00020077_J3_Package_1.zip
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-08-04 13:28:31 IP:203.217.xxx.xxx 未訂閱
引言: 我正嘗試將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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-12-27 16:37:57 IP:61.218.xxx.xxx 未訂閱
引言: 我正嘗試將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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-12-28 11:00:29 IP:203.217.xxx.xxx 未訂閱
請問我下載此範例程式,執行時出現 [Fatal Error] UnitLogin.pas(35): File not found: 'UnitShared.dcu' 請問要如何解決?? 我檢查了一下, UnitShared.pas有在裡面, 沒問題, project很多,子目錄也很多小心看一下, 應該沒問題才對.
系統時間:2024-05-05 15:46:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!