<1>利用unit的 initalization與finalization這兩個小節
可以在unit的這兩個小節中安排unit的進入和退出,但是
program 與 library並沒有這兩個部分,所以只能寫在unit中。
<2>利用exitproc變數
在library的begin ..end.中間是可以寫** 的, 這裡可以放置
dll初始化** 。如果想要做善後工作,則可以利用exitproc變數。
我們首先在初始化** 中 把exitproc中包含的預設的善後過程位址保
存下來,然後把自定義的過程的位址賦給它,這樣dll退出時就會執
行我們制定的程式;在 自定義的過程的最後,把exitproc恢復原來的
預設值,以便dll能夠繼續完成原來預設的善後工作。下面是示例:
library mydll;
...oldexitproc: pointer;
...procedure myexitproc;
begin
... //善後程式
exitproc := oldexitproc;
end;
...begin
... //初始化程式
oldexitproc := exitproc;
exitproc := @myexitproc;
end.
<3>利用dllproc變數
和exitproc一樣,dllproc也是乙個在systemd單元中預定義的變
量。 在使用dllproc時, 必須先寫好乙個具有以下原型的程式:
procedure dllhandler(reason: integer);
並在library的begin ..end.之間, 將這個dllhandler程式的執行地
址賦給dllproc中, 這時就可以根據引數reason的值分別作出相應的
處理。另外注意要 將windows單元加入uses子句。示例如下:
library testdll;
...procedure mydllhandler(reason: integer);
begin
case reason of
dll_process_detach:
begin
showmessage('整個dll的善後程式');
end;
dll_process_attach:
begin
showmessage('整個dll的初始化** ');
end;
dll_thread_attach:
begin
showmessage('當主叫端開始乙個thread時');
end;
dll_thread_detach:
begin
showmessage('當主叫端終止乙個thread時');
end;
end;
end;
//初始化**
Delphi陣列初始化
delphi下如何對陣列進行初始化?答 1 delphi提供對常量陣列的簡單初始化方法如下 const arrbyte array 0.2 of byte 112,32,55 2 如果想對變數陣列進行初始化,可以先宣告常量陣列,然後,對變數陣列進行賦值即可 procedure assignarr v...
Delphi 中如何初始化事件
在程式當中,我們寫了大量的事件,有些時候從資料庫讀取出來以後需要進行初始化執行,才能夠達到效果,下面以onchange事件為例。首先在窗體formshow事件裡面新增過程,procedure tbaseform.formshow sender tobject begin inherited init...
直接初始化和複製初始化
關於這個問題,國內外都有許多爭論,但我至今未找到滿意的答案,至於為為什麼,這就是今天要說明的。可能大家都有看過c primer,我看的是第四版,中文版,英文水平不怎麼樣。其中第13章,描述說,複製建構函式可用於 1.根據另乙個同型別的物件顯式或隱式初始化乙個物件 2.複製乙個物件,將它作為引數傳遞給...