我的代码如下:
procedure TForm1.Button1Click(Sender: TObject);
var
   i : integer;
   ABuf : string;
   ARandomValue,j : string;
begin
   i := 0;
   SetLength(ABuf,4);
   Randomize;
   ARandomValue := Format('%d', [RandomRange(1,0)]);
   ARandomValue := '1';
   j := Edit2.Text;
   for i := 1 to strtoint(j) - 2 do
      ARandomValue := ARandomValue + Format('%d', [RandomRange(1,0)]);;
   ARandomValue := ARandomValue + '1';
   BinToHex(pchar(ABuf),pchar(ARandomValue),strtoint(j));   Edit1.Text := ABuf;
end;总是在获取ABuf时出错,请问这是为什么呢?

解决方案 »

  1.   

    你试试
    BinToHex(@ABuf[0],@ARandomValue[0],strtoint(j));
      

  2.   

    楼主,你的没有错啊,我试试,没有报错!另外别忘了用uses math
      

  3.   

    ABuf不是array类型不能
    SetLength(ABuf,4);
    改用GetMem(ABuf);最后在
    FreeMem(ABuf);
      

  4.   

    忘了,你的声明,要换成
    ABuf : PChar;
      

  5.   

    你这样产生随机码难道不觉得效率低么???
    重新写了个:
    procedure TForm1.Button1Click(Sender: TObject);
    var
       i : integer;
       ABuf : PChar;
       Length:integer;
    begin    Randomize;
        try
        Length:=StrToInt(Edit2.text);
        except
            exit;
        end;
        GetMem(ABuf,Length);
        ZeroMemory(ABuf,Length);
        for I := 1 to Length - 1 do    // Iterate
        begin
            Byte(ABuf^):=Byte(RandomRange(0,255) and $ff);
            inc(ABuf);
        end;    // for
        Dec(aBuf,Length-1);
        edit1.Text :=aBuf;
        freemem(abuf);
    end;
      

  6.   

    我的主要目的是解决BinToHex的问题