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

📄 basic.pas

📁 大六壬
💻 PAS
📖 第 1 页 / 共 2 页
字号:
  FItems[tgYi].FCaption:='乙';
  FItems[tgYi].FFangWei:=fwDong;
  FItems[tgYi].FYinYnag:=yyYin;
  FItems[tgYi].FWuXing:=FWuXingLian.Items[wxMu];
  FItems[tgYi].FDiGong:=dzChen;

  FItems[tgBing]:=TTianGanYuansu.Create;
  FItems[tgBing].FOrder:=tgBing;
  FItems[tgBing].FCaption:='丙';
  FItems[tgBing].FFangWei:=fwNan;
  FItems[tgBing].FYinYnag:=yyYang;
  FItems[tgBing].FWuXing:=FWuXingLian.Items[wxHuo];
  FItems[tgBing].FDiGong:=dzSi;

  FItems[tgDing]:=TTianGanYuansu.Create;
  FItems[tgDing].FOrder:=tgDing;
  FItems[tgDing].FCaption:='丁';
  FItems[tgDing].FFangWei:=fwNan;
  FItems[tgDing].FYinYnag:=yyYin;
  FItems[tgDing].FWuXing:=FWuXingLian.Items[wxHuo];
  FItems[tgDing].FDiGong:=dzWei;

  FItems[tgWu]:=TTianGanYuansu.Create;
  FItems[tgWu].FOrder:=tgWu;
  FItems[tgWu].FCaption:='戊';
  FItems[tgWu].FFangWei:=fwNan;
  FItems[tgWu].FYinYnag:=yyYang;
  FItems[tgWu].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[tgWu].FDiGong:=dzSi;

  FItems[tgJi]:=TTianGanYuansu.Create;
  FItems[tgJi].FOrder:=tgJi;
  FItems[tgJi].FCaption:='己';
  FItems[tgJi].FFangWei:=fwNan;
  FItems[tgJi].FYinYnag:=yyYin;
  FItems[tgJi].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[tgJi].FDiGong:=dzWei;

  FItems[tgGeng]:=TTianGanYuansu.Create;
  FItems[tgGeng].FOrder:=tgGeng;
  FItems[tgGeng].FCaption:='庚';
  FItems[tgGeng].FFangWei:=fwXi;
  FItems[tgGeng].FYinYnag:=yyYang;
  FItems[tgGeng].FWuXing:=FWuXingLian.Items[wxJin];
  FItems[tgGeng].FDiGong:=dzShen;

  FItems[tgXin]:=TTianGanYuansu.Create;
  FItems[tgXin].FOrder:=tgXin;
  FItems[tgXin].FCaption:='辛';
  FItems[tgXin].FFangWei:=fwXi;
  FItems[tgXin].FYinYnag:=yyYin;
  FItems[tgXin].FWuXing:=FWuXingLian.Items[wxJin];
  FItems[tgXin].FDiGong:=dzXu;

  FItems[tgRen]:=TTianGanYuansu.Create;
  FItems[tgRen].FOrder:=tgRen;
  FItems[tgRen].FCaption:='壬';
  FItems[tgRen].FFangWei:=fwBei;
  FItems[tgRen].FYinYnag:=yyYang;
  FItems[tgRen].FWuXing:=FWuXingLian.Items[wxShui];
  FItems[tgRen].FDiGong:=dzHai;

  FItems[tgGui]:=TTianGanYuansu.Create;
  FItems[tgGui].FOrder:=tgGui;
  FItems[tgGui].FCaption:='癸';
  FItems[tgGui].FFangWei:=fwBei;
  FItems[tgGui].FYinYnag:=yyYin;
  FItems[tgGui].FWuXing:=FWuXingLian.Items[wxShui];
  FItems[tgGui].FDiGong:=dzChou;

  FIndex:=Low(TTianGanShunXu);

end;

destructor TTianGanLian.Destroy;
var
  tgI:TTianGanShunXu;
begin
  for tgI:=tgJia to tgGui do//逐个释放天干元素
  begin
    FItems[tgI].Free;
  end;
  inherited;
end;

function TTianGanLian.First: TTianGanShunXu;
begin
  FIndex:=Low(TTianGanShunXu);
  Result:=FIndex;
end;

function TTianGanLian.Get(TheIndex: TTianGanShunXU): TTianGanYuanSu;
begin
  FIndex:=TheIndex;
  Result:=FItems[FIndex];
end;

function TTianGanLian.GetCurrentItem: TTianGanYuanSu;
begin
  Result:=FItems[FIndex];
end;

function TTianGanLian.Last: TTianGanShunXU;
begin
  FIndex:=High(TTianGanShunXu);
  Result:=FIndex;
end;

procedure TTianGanLian.SetIndex(Value: TTianGanShunXU);
begin
  if (Value<=Low(TTianGanShunXu)) or (Value>High(TTianGanShunXu)) then
    Exit//超过范围
  else
    FIndex:=TTianGanShunXu(Value);
end;

function TTianGanLian.Step(StepLen: Integer): TTianGanShunXU;
begin
  I:=Integer(FIndex);
  I:=(I+StepLen) mod 10;//取 5 的余数
  if I<0 then I:=10+I;//变补码
  FIndex:=TTianGanShunXu(I);
  Result:=FIndex;
end;

{ /TTianGanLian }//天干链


{ TDiZhiLian }//地支链

constructor TDiZhiLian.Create;
begin
  FWuXingLian:=TWuXingLian.Create;//内置五行链

  FItems[dzZi]:=TDiZhiYuanSu.Create;
  FItems[dzZi].FOrder:=dzZi;
  FItems[dzZi].FCaption:='子';
  FItems[dzZi].FFangWei:=fwBei;
  FItems[dzZi].FYinYnag:=yyYang;
  FItems[dzZi].FWuXing:=FWuXingLian.Items[wxShui];
  FItems[dzZi].FHuoLi:=hlZhong;

  FItems[dzChou]:=TDiZhiYuanSu.Create;
  FItems[dzChou].FOrder:=dzChou;
  FItems[dzChou].FCaption:='丑';
  FItems[dzChou].FFangWei:=fwBei;
  FItems[dzChou].FYinYnag:=yyYin;
  FItems[dzChou].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[dzChou].FHuoLi:=hlJi;

  FItems[dzYin]:=TDiZhiYuanSu.Create;
  FItems[dzYin].FOrder:=dzYin;
  FItems[dzYin].FCaption:='寅';
  FItems[dzYin].FFangWei:=fwDong;
  FItems[dzYin].FYinYnag:=yyYang;
  FItems[dzYin].FWuXing:=FWuXingLian.Items[wxMu];
  FItems[dzYin].FHuoLi:=hlMeng;

  FItems[dzMao]:=TDiZhiYuanSu.Create;
  FItems[dzMao].FOrder:=dzMao;
  FItems[dzMao].FCaption:='卯';
  FItems[dzMao].FFangWei:=fwDong;
  FItems[dzMao].FYinYnag:=yyYin;
  FItems[dzMao].FWuXing:=FWuXingLian.Items[wxMu];
  FItems[dzMao].FHuoLi:=hlZhong;

  FItems[dzChen]:=TDiZhiYuanSu.Create;
  FItems[dzChen].FOrder:=dzChen;
  FItems[dzChen].FCaption:='辰';
  FItems[dzChen].FFangWei:=fwDong;
  FItems[dzChen].FYinYnag:=yyYang;
  FItems[dzChen].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[dzChen].FHuoLi:=hlJi;

  FItems[dzSi]:=TDiZhiYuanSu.Create;
  FItems[dzSi].FOrder:=dzSi;
  FItems[dzSi].FCaption:='巳';
  FItems[dzSi].FFangWei:=fwNan;
  FItems[dzSi].FYinYnag:=yyYin;
  FItems[dzSi].FWuXing:=FWuXingLian.Items[wxHuo];
  FItems[dzSi].FHuoLi:=hlMeng;

  FItems[dzWu]:=TDiZhiYuanSu.Create;
  FItems[dzWu].FOrder:=dzWu;
  FItems[dzWu].FCaption:='午';
  FItems[dzWu].FFangWei:=fwNan;
  FItems[dzWu].FYinYnag:=yyYang;
  FItems[dzWu].FWuXing:=FWuXingLian.Items[wxHuo];
  FItems[dzWu].FHuoLi:=hlZhong;

  FItems[dzWei]:=TDiZhiYuanSu.Create;
  FItems[dzWei].FOrder:=dzWei;
  FItems[dzWei].FCaption:='未';
  FItems[dzWei].FFangWei:=fwNan;
  FItems[dzWei].FYinYnag:=yyYin;
  FItems[dzWei].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[dzWei].FHuoLi:=hlJi;

  FItems[dzShen]:=TDiZhiYuanSu.Create;
  FItems[dzShen].FOrder:=dzShen;
  FItems[dzShen].FCaption:='申';
  FItems[dzShen].FFangWei:=fwXi;
  FItems[dzShen].FYinYnag:=yyYang;
  FItems[dzShen].FWuXing:=FWuXingLian.Items[wxJin];
  FItems[dzShen].FHuoLi:=hlMeng;

  FItems[dzYou]:=TDiZhiYuanSu.Create;
  FItems[dzYou].FOrder:=dzYou;
  FItems[dzYou].FCaption:='酉';
  FItems[dzYou].FFangWei:=fwXi;
  FItems[dzYou].FYinYnag:=yyYin;
  FItems[dzYou].FWuXing:=FWuXingLian.Items[wxJin];
  FItems[dzYou].FHuoLi:=hlZhong;

  FItems[dzXu]:=TDiZhiYuanSu.Create;
  FItems[dzXu].FOrder:=dzXu;
  FItems[dzXu].FCaption:='戌';
  FItems[dzXu].FFangWei:=fwXi;
  FItems[dzXu].FYinYnag:=yyYang;
  FItems[dzXu].FWuXing:=FWuXingLian.Items[wxTu];
  FItems[dzXu].FHuoLi:=hlJi;

  FItems[dzHai]:=TDiZhiYuanSu.Create;
  FItems[dzHai].FOrder:=dzHai;
  FItems[dzHai].FCaption:='亥';
  FItems[dzHai].FFangWei:=fwBei;
  FItems[dzHai].FYinYnag:=yyYin;
  FItems[dzHai].FWuXing:=FWuXingLian.Items[wxShui];
  FItems[dzHai].FHuoLi:=hlMeng;

  FIndex:=Low(TDiZhiShunXu);

end;

destructor TDiZhiLian.Destroy;
var
  dzI:TDiZhiShunXu;
begin
  for dzI:=Low(TDiZhiShunXu) to High(TDiZhiShunXu) do//逐个释放地支元素
  begin
    FItems[dzI].Free;
  end;
  inherited;
end;

function TDiZhiLian.First: TDiZhiShunXU;
begin
  FIndex:=Low(TDiZhiShunXu);
  Result:=FIndex;
end;

function TDiZhiLian.Get(TheIndex: TDiZhiShunXu): TDiZhiYuanSu;
begin
  FIndex:=TheIndex;
  Result:=FItems[FIndex];
end;

function TDiZhiLian.GetCurrentItem: TDiZhiYuanSu;
begin
  Result:=FItems[FIndex];
end;

function TDiZhiLian.Last: TDiZhiShunXu;
begin
  FIndex:=High(TDiZhiShunXu);
  Result:=FIndex;
end;

procedure TDiZhiLian.SetIndex(Value: TDiZhiShunXu);
begin
  if (Value<=Low(TDiZhiShunXu)) or (Value>High(TDiZhiShunXu)) then
    Exit//超过范围
  else
    FIndex:=TDiZhiShunXu(Value);
end;

function TDiZhiLian.Step(StepLen: Integer): TDiZhiShunXU;
begin
  I:=Integer(FIndex);
  I:=(I+StepLen) mod 12;//取 10 的余数
  if I<0 then I:=12+I;//变补码
  FIndex:=TDiZhiShunXu(I);
  Result:=FIndex;
end;
{ /TDiZhiLian }//地支链

end.

⌨️ 快捷键说明

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