Мое предложение состоит в том, чтобы составить список имен, затем перемешать имя и затем назвать его одно за другим.
Я надеюсь, что этот код будет работать для вас.
...
private
{ Private declarations }
FNameList : TStringList;
FNameIndex: Integer;
public
{ Public declarations }
end;
...
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
Randomize;
FNameIndex := 0;
FNameList := Tstringlist.Create;
// FNameList.LoadFromFile('NameList.txt'); or
FNameList.Add('Name 1');
FNameList.Add('Name 2');
FNameList.Add('Name 3');
FNameList.Add('Name 4');
FNameList.Add('Name 5');
FNameList.Add('Name 6');
for i:= 1 to 100 do // shuffle 100 times. its up to you
FNameList.Exchange(Random(FNameList.Count-1), Random(FNameList.Count-1));
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
FNameList.Free;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if FNameIndex < FNameList.Count then
begin
showmessage(FNameList.Strings[FNameIndex]);
inc(FNameIndex);
end else showmessage('Done!');
end;