我有一个数组a是longword的(unsigned 32 int)在xx函数中需要对这个a数组的每个字节进行处理
所以xx的声明是这样的function xx(para1 : array of byte;len : integer):integer;然后我这样使用函数
xx(a,4);
提示出错,
我该怎么办啊

解决方案 »

  1.   

    function XX(var Data; Len: Integer): Integer;
    var
      I: Integer;
    begin
      Result := 0;
      for I := 0 to Len - 1 do TByteArray(Data)[I] := 0;
    end;procedure TForm1.Button1Click(Sender: TObject);
    var
      A: LongWord;
    begin
      XX(A, SizeOf(A));
    end;
      

  2.   

    type
      TBuffer4 = array[0..3] of Char;
    var
      A: LongWord;
      B: Integer;
      C: Pointer;
      D: TBuffer4;
    begin
      B := Integer(A); //如果存储空间相同就可以使用类型转换
      C := Pointer(A);
      D := TBuffer4(A);
    end;
      

  3.   

    对我一开始提出的问题好像无效,是不是在delphi中不能像c那样使用数组
      

  4.   

    longword到byte你会丢失数据的
    如果可以保证数据不丢失;
    你可以只要低8位
      

  5.   

    哪里有关于,这种语法的书,delphi的书好像都很虚
      

  6.   

    看看我在你关于操作数组的帖,你就会明白怎么做了。
    function xx(para1 : array of byte;len : integer):integer;
    改成function xx(para1 : pointer;len : integer):integer;
    然后声明了
    Type
    TLongword=array of Longword;
    PTLongword=^Tlongword;
    TByte=array of byte;
    PTbyte=^Tbyte
    传入PTlongword类型指针,然后将函数内将指针转换成PTbyte类型指针
    如后通过PTbyte^[X]进行操作
      

  7.   

    也可以
    Type
    Tlongword=array of Longword;
    Tbyte=array of byte;
    function xx(para1 : Tbyte;len : integer):integer;
    var
    a:Tlongword;
    ....
    xx(Tbyte(a),len)
    通过paral[X]进行操作