⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metaphysicsbasic.pas

📁 梅花易数排课软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
unit MetaphysicsBasic; //玄学基本元素和类

interface

//uses CycleList;

type
   //阴阳
  TYinYang=(yyNull,yyYin,yyYang);
  //性别
  TXingBie=TYinYang;
  //五行顺序
  TWuXingShunXu=(wxShui, wxMu, wxHuo, wxTu, wxJin);
  //天干顺序
  TTianGanShunXu=(tgNull,tgJia,tgYi,tgBing,tgDing,tgWu,tgJi,tgGeng,tgXin,tgRen,tgGui);
  //地支顺序
  TDiZhiShunXu=(dzNull,dzZi,dzChou,dzYin,dzMao,dzChen,dzSi,dzWu,dzWei,dzShen,dzYou,dzXu,dzHai);
  //方位
  //TFangWei=(fwBei, fwDong, fwNan, fwXi, fwZhong);
  //活力
  THuoLi=(hlMeng, hlZhong, hlJi);//孟 仲 季
  //元素关系
  TWuXingGuanXi=(Sheng{生},Bi{比},Xie{泄},Ke{克},Zei{贼});//元素间五行关系、作用 以下为主

  //五行元素
  TWuXingYuanSu=class
  private
    vOrder:TWuXingShunXu; //顺序
    vCaption:string; //名称
  public
    property Order:TWuXingShunXu read vOrder write vOrder; //顺序
    property Caption:string read vCaption write vCaption; //名称
  end;

  //五行链
  TAWuXingYuanSu=Array[wxShui..wxJin] of TWuXingYuanSu;//五行元素数组

  TWuXing=class
  private
    vItems:TAWuXingYuanSu;//五行元素数组
    vFinger:TWuXingShunXu;//指针
    function GetItem(TheFinger: TWuXingShunXu):TWuXingYuanSu;//获取元素
//    procedure SetFinger(Value:TWuXingShunXu);
    function GetCurrentItem: TWuXingYuanSu;//当前指针的元素
  public
    destructor Destroy; override; //销毁
    constructor Create;//创建
    procedure First;//链首
    procedure Last;//链尾
    procedure Step(StepLen:Integer){:TWuXingShunXu};//步进 正负均可
    procedure StepNext;
    property Finger:TWuXingShunXu read vFinger write vFinger;//当前元素指针
    property Items[TheFinger: TWuXingShunXu]:TWuXingYuanSu read GetItem;//元素
    property CurrItem:TWuXingYuanSu read GetCurrentItem;//当前指针的元素
  end;

  //天干元素
  TTianGan=class
  private
    vOrder:TTianGanShunXu;//顺序
    vCaption:string;//名称
//    vFangWei:TFangWei;//方位
    vYinYang:TYinYang;//阴阳
    vWuXingShunXu:TWuXingShunXu;//五行属性
    vDiGong:TDiZhiShunXu;//天干所寄地宫
  public
    property Order:TTianGanShunXU read vOrder write vOrder;//顺序
    property Caption:string read vCaption write vCaption;//名称
//    property FangWei:TFangWei read vFangWei write vFangWei;//方位
    property YinYang:TYinYang read vYinYang write vYinYang;//阴阳
    property WuXing:TWuXingShunXu read vWuXingShunXu write vWuXingShunXu;//五行属性
    property DiGong:TDiZhiShunXu read vDiGong write vDiGong;//天干所寄地宫
  end;

  //天干链
  TATianGan=Array[tgJia..tgGui] of TTianGan;//天干元素数组

  TTianGanLian=class
  private
    vItems:TATianGan;//天干元素数组
    vFinger:TTianGanShunXu;//指针
    vWuXing:TWuXing;//五行链
    function GetItem(TheFinger: TTianGanShunXu):TTianGan;//获取元素
//    procedure SetFinger(Value:TTianGanShunXU);
    function GetCurrentItem: TTianGan;//指针的元素
  public
    destructor Destroy; override; //销毁
    constructor Create;//创建
    procedure First;//链首
    procedure Last;//链尾
    procedure Step(StepLen:Integer);//步进 正负均可
    property Finger:TTianGanShunXU read vFinger write vFinger;//当前元素指针
    property Items[TheFinger: TTianGanShunXU]:TTianGan read GetItem;//元素
    property CurrItem:TTianGan read GetCurrentItem;//当前指针的元素
  end;


  //地支元素
  TDiZhi=class
  private
    vOrder:TDiZhiShunXU;//顺序
    vCaption:string;//名称
//    vFangWei:TFangWei;//方位
    vYinYang:TYinYang;//阴阳
    vWuXing:TWuXingShunXu;//五行属性
    vHuoLi:THuoLi;//活力 孟、仲、季
  public
    property Order:TDiZhiShunXu read vOrder write vOrder;//顺序
    property Caption:string read vCaption write vCaption;//名称
//    property FangWei:TFangWei read vFangWei write vFangWei;//方位
    property YinYang:TYinYang read vYinyang write vYinYang;//阴阳
    property WuXing:TWuXingShunXu read vWuXing write vWuXing;//五行属性
    property HuoLi:THuoLi read vHuoLi write vHuoLi;//活力 孟、仲、季
//    destructor Destroy;override;
  end;

  //地支链
  TADiZhi=Array[dzZi..dzHai] of TDiZhi;//地支元素数组

  TDiZhiLian=class
  private
    vItems:TADiZhi;//地支元素数组
    vFinger:TDiZhiShunXU;//指针
    function GetItem(TheFinger: TDiZhiShunXu):TDiZhi;//获取元素
//    procedure SetFinger(Value:TDiZhiShunXu);
    function GetCurrentItem: TDiZhi;//指针的元素
  public
    destructor Destroy; override; //销毁
    constructor Create;//创建
    procedure First;//链首
    procedure Last;//链尾
    procedure Step(StepLen:Integer);//步进 正负均可
    procedure StepNext;
    property Finger:TDiZhiShunXu read vFinger write vFinger;//当前元素指针
    property Items[TheFinger: TDiZhiShunXu]:TDiZhi read GetItem;//元素
    property CurrItem:TDiZhi read GetCurrentItem;//当前指针的元素
  end;

  TZhu=class//柱,四柱的柱
    Gan:TTianGanShunXu;//干
    Zhi:TDiZhiShunXu;//柱
  end;

  TSiZhu=class//四柱
    NianZhu:TZhu;//年柱
    YueZhu:TZhu;//月柱
    RiZhu:TZhu;//日柱
    ShiZhu:TZhu;//时柱
    constructor Create;
    destructor Destroy;override;
  end;

var
  I, II:Integer;
  dzI:TDiZhiShunXu;
  _WX:TWuXing;
  _TGL:TTianGanLian;
  _DZL:TDiZhiLian;
  function WuXingGuanXi(Shang{上}:TWuXingShunXu;Xia{下,为主体}:TWuXingShunXu):TWuXingGuanXi;
  function TianGanWuXing(TG:TTianGanShunXu):TWuXingShunXu;//天干五行
  function DiZhiWuXing(DZ:TDiZhiShunXu):TWuXingShunXu;//地支五行
  function DiZhiHuoLi(DZ:TDiZhiShunXu):THuoLi;//地支活力
  function TianGanYinYang(TG:TTianGanShunXu):TYinYang;//天干阴阳
  function DiZhiYinYang(DZ:TDiZhiShunXu):TYinYang;//地支阴阳
  function TianGanMingcheng(TG:TTianGanShunXu):string;//天干名称
  function DiZhiMingcheng(DZ:TDiZhiShunXu):string;//地支名称
  function GuanXiMingCheng(GX:TWuXingGuanXi):string;//五行相互的关系名称

const
  //支刑
  ZhiXing:array[dzZi..dzHai] of TDiZhiShunXu=(dzMao,dzXu,dzSi,dzZi,dzChen,dzShen,dzWu,dzChou,dzYin,dzYou,dzWei,dzHai);
  //地支驿马
  ZhiMa:array[dzZi..dzHai] of TDiZhiShunXu=(dzYin,dzHai,dzShen,dzSi,dzYin,dzHai,dzShen,dzSi,dzYin,dzHai,dzShen,dzSi);

implementation

{ TWuXing }//五行链

constructor TWuXing.Create;
begin
  //创建五行元素变量,初始化
  vItems[wxShui]:=TWuXingYuanSu.Create;
  vItems[wxShui].Order:=wxShui;
  vItems[wxShui].Caption:='水';

  vItems[wxMu]:=TWuXingYuanSu.Create;
  vItems[wxMu].Order:=wxMu;
  vItems[wxMu].Caption:='木';

  vItems[wxHuo]:=TWuXingYuanSu.Create;
  vItems[wxHuo].Order:=wxHuo;
  vItems[wxHuo].Caption:='火';


  vItems[wxTu]:=TWuXingYuanSu.Create;
  vItems[wxTu].Order:=wxTu;
  vItems[wxTu].Caption:='土';

  vItems[wxJin]:=TWuXingYuanSu.Create;
  vItems[wxJin].Order:=wxJin;
  vItems[wxJin].Caption:='金';

  vFinger:=wxShui;

end;

destructor TWuXing.Destroy;
begin
  //释放元素变量
  vItems[wxShui].Free;
  vItems[wxMu].Free;
  vItems[wxHuo].Free;
  vItems[wxTu].Free;
  vItems[wxJin].Free;
//  SetLength(vItems,0);
  inherited;
end;

procedure TWuXing.First;
begin
  vFinger:=wxShui;
//  Result:=vFinger;
end;

function TWuXing.GetItem(TheFinger: TWuXingShunXu): TWuXingYuanSu;
begin
  vFinger:=TheFinger;
  Result:=vItems[vFinger];
end;

function TWuXing.GetCurrentItem: TWuXingYuanSu;
begin
  Result:=vItems[vFinger];
end;

procedure TWuXing.Last;
begin
  vFinger:=wxJin;//最大值即可
end;

procedure TWuXing.Step(StepLen: Integer){: TWuXingShunXu};
begin
  I:=Abs(StepLen+Integer(vFinger)) mod 5;//有效的内偏移
  Inc(I);
  vFinger:=TWuXingShunXu(I);
end;

procedure TWuXing.StepNext;
begin
  Inc(vFinger);
end;
{ /TWuXing }//五行链

{ TTianGan }//天干链
constructor TTianGanLian.Create;
begin
  vWuXing:=TWuXing.Create;//内置五行链

  vItems[tgJia]:=TTianGan.Create;
  vItems[tgJia].Order:=tgJia;
  vItems[tgJia].Caption:='甲';
  vItems[tgJia].YinYang:=yyYang;
  vItems[tgJia].WuXing:=wxMu;
  vItems[tgJia].DiGong:=dzYin;

  vItems[tgYi]:=TTianGan.Create;
  vItems[tgYi].Order:=tgYi;
  vItems[tgYi].Caption:='乙';
  vItems[tgYi].YinYang:=yyYin;
  vItems[tgYi].WuXing:=wxMu;
  vItems[tgYi].DiGong:=dzChen;

  vItems[tgBing]:=TTianGan.Create;
  vItems[tgBing].Order:=tgBing;
  vItems[tgBing].Caption:='丙';
  vItems[tgBing].YinYang:=yyYang;
  vItems[tgBing].WuXing:=wxHuo;
  vItems[tgBing].DiGong:=dzSi;

  vItems[tgDing]:=TTianGan.Create;
  vItems[tgDing].Order:=tgDing;
  vItems[tgDing].Caption:='丁';
  vItems[tgDing].YinYang:=yyYin;
  vItems[tgDing].WuXing:=wxHuo;
  vItems[tgDing].DiGong:=dzWei;

  vItems[tgWu]:=TTianGan.Create;
  vItems[tgWu].Order:=tgWu;
  vItems[tgWu].Caption:='戊';
  vItems[tgWu].YinYang:=yyYang;
  vItems[tgWu].WuXing:=wxTu;
  vItems[tgWu].DiGong:=dzSi;

  vItems[tgJi]:=TTianGan.Create;
  vItems[tgJi].Order:=tgJi;
  vItems[tgJi].Caption:='己';
  vItems[tgJi].YinYang:=yyYin;
  vItems[tgJi].WuXing:=wxTu;
  vItems[tgJi].DiGong:=dzWei;

  vItems[tgGeng]:=TTianGan.Create;
  vItems[tgGeng].Order:=tgGeng;
  vItems[tgGeng].Caption:='庚';
  vItems[tgGeng].YinYang:=yyYang;
  vItems[tgGeng].WuXing:=wxJin;
  vItems[tgGeng].DiGong:=dzShen;

  vItems[tgXin]:=TTianGan.Create;
  vItems[tgXin].Order:=tgXin;
  vItems[tgXin].Caption:='辛';
  vItems[tgXin].YinYang:=yyYin;
  vItems[tgXin].WuXing:=wxJin;
  vItems[tgXin].DiGong:=dzXu;

  vItems[tgRen]:=TTianGan.Create;
  vItems[tgRen].Order:=tgRen;
  vItems[tgRen].Caption:='壬';
  vItems[tgRen].YinYang:=yyYang;
  vItems[tgRen].WuXing:=wxShui;
  vItems[tgRen].DiGong:=dzHai;

  vItems[tgGui]:=TTianGan.Create;
  vItems[tgGui].Order:=tgGui;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -