打个比方,我能否将程序的最后编译时间自动插入到数据库的某个字段里面,抽象点就是标题描述那样编译时执行而运行时不执行.
这是突然冒出来的想法,不知道有无解?

解决方案 »

  1.   

    呵呵,读取一下exe的修改时间,保存到数据库里。
      

  2.   

    翻出来的帖子,伴水老大的
    ToolsAPI   
      IOTAEditActions.CompileProject   
        
      参考   
      http://access911.net/appraise.asp?recordid=72FAB11E16DCE7F3&type=a   
        
      unit   EagleBufferList;     
        
      interface     
        
      procedure   Register;     
        
      implementation     
        
      uses   Windows,   Classes,   SysUtils,Menus,   ToolsAPI,   Controls   ;     
        
      type     
          TBufferList   =   class(TNotifierObject,   IUnknown,   IOTANotifier,     
              IOTAKeyboardBinding)             
              function   GetBindingType:   TBindingType;     
              function   GetDisplayName:   string;     
              function   GetName:   string;     
              procedure   BindKeyboard(const   BindingServices:   IOTAKeyBindingServices);     
          protected             
              procedure   CodeCompletion(const   Context:   IOTAKeyContext;   KeyCode:   TShortcut;     
                  var   BindingResult:   TKeyBindingResult);     
          end;     
              
      resourcestring     
          sBufferList   =   'Eagle''s   Buffer   List';         
        
      //register   this   key   binding     
      procedure   Register;     
      begin     
          (BorlandIDEServices   as   IOTAKeyBoardServices).AddKeyboardBinding(TBufferList.Create);         
      end;     
        
      {   TBufferList   }     
        
        
      //the   code   to   bind   key     
      procedure   TBufferList.BindKeyboard(const   BindingServices:   IOTAKeyBindingServices);     
      begin     
          BindingServices.AddKeyBinding([ShortCut(Ord('P'),   [ssShift,   ssCtrl,   ssAlt])],   CodeCompletion,   Pointer(csCodeList   or   csManual));     
          BindingServices.AddKeyBinding([ShortCut(Ord('O'),   [ssShift,   ssCtrl,   ssAlt])],   CodeCompletion,   Pointer(csParamList   or   csManual));         
      end;     
        
      //do   code   completion     
      procedure   TBufferList.CodeCompletion(const   Context:   IOTAKeyContext;     
          KeyCode:   TShortcut;   var   BindingResult:   TKeyBindingResult);     
      begin     
        
          (Context.EditBuffer.TopView   as   IOTAEditActions).CodeCompletion(Byte(Context.Context));     
          BindingResult   :=   krHandled;     
        
      end;     
        
      function   TBufferList.GetBindingType:   TBindingType;     
      begin     
          Result   :=   btPartial;     
      end;     
        
      function   TBufferList.GetDisplayName:   string;     
      begin     
          Result   :=   sBufferList;     
      end;     
        
      function   TBufferList.GetName:   string;     
      begin     
          Result   :=   'EagleKing.BufferList';     //do   not   localize     
      end;     
        
      end.