熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Delphi編程 >> 正文

創建窗口時出現GetDynaMethod錯誤

2022-06-13   來源: Delphi編程 

  某個子窗口不是通過create(aowner)創建而是通過另一個公共方法
procedure TFrm_EmpSelectSelectEmp(FList:Tlist);
begin
  List:=Flist;
  with TFrm_EmpSelectCreate(self) do
  begin
   try
      Showmodal;
   finally
      Free;
   end;
  end;
end;

    來調用主要是傳遞了一個參數FList

  但是出現了錯誤跟蹤後發現是調用TCustomFormcreate > ……> TComponentCreate 時在函數GetDynaMethod的下面這段發生錯誤

  @@haveVMT

  MOV EDI[EBX]vmtDynamicTable EDI是DMT的入口

  當時以為是否selectEmp函數不是類(static)函數的關系於是改成類函數編譯通不過修改了一下通過了運行後就正常了

  但是我又發現另外一個單元Loginpas裡面的login函數也是同樣用法也不是類函數(為什麼不是構造函數又不是類函數但能夠不實例化就調用 這個問題還有待研究) 可見改成類函數不是問題解決的關鍵 回想到改成類函數時編譯錯誤發生在這行

  with TFrm_EmpSelectCreate(self) do

  這裡self不是一個類實例而是一個類引用 於是改成Frm_Client(主窗體) 看樣子問題就在這裡了

  在外面調用TFrm_EmpSelectCreate(self)這個self表示外面的宿主而在本類中調用self是本類 估計就是這個原因


From:http://tw.wingwit.com/Article/program/Delphi/201311/8426.html
    推薦文章
    Copyright © 2005-2022 電腦知識網 Computer Knowledge   All rights reserved.