我定义了一个array of byte
现在这个数组里面array[2],array[3]array[4] 是可变的,而且这些值是string型
怎样处理呢?另外
array1 of byte
array2 of byte
array3 of byte
我想把这三个数组连成一串,
能不能array1[i]+array2[j]+array3[k]???  不行的话,怎么做??谢谢了

解决方案 »

  1.   

    array of byte?这本身就是动态数组,其长度本身就是可变的。
    把几个数组连接起来,可直接赋值就是
      

  2.   

    可是可以赋给array[2..4]的值是string啊?而且这个值是随程序的运行而变化的,我要在每次循环后将这3个值+1
      

  3.   

    array of byte, 顾名思义就是byte数组,每个元素都是一个byte, 也就是1个字节(1个字符),怎么可能让每个元素成为一个string,即使一个空字符串最少也要占用4字节(一个nil指针),一个只包含1个字符的string就需要占用14个字节内存空间还是分两块地方存储(4字节的指针+10字节的字符串具体内容--4字节引用计数+4字节长度+1字节字符本身+#0字符)如果你的意思是将数组中某些元素的内容填成字符那么直接赋值:
    arr[2] := byte('a'); 如果想部分元素填成字符串中的内容那么需要用个循环一个字符一个字符赋值。可以优化的是整个数组填成一个字符串, 可以使用下面的代码:
    var
      arr: array of byte;
      s: string;
    begin
      ...
      string(arr) := s;
      uniquestring(string(arr));
       ....
    end;
      

  4.   

    var
      array1 :array[0..3] of Byte;
      array2 :array[0..3] of Byte;
      array3 :array[0..3] of Byte;
      s:string;
    begin
       FillChar(array1,4,'a');
       FillChar(array2,4,'b');
       FillChar(array3,4,'c');
       s:=Char(array1[0])+Char(array2[1])+Char(array3[2]);
       ShowMessage(s);
      

  5.   

    var
    a,b,c: array of byte;
    i:integer
    begin
      setlength(a,4);
      a[Low(a)] := 0;
      a[Low(a)+1] := 1;
      a[Low(a)+2] := 2;
      a[Low(a)+3] := 3;
      setlength(b,4);
      b[Low(b)] := 4;
      b[Low(b)+1] := 5;
      b[Low(b)+2] := 6;
      b[Low(b)+3] := 7;
      setlength(c,8);
      move(a[low(a)],c[low(c)],4);
      move(b[low(b)],c[low(c)+4],4);
    end;
      

  6.   

    对于string是一样的
    var
    a,b,c:string;
    d:array of byte;
    e:array of char;
    begin
      a:=edit1.text;
      b:=edit2.text;
      c:=a+b;
      setlength(d,length(c));
      move(c[1],d[low(d)],length(c)); 
      setlength(e,length(c));
      move(c[low(d)],e[low(e)],length(c)); 
      edit3.text := string(e);
    end;