让ABCD对应1234,产生只含1234的4位随机数。再对应产生ABCD字符。

解决方案 »

  1.   


    function RandomSelect(Select, Answer: TStringList): TStringList;
    var
      S, A: TStringList;
      I, R: Integer;
    begin
      S := TStringList.Create;
      A := TStringList.Create;
      S.AddStrings(Select);
      A.AddStrings(Answer);
      try
        Result := TStringList.Create;
        for I := 0 to S.Count - 1 do
        begin
          R := Random(A.Count);
          Result.Values[S[I]] := A.Strings[R];
          A.Delete(R);
        end;
      finally
        FreeAndNil(S);
        FreeAndNil(A);
      end;
    end;procedure TForm1.btn1Click(Sender: TObject);
    var
      Select, Answer, Result: TStringList;
    begin
      Select := TStringList.Create;
      Answer := TStringList.Create;
      try
        Select.Delimiter := ',';
        Select.DelimitedText := 'A,B,C,D';
        Answer.Delimiter := ',';
        Answer.DelimitedText := '苹果,香蕉,桔子,桃子';
        Result := RandomSelect(Select, Answer);
        ShowMessage(Result.Text);
        Result.SaveToFile(ExtractFilePath(ParamStr(0)) + 'Log.txt');
      finally
        FreeAndNil(Select);
        FreeAndNil(Answer);
        FreeAndNil(Result);
      end;
    end;
      

  2.   


    程序开始,记得 Randomize。
    否则,每次,还是一样。
      

  3.   


    程序开始,记得 Randomize。
    否则,每次,还是一样。那是D7时代,XE7完全不用