我的代码如下:
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.   

    你这个不是Array类型不能用SetLength(ABuf,4);你改成GetMem(ABuf,4);最后
    FreeMem(ABuf,4);
      

  2.   

    ljmanage(过客):
    用你的方法后还是不行
      

  3.   

    你这样产生随机码难道不觉得效率低么???
    重新写了个:
    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;
      

  4.   

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

  5.   

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