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

📄 cs2_var.pas

📁 Delphi script parser
💻 PAS
📖 第 1 页 / 共 4 页
字号:
                  CSV_SByte: v1^.CV_SByte := v2^.CV_SByte;
                  CSV_UInt16: v1^.CV_UInt16 := v2^.CV_UInt16;
                  CSV_SInt16: v1^.CV_SInt16 := v2^.CV_SInt16;
                  CSV_UInt32: v1^.CV_UInt32 := v2^.CV_UInt32;
                  CSV_SInt32: v1^.CV_SInt32 := v2^.CV_Sint32;
                  CSV_Char: v1^.CV_Char := v2^.CV_Char;
                  CSV_String: v1^.CV_Str := v2^.CV_Str;
                  CSV_Real: v1^.CV_Real := v2^.CV_Real;
                  CSV_Single: v1^.CV_Single := v2^.CV_Single;
                  CSV_Double: v1^.CV_Double := v2^.CV_Double;
                  CSV_Extended: v1^.CV_Extended := v2^.CV_Extended;
                  CSV_Comp: v1^.CV_Comp := v2^.CV_Comp;
                  CSV_Bool: v1^.CV_Bool := v2^.CV_Bool;
                  CSV_Array: begin
                      v1.cv_ArrItems.Create;
                      for i := 1 to v2^.CV_ArrItems.Count - 1 do
                      begin
                        AddArrayVar(v1.CV_ArrItems, v2^.CV_ArrItems.GetItem(i));
                      end;
                    end;
                end;
              end;
          end;
      end;
    ptMinus:
      case v1^.VType of
        CSV_UByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_UByte - GetReal(v2))
            else
              v1^.CV_UByte := v1^.CV_UByte - GetInt(V2);
          end;
        CSV_SByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SByte - GetReal(v2))
            else
              v1^.CV_SByte := v1^.CV_SByte - GetInt(V2);
          end;
        CSV_UInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_UInt16 - GetReal(v2))
            else
              v1^.CV_UInt16 := v1^.CV_UInt16 - GetInt(V2);
          end;
        CSV_SInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SInt16 - GetReal(v2))
            else
              v1^.CV_SInt16 := v1^.CV_SInt16 - GetInt(V2);
          end;
        CSV_UInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(V1^.Cv_Uint32 - GetReal(v2))
            else
              v1^.CV_UInt32 := v1^.CV_UInt32 - GetInt(V2);
          end;
        CSV_SInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_Sint32 - GetReal(v2))
            else
              v1^.CV_SInt32 := v1^.CV_SInt32 - GetInt(V2);
          end;
        CSV_Real:
          begin
            v1^.CV_Real := v1^.CV_Real - GetReal(V2);
          end;
        CSV_Single:
          begin
            v1^.CV_Single := v1^.CV_Single - GetReal(V2);
          end;
        CSV_Double:
          begin
            v1^.CV_Double := v1^.CV_Double - GetReal(V2);
          end;
        CSV_Extended:
          begin
            v1^.CV_Extended := v1^.CV_Extended - GetReal(V2);
          end;
        CSV_Comp:
          begin
            v1^.cv_Comp := v1^.cv_Comp - GetReal(V2);
          end;
      else
        Err := True;
      end { CASE };
    ptPlus:
      case v1^.VType of
        CSV_UByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_UByte + GetReal(v2))
            else
              v1^.CV_UByte := v1^.CV_UByte + GetInt(V2);
          end;
        CSV_SByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SByte + GetReal(v2))
            else
              v1^.CV_SByte := v1^.CV_SByte + GetInt(V2);
          end;
        CSV_UInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_UInt16 + GetReal(v2))
            else
              v1^.CV_UInt16 := v1^.CV_UInt16 + GetInt(V2);
          end;
        CSV_SInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SInt16 + GetReal(v2))
            else
              v1^.CV_SInt16 := v1^.CV_SInt16 + GetInt(V2);
          end;
        CSV_UInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(V1^.Cv_Uint32 + GetReal(v2))
            else
              v1^.CV_UInt32 := v1^.CV_UInt32 + GetInt(V2);
          end;
        CSV_SInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_Sint32 + GetReal(v2))
            else
              v1^.CV_SInt32 := v1^.CV_SInt32 + GetInt(V2);
          end;
        CSV_Real:
          begin
            v1^.CV_Real := v1^.CV_Real + GetReal(V2);
          end;
        CSV_Single:
          begin
            v1^.CV_Single := v1^.CV_Single + GetReal(V2);
          end;
        CSV_Double:
          begin
            v1^.CV_Double := v1^.CV_Double + GetReal(V2);
          end;
        CSV_Extended:
          begin
            v1^.CV_Extended := v1^.CV_Extended + GetReal(V2);
          end;
        CSV_Comp:
          begin
            v1^.cv_Comp := v1^.cv_Comp + GetReal(V2);
          end;
        CSV_String:
          begin
            v1^.cv_Str := v1^.cv_str + GetStr(v2);
          end;
      else
        Err := True;
      end { CASE };
    ptMul:
      case v1^.VType of
        CSV_UByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_UByte * GetReal(v2))
            else
              v1^.CV_UByte := v1^.CV_UByte * GetInt(V2);
          end;
        CSV_SByte:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SByte * GetReal(v2))
            else
              v1^.CV_SByte := v1^.CV_SByte * GetInt(V2);
          end;
        CSV_UInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_UInt16 * GetReal(v2))
            else
              v1^.CV_UInt16 := v1^.CV_UInt16 * GetInt(V2);
          end;
        CSV_SInt16:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.CV_SInt16 * GetReal(v2))
            else
              v1^.CV_SInt16 := v1^.CV_SInt16 * GetInt(V2);
          end;
        CSV_UInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(V1^.Cv_Uint32 * GetReal(v2))
            else
              v1^.CV_UInt32 := v1^.CV_UInt32 * GetInt(V2);
          end;
        CSV_SInt32:
          begin
            if IsRealType(v2) then
              MakeItReal(v1^.Cv_Sint32 * GetReal(v2))
            else
              v1^.CV_SInt32 := v1^.CV_SInt32 * GetInt(V2);
          end;
        CSV_Real:
          begin
            v1^.CV_Real := v1^.CV_Real * GetReal(V2);
          end;
        CSV_Single:
          begin
            v1^.CV_Single := v1^.CV_Single * GetReal(V2);
          end;
        CSV_Double:
          begin
            v1^.CV_Double := v1^.CV_Double * GetReal(V2);
          end;
        CSV_Extended:
          begin
            v1^.CV_Extended := v1^.CV_Extended * GetReal(V2);
          end;
        CSV_Comp:
          begin
            v1^.cv_Comp := v1^.cv_Comp * GetReal(V2);
          end;
      else
        Err := True;
      end { CASE };
    ptDiv:
      begin
        case v1^.VType of
          CSV_UByte:
            begin
              MakeItReal(v1^.CV_UByte / GetReal(v2));
            end;
          CSV_SByte:
            begin
              MakeItReal(v1^.CV_SByte / GetReal(v2));
            end;
          CSV_UInt16:
            begin
              MakeItReal(v1^.CV_UInt16 / GetReal(v2));
            end;
          CSV_SInt16:
            begin
              MakeItReal(v1^.CV_SInt16 / GetReal(v2));
            end;
          CSV_UInt32:
            begin
              MakeItReal(v1^.CV_UInt32 / GetReal(v2));
            end;
          CSV_SInt32:
            begin
              MakeItReal(v1^.Cv_Sint32 / GetReal(v2));
            end;
          CSV_Real:
            begin
              v1^.CV_Real := v1^.CV_Real / GetReal(V2);
            end;
          CSV_Single:
            begin
              v1^.CV_Single := v1^.CV_Single / GetReal(V2);
            end;
          CSV_Double:
            begin
              v1^.CV_Double := v1^.CV_Double / GetReal(V2);
            end;
          CSV_Extended:
            begin
              v1^.CV_Extended := v1^.CV_Extended / GetReal(V2);
            end;
          CSV_Comp:
            begin
              v1^.cv_Comp := v1^.cv_Comp / GetReal(V2);
            end;
        else
          Err := True;
        end { CASE };
      end; { begin }
    ptIntDiv:
      begin
        if not isIntegerType(V2) then
        begin
          Perform := False;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte div GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte div GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 div GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 div GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 div GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 div GetInt(V2);
            end;
        else
          Err := True;
        end;
      end;
    ptIntMod:
      begin
        if not isIntegerType(V2) then
        begin
          Perform := false;
          Exit;
        end;
        case v1^.VType of
          CSV_UByte:
            begin
              v1^.CV_UByte := v1^.CV_UByte mod GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte mod GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 mod GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 mod GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 mod GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 mod GetInt(V2);
            end;
        else
          Err := True;
        end;
      end;
    ptAnd:
      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 and GetInt(V2);
            end;
          CSV_SByte:
            begin
              v1^.CV_SByte := v1^.CV_SByte and GetInt(V2);
            end;
          CSV_UInt16:
            begin
              v1^.CV_UInt16 := v1^.CV_UInt16 and GetInt(V2);
            end;
          CSV_SInt16:
            begin
              v1^.CV_SInt16 := v1^.CV_SInt16 and GetInt(V2);
            end;
          CSV_UInt32:
            begin
              v1^.CV_UInt32 := v1^.CV_UInt32 and GetInt(V2);
            end;
          CSV_SInt32:
            begin
              v1^.CV_SInt32 := v1^.CV_SInt32 and GetInt(V2);
            end;
          CSV_Bool:
            begin
              v1^.CV_Bool := v1^.CV_Bool and GetBool(V2);
            end;
        else
          Err := True;
        end;

⌨️ 快捷键说明

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