一个小系统有MS_ACCESS版和MS_SQL版,代码中使用预编译对其的一些区别部分进行了区分,但是每次要是换成另一种版本的时候都要修个很多单元的定义,比较麻烦,不知道有没有什么好的办法可以解决?

解决方案 »

  1.   

    统一在所有单元中include同一个文件,比如foo.inc,内容是
    {$DEFINE MS_ACCESS}
    {$IFNDEF ACCESS}
    {$DEFINE MS_SQL}
    {$ENDIF}由access切换成sql的时候只要把foo.inc中的
    {$DEFINE MS_ACCESS}
    最前面的“{$”改掉,比如中间加个空格或者.之类的就可以直接用了
      

  2.   

    定义权限基类,然后派生两个子类  TQX_Base = class  //基类
      private
        FDesStream:TMemoryStream;
        p:PChar;
      public
        constructor Create;
      end;  TQX_Access = class(TQX_Base)   //逐笔成交明细
      private  public
      end;  TQX_Sql = class(TConverTQX_BasetBase)    //实时行情快照
      private  public
      end;使用时,定义一个TQX_Base 的变量
    MyQX:TQX_Base 
    使用access时,MyQX := TQX_Access.Create
    使用Sql时,MyQX := TQX_Sql.Create
    后面的处理过程都不用改