Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Перемешать рендомно строки TStringList


Страницы:   1 2

WebSQLNeederr ©   (2008-02-18 13:05:00) 

Есть ли какой то простой способ перемешать в случайном порядке строки TStringList?


palva   (2008-02-18 14:31:00) [21]


> то есть так?
>
> for i:=1 to 10 do
> begin
>  StringList.Exchange(Random(StringList.Count-1),Random(StringList.
> Count-1));
>  Application.Processmessages;
> end;

Скорее так:

for i := StringList.Count-1 down 1 do
begin
StringList.Exchange(i, Random(i + 1));
Application.Processmessages;
end;


WebSQLNeederr   (2008-02-18 14:30:00) [22]

Я сделал так

for i:=0 to j do
 begin
   tempstr.Exchange(Random(tempstr.Count-1),Random(tempstr.Count-1));
   Application.Processmessages;
   Application.MainForm.Cursor:=crHourGlass;
 end;

Но часики так и не появились. Может я не верно делаю?


WebSQLNeederr   (2008-02-18 14:24:00) [23]

много?


Джо   (2008-02-18 14:18:00) [24]

> [9] WebSQLNeederr   (18.02.08 14:14)
> У меня просто в нем 86 кб загнано и нужно перемешать все.

86 кб — это несерьезно.


WebSQLNeederr   (2008-02-18 14:14:00) [25]


> Должно работать быстро.
> Может быть StringList отображается в каком-то визуальном
> контроле? Тогда лучше на время обработки отображение как-
> то отключить.


У меня просто в нем 86 кб загнано и нужно перемешать все.


WebSQLNeederr   (2008-02-18 14:13:00) [26]

то есть так?

for i:=1 to 10 do
begin
 StringList.Exchange(Random(StringList.Count-1),Random(StringList.Count-1));
 Application.Processmessages;
end;


palva   (2008-02-18 14:13:00) [27]

Должно работать быстро.
Может быть StringList отображается в каком-то визуальном контроле? Тогда лучше на время обработки отображение как-то отключить.


Skyle   (2008-02-18 14:00:00) [28]

Сделай рядом массив индексов и перемешивай его. И доступайся через него же.


Сергей М.   (2008-02-18 13:55:00) [29]

Добавь в тело цикла Application.Processmessages


WebSQLNeederr   (2008-02-18 13:53:00) [30]

А еще такой вопрос. Как сделать что бы пока програма будет менять строки (у меня их много) то что бы не подвисала а на это время курсор становился как часики.


WebSQLNeederr   (2008-02-18 13:26:00) [31]

Спасибо


Savek   (2008-02-18 13:22:00) [32]

StringList.Exchange(Random(StringList.Count-1),Random(StringList.Count-1));
и так много раз


Сергей М.   (2008-02-18 13:19:00) [33]

Конечно есть - написать простейшую процедуру.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо