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

📄 metaphysicsbasic.pas

📁 梅花易数排课软件
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  vItems[tgGui].Caption:='癸';
  vItems[tgGui].YinYang:=yyYin;
  vItems[tgGui].WuXing:=wxShui;
  vItems[tgGui].DiGong:=dzChou;

  vFinger:=tgJia;

end;

destructor TTianGanLian.Destroy;
var
  tgI:TTianGanShunXu;
begin
  vWuXing.Free;
  for tgI:=tgGui downto tgJia do//逐个释放天干元素
  begin
    vItems[tgI].Free;
  end;
//  SetLength(vItems,0);

  inherited;
end;

procedure TTianGanLian.First;
begin
  vFinger:=tgJia;
//  Result:=vFinger;
end;

function TTianGanLian.GetItem(TheFinger: TTianGanShunXU): TTianGan;
begin
  vFinger:=TheFinger;
  Result:=vItems[vFinger];
end;

function TTianGanLian.GetCurrentItem: TTianGan;
begin
  Result:=vItems[vFinger];
end;

procedure TTianGanLian.Last;
begin
  vFinger:=tgGui;
end;

procedure TTianGanLian.Step(StepLen: Integer);
begin
  StepLen:=StepLen mod 10;//变远偏移称为内偏移
  if StepLen <0 then Inc(StepLen,10);//变负偏移为正偏移
  StepLen:=(Integer(vFinger)+StepLen) mod 11;
  if StepLen=0 then Inc(StepLen);//跳过 tgNull
  vFinger:=TTianGanShunXu(StepLen);
//  Result:=vFinger;
end;

{ /TTianGan }//天干链


{ TDiZhi }//地支链

constructor TDiZhiLian.Create;
begin
  vItems[dzZi]:=TDiZhi.Create;
  vItems[dzZi].Order:=dzZi;
  vItems[dzZi].Caption:='子';
  vItems[dzZi].YinYang:=yyYang;
  vItems[dzZi].WuXing:=wxShui;
  vItems[dzZi].HuoLi:=hlZhong;

  vItems[dzChou]:=TDiZhi.Create;
  vItems[dzChou].Order:=dzChou;
  vItems[dzChou].Caption:='丑';
  vItems[dzChou].YinYang:=yyYin;
  vItems[dzChou].WuXing:=wxTu;
  vItems[dzChou].HuoLi:=hlJi;

  vItems[dzYin]:=TDiZhi.Create;
  vItems[dzYin].Order:=dzYin;
  vItems[dzYin].Caption:='寅';
  vItems[dzYin].YinYang:=yyYang;
  vItems[dzYin].WuXing:=wxMu;
  vItems[dzYin].HuoLi:=hlMeng;

  vItems[dzMao]:=TDiZhi.Create;
  vItems[dzMao].Order:=dzMao;
  vItems[dzMao].Caption:='卯';
  vItems[dzMao].YinYang:=yyYin;
  vItems[dzMao].WuXing:=wxMu;
  vItems[dzMao].HuoLi:=hlZhong;

  vItems[dzChen]:=TDiZhi.Create;
  vItems[dzChen].Order:=dzChen;
  vItems[dzChen].Caption:='辰';
  vItems[dzChen].YinYang:=yyYang;
  vItems[dzChen].WuXing:=wxTu;
  vItems[dzChen].HuoLi:=hlJi;

  vItems[dzSi]:=TDiZhi.Create;
  vItems[dzSi].Order:=dzSi;
  vItems[dzSi].Caption:='巳';
  vItems[dzSi].YinYang:=yyYin;
  vItems[dzSi].WuXing:=wxHuo;
  vItems[dzSi].HuoLi:=hlMeng;

  vItems[dzWu]:=TDiZhi.Create;
  vItems[dzWu].Order:=dzWu;
  vItems[dzWu].Caption:='午';
  vItems[dzWu].YinYang:=yyYang;
  vItems[dzWu].WuXing:=wxHuo;
  vItems[dzWu].HuoLi:=hlZhong;

  vItems[dzWei]:=TDiZhi.Create;
  vItems[dzWei].Order:=dzWei;
  vItems[dzWei].Caption:='未';
  vItems[dzWei].YinYang:=yyYin;
  vItems[dzWei].WuXing:=wxTu;
  vItems[dzWei].HuoLi:=hlJi;

  vItems[dzShen]:=TDiZhi.Create;
  vItems[dzShen].Order:=dzShen;
  vItems[dzShen].Caption:='申';
  vItems[dzShen].YinYang:=yyYang;
  vItems[dzShen].WuXing:=wxJin;
  vItems[dzShen].HuoLi:=hlMeng;

  vItems[dzYou]:=TDiZhi.Create;
  vItems[dzYou].Order:=dzYou;
  vItems[dzYou].Caption:='酉';
  vItems[dzYou].YinYang:=yyYin;
  vItems[dzYou].WuXing:=wxJin;
  vItems[dzYou].HuoLi:=hlZhong;

  vItems[dzXu]:=TDiZhi.Create;
  vItems[dzXu].Order:=dzXu;
  vItems[dzXu].Caption:='戌';
  vItems[dzXu].YinYang:=yyYang;
  vItems[dzXu].WuXing:=wxTu;
  vItems[dzXu].HuoLi:=hlJi;

  vItems[dzHai]:=TDiZhi.Create;
  vItems[dzHai].Order:=dzHai;
  vItems[dzHai].Caption:='亥';
  vItems[dzHai].YinYang:=yyYin;
  vItems[dzHai].WuXing:=wxShui;
  vItems[dzHai].HuoLi:=hlMeng;

  vFinger:=dzZi;

end;

destructor TDiZhiLian.Destroy;
var
  dzI:TDiZhiShunXu;
begin
  for dzI:=dzHai downto dzZi do//逐个释放地支元素
  begin
    vItems[dzI].Free;
  end;
//  setLength(vItems,0);
  inherited;
end;

procedure TDiZhiLian.First;
begin
  vFinger:=dzZi;
//  Result:=vFinger;
end;

function TDiZhiLian.GetItem(TheFinger: TDiZhiShunXu): TDiZhi;
begin
  vFinger:=TheFinger;
  Result:=vItems[vFinger];
end;

function TDiZhiLian.GetCurrentItem: TDiZhi;
begin
  Result:=vItems[vFinger];
end;

procedure TDiZhiLian.Last;
begin
  vFinger:=dzHai;
//  Result:=vFinger;
end;

procedure TDiZhiLian.Step(StepLen: Integer);
begin
  I:=StepLen mod 12;//变远偏移称为内偏移
  if I <0 then Inc(I,12);//变负偏移为正偏移
  I:=(Integer(vFinger)+I) mod 13;
  if I=0 then Inc(I);//跳过 dzNull
  vFinger:=TDiZhiShunXu(I);
//  Result:=vFinger;
end;

procedure TDiZhiLian.StepNext;
begin
  if vFinger = dzHai then vFinger := dzZi else Inc(vFinger);
end;

{ /TDiZhi }//地支链

function WuXingGuanXi(Shang{上}:TWuXingShunXu;Xia{下,为主体}:TWuXingShunXu):TWuXingGuanXi;
//元素关系
//TWuXingGuanXi=(Sheng{生},Bi{比},Xie{泄},Ke{克},Zei{贼});//元素间五行关系,以下为主
label Compared;
begin
  _WX:=TWuXing.Create;

  //0步
  if Shang=Xia then
  begin
    Result:=Bi;//比
    Exit;
  end;

  _WX.Finger:=Shang;

  _WX.Step(1);//1步
  if _WX.Finger=Xia then
  begin
    Result:=Sheng;//生
    Exit;
  end;

  _WX.Step(1);//2步
  if _WX.Finger=Xia then
  begin
    Result:=Ke;//克
    Exit;
  end;

  _WX.Step(1);//3步
  if _WX.Finger=Xia then
  begin
    Result:=Zei;//贼
    Exit;
  end;

  //4步
  Result:=Xie;//泄

Compared://较完了

end;
{ TSiZhu }

constructor TSiZhu.Create;
begin
  NianZhu:=TZhu.Create;
  YueZhu:=TZhu.Create;
  RiZhu:=TZhu.Create;
  ShiZhu:=TZhu.Create;
end;

destructor TSiZhu.Destroy;
begin
  NianZhu.Free;
  YueZhu.Free;
  RiZhu.Free;
  ShiZhu.Free;
  inherited;
end;

function DiZhiWuXing(DZ:TDiZhiShunXu):TWuXingShunXu;//天干五行
begin
  Result:=_DZL.Items[DZ].WuXing;
end;

function TianGanWuXing(TG:TTianGanShunXu):TWuXingShunXu;//地支五行
begin
  Result:=_TGL.Items[TG].WuXing;
end;

function DiZhiHuoLi(DZ:TDiZhiShunXu):THuoLi;
begin
  Result:=_DZL.Items[DZ].HuoLi;
end;

function TianGanYinYang(TG:TTianGanShunXu):TYinYang;//天干阴阳
begin
  Result:=_TGL.Items[TG].YinYang;
end;

function DiZhiYinYang(DZ:TDiZhiShunXu):TYinYang;//地支阴阳
begin
  Result:=_DZL.Items[DZ].YinYang;
end;

function GuanXiMingCheng(GX:TWuXingGuanXi):string;//五行相互的关系名称
begin
//TWuXingGuanXi=(Sheng{生},Bi{比},Xie{泄},Ke{克},Zei{贼});//元素间五行关系、作用 以下为主
  case GX of
    Sheng : Result:='生';
    Bi : Result:='比';
    Xie : Result:='泄';
    Ke : Result:='克';
    Zei : Result:='贼';
  end;
end;

function TianGanMingcheng(TG:TTianGanShunXu):string;//天干名称
begin
  if TG=tgNull then Result:='亡' else Result:=_TGL.Items[TG].Caption;
end;

function DiZhiMingcheng(DZ:TDiZhiShunXu):string;//地支名称
begin
  Result:=_DZL.Items[DZ].Caption;
end;

initialization
  _WX:=TWuXing.Create;
  _DZL:=TDiZhiLian.Create;
  _TGL:=TTianGanLian.Create;

finalization
  _WX.Free;
  _DZL.Free;
  _TGL.Free;

end.

⌨️ 快捷键说明

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