📄 dbf_prscore.pas
字号:
Res.MemoryPos^^ := Char(AnsiStrComp(Args[0], Args[1]) <> 0);
end;
procedure FuncStr_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(AnsiStrComp(Args[0], Args[1]) < 0);
end;
procedure FuncStr_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(AnsiStrComp(Args[0], Args[1]) > 0);
end;
procedure FuncStr_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(AnsiStrComp(Args[0], Args[1]) <= 0);
end;
procedure FuncStr_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(AnsiStrComp(Args[0], Args[1]) >= 0);
end;
procedure Func_FF_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ = PDouble(Args[1])^);
end;
procedure Func_FF_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <> PDouble(Args[1])^);
end;
procedure Func_FF_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ < PDouble(Args[1])^);
end;
procedure Func_FF_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ > PDouble(Args[1])^);
end;
procedure Func_FF_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <= PDouble(Args[1])^);
end;
procedure Func_FF_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ >= PDouble(Args[1])^);
end;
procedure Func_FI_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ = PInteger(Args[1])^);
end;
procedure Func_FI_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <> PInteger(Args[1])^);
end;
procedure Func_FI_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ < PInteger(Args[1])^);
end;
procedure Func_FI_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ > PInteger(Args[1])^);
end;
procedure Func_FI_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <= PInteger(Args[1])^);
end;
procedure Func_FI_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ >= PInteger(Args[1])^);
end;
procedure Func_II_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ = PInteger(Args[1])^);
end;
procedure Func_II_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <> PInteger(Args[1])^);
end;
procedure Func_II_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ < PInteger(Args[1])^);
end;
procedure Func_II_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ > PInteger(Args[1])^);
end;
procedure Func_II_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <= PInteger(Args[1])^);
end;
procedure Func_II_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ >= PInteger(Args[1])^);
end;
procedure Func_IF_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ = PDouble(Args[1])^);
end;
procedure Func_IF_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <> PDouble(Args[1])^);
end;
procedure Func_IF_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ < PDouble(Args[1])^);
end;
procedure Func_IF_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ > PDouble(Args[1])^);
end;
procedure Func_IF_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <= PDouble(Args[1])^);
end;
procedure Func_IF_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ >= PDouble(Args[1])^);
end;
{$ifdef SUPPORT_INT64}
procedure Func_LL_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ = PInt64(Args[1])^);
end;
procedure Func_LL_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <> PInt64(Args[1])^);
end;
procedure Func_LL_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ < PInt64(Args[1])^);
end;
procedure Func_LL_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ > PInt64(Args[1])^);
end;
procedure Func_LL_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <= PInt64(Args[1])^);
end;
procedure Func_LL_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ >= PInt64(Args[1])^);
end;
procedure Func_LF_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ = PDouble(Args[1])^);
end;
procedure Func_LF_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <> PDouble(Args[1])^);
end;
procedure Func_LF_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ < PDouble(Args[1])^);
end;
procedure Func_LF_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ > PDouble(Args[1])^);
end;
procedure Func_LF_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <= PDouble(Args[1])^);
end;
procedure Func_LF_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ >= PDouble(Args[1])^);
end;
procedure Func_FL_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ = PInt64(Args[1])^);
end;
procedure Func_FL_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <> PInt64(Args[1])^);
end;
procedure Func_FL_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ < PInt64(Args[1])^);
end;
procedure Func_FL_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ > PInt64(Args[1])^);
end;
procedure Func_FL_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ <= PInt64(Args[1])^);
end;
procedure Func_FL_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PDouble(Args[0])^ >= PInt64(Args[1])^);
end;
procedure Func_LI_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ = PInteger(Args[1])^);
end;
procedure Func_LI_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <> PInteger(Args[1])^);
end;
procedure Func_LI_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ < PInteger(Args[1])^);
end;
procedure Func_LI_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ > PInteger(Args[1])^);
end;
procedure Func_LI_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ <= PInteger(Args[1])^);
end;
procedure Func_LI_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInt64(Args[0])^ >= PInteger(Args[1])^);
end;
procedure Func_IL_EQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ = PInt64(Args[1])^);
end;
procedure Func_IL_NEQ(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <> PInt64(Args[1])^);
end;
procedure Func_IL_LT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ < PInt64(Args[1])^);
end;
procedure Func_IL_GT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ > PInt64(Args[1])^);
end;
procedure Func_IL_LTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ <= PInt64(Args[1])^);
end;
procedure Func_IL_GTE(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(PInteger(Args[0])^ >= PInt64(Args[1])^);
end;
{$endif}
procedure Func_AND(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(Boolean(Args[0]^) and Boolean(Args[1]^));
end;
procedure Func_OR(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(Boolean(Args[0]^) or Boolean(Args[1]^));
end;
procedure Func_NOT(Param: PExpressionRec);
begin
with Param^ do
Res.MemoryPos^^ := Char(not Boolean(Args[0]^));
end;
initialization
DbfWordsGeneralList := TExpressList.Create;
DbfWordsInsensGeneralList := TExpressList.Create;
DbfWordsInsensNoPartialList := TExpressList.Create;
DbfWordsInsensPartialList := TExpressList.Create;
DbfWordsSensGeneralList := TExpressList.Create;
DbfWordsSensNoPartialList := TExpressList.Create;
DbfWordsSensPartialList := TExpressList.Create;
with DbfWordsGeneralList do
begin
// basic function functionality
Add(TLeftBracket.Create('(', nil));
Add(TRightBracket.Create(')', nil));
Add(TComma.Create(',', nil));
// operators - name, param types, result type, func addr, precedence
Add(TFunction.CreateOper('+', 'SS', etString, nil, 40));
Add(TFunction.CreateOper('+', 'FF', etFloat, FuncAdd_F_FF, 40));
Add(TFunction.CreateOper('+', 'FI', etFloat, FuncAdd_F_FI, 40));
Add(TFunction.CreateOper('+', 'IF', etFloat, FuncAdd_F_IF, 40));
Add(TFunction.CreateOper('+', 'II', etInteger, FuncAdd_F_II, 40));
{$ifdef SUPPORT_INT64}
Add(TFunction.CreateOper('+', 'FL', etFloat, FuncAdd_F_FL, 40));
Add(TFunction.CreateOper('+', 'IL', etLargeInt, FuncAdd_F_IL, 40));
Add(TFunction.CreateOper('+', 'LF', etFloat, FuncAdd_F_LF, 40));
Add(TFunction.CreateOper('+', 'LL', etLargeInt, FuncAdd_F_LI, 40));
Add(TFunction.CreateOper('+', 'LI', etLargeInt, FuncAdd_F_LL, 40));
{$endif}
Add(TFunction.CreateOper('-', 'FF', etFloat, FuncSub_F_FF, 40));
Add(TFunction.CreateOper('-', 'FI', etFloat, FuncSub_F_FI, 40));
Add(TFunction.CreateOper('-', 'IF', etFloat, FuncSub_F_IF, 40));
Add(TFunction.CreateOper('-', 'II', etInteger, FuncSub_F_II, 40));
{$ifdef SUPPORT_INT64}
Add(TFunction.CreateOper('-', 'FL', etFloat, FuncSub_F_FL, 40));
Add(TFunction.CreateOper('-', 'IL', etLargeInt, FuncSub_F_IL, 40));
Add(TFunction.CreateOper('-', 'LF', etFloat, FuncSub_F_LF, 40));
Add(TFunction.CreateOper('-', 'LL', etLargeInt, FuncSub_F_LI, 40));
Add(TFunction.CreateOper('-', 'LI', etLargeInt, FuncSub_F_LL, 40));
{$endif}
Add(TFunction.CreateOper('*', 'FF', etFloat, FuncMul_F_FF, 40));
Add(TFunction.CreateOper('*', 'FI', etFloat, FuncMul_F_FI, 40));
Add(TFunction.CreateOper('*', 'IF', etFloat, FuncMul_F_IF, 40));
Add(TFunction.CreateOper('*', 'II', etInteger, FuncMul_F_II, 40));
{$ifdef SUPPORT_INT64}
Add(TFunction.CreateOper('*', 'FL', etFloat, FuncMul_F_FL, 40));
Add(TFunction.CreateOper('*', 'IL', etLargeInt, FuncMul_F_IL, 40));
Add(TFunction.CreateOper('*', 'LF', etFloat, FuncMul_F_LF, 40));
Add(TFunction.CreateOper('*', 'LL', etLargeInt, FuncMul_F_LI, 40));
Add(TFunction.CreateOper('*', 'LI', etLargeInt, FuncMul_F_LL, 40));
{$endif}
Add(TFunction.CreateOper('/', 'FF', etFloat, FuncDiv_F_FF, 40));
Add(TFunction.CreateOper('/', 'FI', etFloat, FuncDiv_F_FI, 40));
Add(TFunction.CreateOper('/', 'IF', etFloat, FuncDiv_F_IF, 40));
Add(TFunction.CreateOper('/', 'II', etInteger, FuncDiv_F_II, 40));
{$ifdef SUPPORT_INT64}
Add(TFunction.CreateOper('/', 'FL', etFloat, FuncDiv_F_FL, 40));
Add(TFunction.CreateOper('/', 'IL', etLargeInt, FuncDiv_F_IL, 40));
Add(TFunction.CreateOper('/', 'LF', etFloat, FuncDiv_F_LF, 40));
Add(TFunction.CreateOper('/', 'LL', etLargeInt, FuncDiv_F_LI, 40));
Add(TFunction.CreateOper('/', 'LI', etLargeInt, FuncDiv_F_LL, 40));
{$endif}
Add(TFunction.CreateOper('=', 'FF', etBoolean, Func_FF_EQ , 80));
Add(TFunction.CreateOper('<', 'FF', etBoolean, Func_FF_LT , 80));
Add(TFunction.CreateOper('>', 'FF', etBoolean, Func_FF_GT , 80));
Add(TFunction.CreateOper('<=','FF',
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -