procedure TForm1.Button1Click(Sender: TObject);
var
  i,j:Integer;
  SourceStr:String;
  ResultStr:String;
  TempStr:String;
  StrCount:Integer;
begin
  TempStr := '';
  Randomize;
  while not (Memo1.Lines.Count=20) do  //这里的20是字符串'12345678'能够有的不同排列的数字,这个东东我不会计算了~~
  begin
    SourceStr := '12345678';
    StrCount := Length(SourceStr);
    for i:=1 to StrCount do
    begin
      j := Random(Length(SourceStr)+1);
      if (j=0) then j:=j+1;
      TempStr := SourceStr[j];
      Delete(SourceStr,j,1);
      ResultStr := ResultStr+TempStr;
    end;
    if Memo1.Lines.IndexOf(ResultStr)<>0 then Memo1.Lines.Add(ResultStr);
    ResultStr:='';
  end;
end;