var
  L1:LongInt;
  L2:Integer;
begin
  L2:=Integer(L1);
end;
就是这样。

解决方案 »

  1.   

    可不行呀
    我在VAR中定义了
    A1:Array Of Byte;
    B1: Integer;
    C1: LongInt;Begin
      B1:= Integer(C1);
      SetLength(A1, B1);
    ......可编译说Incompatible Types......
      

  2.   

    如果没记错的话,longint应该是等同于 integer的。
    请参看help 。
      

  3.   

    integer和longint是一样的,根本不用转换,下面的代码没问题procedure TForm1.Button1Click(Sender: TObject);
    var
      a1: array of byte;
      b1: longint;
    begin
      b1 := 100;
      setlength(a1,b1);
    end;
    这样定义的数组是一维的,如果你连维数也要动态分配,这样是不行的
    你到底是要动态确定数组元素的个数,还是数组的维数?
      

  4.   

    //测试了一下没有问题呀?
    procedure TForm1.Button1Click(Sender: TObject);
    var
      A1: array of Byte;
      B1: Integer;
      C1: LongInt;
    Begin
      B1 := C1;
      SetLength(A1, B1);
    end;//请给出你调试的代码
      

  5.   

    我发现问题了
    我的函数是这样定义的
    function GetInChars(PortID: THandle; InBuff: array of byte): integer;
    现在只要我在函数里定义这个InBuff的维数就会报错。
    请问这是为什么
    我能传递数组作为输出么?
      

  6.   

    可以传递数组为输出,用var
    function GetInChars(PortID: THandle; var InBuff: array of byte):integer;但是你在调用这个函数的时候必须给定数组的维数,并且在函数中不能改变function Tform1.test(var aa: array of byte): integer;
    var
      i:integer;
    begin
      result := 0;
      for i := low(aa) to high(aa) do
      begin
        aa[i] := 1;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      a1: array of byte;
      b1: longint;
    begin
      b1 := 100;
      setlength(a1,b1);
      test(a1);
    end;
      

  7.   

    长度不一致的数据不能强制类型转换!!!你可以这样做:
    type
       YourInt = Array [ 0 .. 1 ] Of Integer;....B1 := YourInt;
    C1 := LongInt;
    B1 = YourInt( C1 );