全國計算機(jī)等級考試二級Delphi輔導(dǎo)講義 106

字號:

10.2.4.2 動態(tài)調(diào)用舉例
    對于動態(tài)調(diào)用,我們舉了如下的一個簡單例子。系統(tǒng)一共包含兩個編輯框。在第一個編輯框中輸入一個字符串,而后在第二個編輯框中輸入字符。如果該字符包含在第一個編輯框的字符串中,則標(biāo)簽框顯示信息:“位于第n位。”,否則顯示信息:“不包含這個字符?!薄H鐖D是程序的運行界面。
    輸入檢查功能的實現(xiàn)在Edit2的OnKeyPress事件處理過程中,程序清單如下。
    procedure TForm1.Edit2KeyPress(Sender: TObject; var Key: Char);
    var
    order: Integer;
    txt: PChar;
    PFunc: TFarProc;
    Moudle: THandle;
    begin
    Moudle := Loadlibrary('c:\dlls\example.dll');
    if Moudle > 32 then
    begin
    Edit2.text := '';
    Pfunc := GetProcAddress(Moudle,'Instr');
    txt := StrAlloc(80);
    txt := StrPCopy(txt,Edit1.text);
    Order := TInstr(PFunc)(txt,Key);
    if Order = -1 then
    Label1.Caption := '不包含這個字符 '
    else
    Label1.Caption := '位于第'+IntToStr(Order+1)+'位';
    end;
    Freelibrary(Moudle);
    end;
    在利用GetProcAddess返回的函數(shù)指針時,必須進(jìn)行強(qiáng)制類型轉(zhuǎn)換:
    Order := TInstr(PFunc)(text,Key);
    TInStr是一個定義好了的函數(shù)類型:
    type
    TInStr = function(Source: PChar;Check: Char): Integer;