скрыть

скрыть

  Форум  

Delphi FAQ - Часто задаваемые вопросы

| Базы данных | Графика и Игры | Интернет и Сети | Компоненты и Классы | Мультимедиа |
| ОС и Железо | Программа и Интерфейс | Рабочий стол | Синтаксис | Технологии | Файловая система |



Google  
 

Перетасовка строк в списке



{ **** UBPFD *********** by delphibase.endimus.com ****
>> Перетасовка строк в списке

Процедура тасует строки в списке.
List - Список строк
MoveCount - необязательный параметр, задающий количество перестановок,
если этот параметр опущен, либо меньше или равен нулю, его значение
принимается равным C*C-C, где C - количество строк в списке.

Зависимости: SysUtils, Classes
Автор:       Dimka Maslov, mainbox@endimus.ru, ICQ:148442121, Санкт-Петербург
Copyright:   Dimka Maslov
Дата:        18 ноября 2002 г.
***************************************************** }

procedure ShuffleStrings(List: TStrings; MoveCount: Integer = 0);
var
  i, N, C: Integer;
  Index1, Index2: Integer;
  Str: string;
  Obj: TObject;
begin
  List.BeginUpdate;
  try
    C := List.Count;
    N := MoveCount;
    if N <= 0 then
      N := C * C - C;
    for i := 0 to N do
    begin
      Index1 := Random(C);
      Index2 := Random(C);
      Str := List.Strings[Index1];
      Obj := List.Objects[Index1];
      List.Strings[Index1] := List.Strings[Index2];
      List.Objects[Index1] := List.Objects[Index2];
      List.Strings[Index2] := Str;
      List.Objects[Index2] := Obj;
    end;
  finally
    List.EndUpdate;
  end;
end;





Copyright © 2004-2016 "Delphi Sources". Delphi World FAQ




Группа ВКонтакте   Ссылка на Twitter   Группа на Facebook