📄 metaphysicsbasic.pas
字号:
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 + -