function test(var Buf)
begin
//这儿进行数据处理
end;1.Buf 是一个比特数组. 
2.数组长度不知道.要求:
     (1)直接输出这个比特数组
     (1)把Buf 转换成字符传输出.来者有分.希望大家帮忙

解决方案 »

  1.   

    长度未知的情况下, 必须有约定, 如以值为 0 的字节结束, 否则是没法做的
    另, 如果你不用更改Buf, 使用 const 就行了, 不必使用 var另如, 把buf转化成字符串, (约定以值为0的字节结束的作法如下)function Test(const buf): String
    var
      p: PChar;
    begin
      p := PChar(@buf);
      while p^ <> #0 do Inc(p);
      SetString(Result, PChar(@buf), p - PChar(@buf));
    end;
      

  2.   

    把Buf 转换成字符传输出:
    procedure f_bytetostr(buf: array of Byte);
    var
      i: Integer;
      v_str: string;
    begin
      v_str := '';
      for i := Low(buf) to High(buf) do
        v_str := v_str + inttostr(buf[i]);
      ShowMessage(v_str);
    end;因为Byte 0..255 unsigned 8-bit
    var
    b:Byte;
    s:string;
    begin
    b:=10;
    s:=inttostr(b);
    b:=strtoint(s);
    end;
    b仍然是一字节