![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Перемешать рендомно строки TStringList
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]Конечно есть - написать простейшую процедуру.