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

📄 cs2_var.pas

📁 Delphi script parser
💻 PAS
📖 第 1 页 / 共 4 页
字号:
      end;
    ptOr:
      begin
        if (not isIntegerType(V2)) and (not ISBooleanType(v2)) then
        begin
          Perform := False;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte or GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte or GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 or GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 or GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 or GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 or GetInt(V2);
            end;
          CSV_Bool:
            begin
              v1^.CV_Bool := v1^.CV_Bool or GetBool(V2);
            end;
        else
          Err := True;
        end;
      end;
    ptXor:
      begin
        if (not isIntegerType(V2)) and (not ISBooleanType(v2)) then
        begin
          Perform := False;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte xor GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte xor GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 xor GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 xor GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 xor GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 xor GetInt(V2);
            end;
          CSV_Bool:
            begin
              v1^.CV_Bool := v1^.CV_Bool xor GetBool(V2);
            end;
        else
          Err := True;
        end;
      end;
    ptShr:
      begin
        if not isIntegerType(V2) then
        begin
          Perform := True;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte shr GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte shr GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 shr GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 shr GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 shr GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 shr GetInt(V2);
            end;
        else
          Err := True;
        end;
      end;
    ptShl:
      begin
        if not isIntegerType(V2) then
        begin
          Perform := True;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte shl GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte shl GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 shl GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 shl GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 shl GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 shl GetInt(V2);
            end;
        else
          Err := True;
        end;
      end;
    PtGreater: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte > GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte > GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte > GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte > GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char > v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 > GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 > GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 > GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 > GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 > GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 > GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 > GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 > GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real > GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single > GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double > GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended > GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp > GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool > V2^.Cv_Bool);
        CSV_String: MakeItBool(V1^.Cv_Str > V2^.Cv_Str);
      else Err := True;
      end; {case item}
    PtLess: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte < GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte < GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte < GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte < GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char < v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 < GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 < GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 < GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 < GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 < GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 < GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 < GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 < GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real < GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single < GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double < GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended < GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp < GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool < V2^.Cv_Bool);
        CSV_String: MakeItBool(V1^.Cv_Str < V2^.Cv_Str);
      else Err := True;
      end; {case item}
    PtGreaterEqual: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte >= GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte >= GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte >= GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte >= GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char >= v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 >= GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 >= GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 >= GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 >= GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 >= GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 >= GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 >= GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 >= GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real >= GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single >= GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double >= GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended >= GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp >= GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool >= V2^.Cv_Bool);
        CSV_String: MakeItBool(V1^.Cv_Str >= V2^.Cv_Str);
      else Err := True;
      end; {case item}
    PtLessEqual: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte <= GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte <= GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte <= GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte <= GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char <= v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 <= GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 <= GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 <= GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 <= GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 <= GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 <= GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 <= GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 <= GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real <= GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single <= GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double <= GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended <= GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp <= GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool <= V2^.Cv_Bool);
        CSV_String: MakeItBool(V1^.Cv_Str <= V2^.Cv_Str);
      else Err := True;
      end; {case item}
    PtEqual: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte = GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte = GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte = GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte = GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char = v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 = GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 = GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 = GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 = GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 = GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 = GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 = GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 = GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real = GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single = GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double = GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended = GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp = GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool = V2^.Cv_Bool);
        CSV_String: MakeItBool(v1^.Cv_Str = v2^.Cv_Str)
      else
        Err := True;
      end; {case item}
    PtNotEqual: case V1^.VType of
        CSV_UByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_UByte <> GetReal(v2))
          else
            MakeItBool(v1^.Cv_UByte <> GetInt(V2));
        CSV_SByte: if IsRealType(v2) then
            MakeItBool(V1^.Cv_SByte <> GetReal(v2))
          else
            MakeItBool(v1^.Cv_SByte <> GetInt(V2));
        CSV_Char: if v2^.VType = CSV_Char then
            MakeItBool(V1^.Cv_Char <> v2^.CV_Char)
          else
            Err := True;
        CSV_UInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint16 <> GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt16 <> GetInt(V2));
        CSV_SInt16: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint16 <> GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt16 <> GetInt(V2));
        CSV_UInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Uint32 <> GetReal(v2))
          else
            MakeItBool(v1^.CV_UInt32 <> GetInt(V2));
        CSV_SInt32: if IsRealType(v2) then
            MakeItBool(V1^.Cv_Sint32 <> GetReal(v2))
          else
            MakeItBool(v1^.CV_SInt32 <> GetInt(V2));
        CSV_Real: MakeItBool(V1^.Cv_Real <> GetReal(v2));
        CSV_Single: MakeItBool(V1^.Cv_Single <> GetReal(v2));
        CSV_Double: MakeItBool(V1^.Cv_Double <> GetReal(v2));
        CSV_Extended: MakeItBool(V1^.Cv_Extended <> GetReal(v2));
        CSV_Comp: MakeItBool(V1^.Cv_Comp <> GetReal(v2));
        CSV_Bool: MakeItBool(V1^.Cv_Bool <> V2^.Cv_Bool);
        CSV_String: MakeItBool(v1^.Cv_Str <> v2^.Cv_Str)
      else
        Err := True;
      end; {case item}
  end;
  PerForm := not Err;
end;
{$IFDEF DELPHI}{$WARNINGS ON}{$ENDIF}
end.

⌨️ 快捷键说明

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