乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      主控程序之插件裝載器一

       aaie_ 2013-04-29

      對(duì)于DELPHI來(lái)說(shuō),總共支持倆種類(lèi)型的插件:DLL和BPL方式的插件。

      對(duì)于比較完美的插件框架來(lái)說(shuō),倆種類(lèi)型的插件都要支持。

      unit DLLLoader;

      interface

      uses
        windows, Classes, SysUtils, Forms, StrUtils;

      type
        TLibraryType = (dll, bpl);  // plugin type: dll or bpl

        TDLLLoader = class(TObject)
        private
          FHandle: THandle;
          FFileName: string;
          FLibraryType: TLibraryType;
          procedure SetFileName(const Value: string);
        protected
          function GetApplicationPath: string;
        public
          constructor Create(DllFileName: string);
          destructor destroy(); override;
          procedure FreeHandle(); virtual;
          property FileName: string read FFileName write SetFileName;
          property DLLHandle: THandle read FHandle;
        end;

      implementation

        { TDLLLoader }

      constructor TDLLLoader.Create(DllFileName: string);
      var
        ext: string;
      begin
        ext := RightStr(DllFileName, 4);
        if ext = '.dll' then FLibraryType := dll
        else if ext = '.bpl' then FLibraryType := bpl;
        FileName := DLLFileName;
      end;

      destructor TDLLLoader.destroy;
      begin
        FreeHandle;
        inherited;
      end;

      procedure TDLLLoader.FreeHandle;
      begin
        if FHandle <> 0 then
          case FLibraryType of
            dll: FreeLibrary(FHandle);
            bpl: UnloadPackage(FHandle);
          end;
      end;

      function TDLLLoader.GetApplicationPath: string;
      begin
        result := ExtractFilePath(Application.ExeName);
      end;

      procedure TDLLLoader.SetFileName(const Value: string);
      begin
        if FFileName <> Value then
        begin
          FFileName := Value;
          case FLibraryType of
            dll: FHandle := LoadLibrary(PChar(FFileName));
            bpl: FHandle := LoadPackage(FFileName)
          end;
          if FHandle = 0 then
            raise Exception.Create(Value + 'load plugin fail.');
        end;
      end;

      end.

        本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶(hù)發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶(hù) 評(píng)論公約

        類(lèi)似文章 更多