var
rbuf,sbuf:array[1..256] of byte;
avgcount:string;
begin
  //setlength:=(rbuf,1);
  avgcount:=copy(rbuf[1],1,4);
end;
//编译出错,有争议的类型
我现在想知道的是怎样将rbuf[1]转换为字符型!!!!

解决方案 »

  1.   

    copy()函数不能拷贝字节行变量!只能是字符型!
    我可以直接从数组中拷贝出字节变量不????
      

  2.   

    你需要的不是将rbuf[1]转成字符型。rbuf是个数组变量,它不是指针。
    @rbuf运算后才算得到它的首地址.
    这一点语法同C/C++有区别的.var
      rbuf,sbuf:array[1..256] of byte;
      avgcount:string;
    begin
      //setlength:=(rbuf,1);
      avgcount:=copy(pchar(@rbuf),1,4);end;
      

  3.   

    var
    rbuf,sbuf:array[1..256] of byte;
    avgcount:string;
     p:pchar;
    begin
      //setlength:=(rbuf,1);
      p:=@rbuf;
      avgcount:=p;end;
      

  4.   

    //试试看
    var
    rbuf,sbuf:array[1..256] of byte;
    avgcount:string;
    begin
      //setlength:=(rbuf,1);
      avgcount:=copy(rbuf,1,4);
    end;
      

  5.   

    但是
    avgcount:=copy(pchar(@rbuf),8,4);
    得到的是空值,只能取前面几位:
    avgcount:=copy(pchar(@rbuf),1,3);
    **说明现在的rbuf=(22,2,1,0,156,0,1,0,0,)
      

  6.   

    为什么只能取前面几位呢?
    var
    h,ipos:integer;
    begin
    ipos:=18*h;
    avgcount:=copy(pchar(@rbuf),ipos,4);
    end;
    却不能取出后面的几位?
      

  7.   

    ipos:=18*h;
    是不是过了长度?
      

  8.   

    var
    rbuf,sbuf:array[1..256] of char;
    avgcount:string;
    begin
      //setlength:=(rbuf,1);
      avgcount:=copy(rbuf[1],1,4);
    end;
      

  9.   

    var
    rbuf,sbuf:array[1..256] of pchar;
    avgcount:string;
    begin
      //setlength:=(rbuf,1);
      avgcount:=copy(strpas(rbuf[1]),1,4);
    end;