![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
СОртировка [D6, Win95/98, WinXP]
beginer1 © (2002-12-30 09:32:00)как быстро отсортировать записи В ListBox по имени тольк с конца строки и удалить одинаковые строки
те должны остаться уникальные имена отсортировынные с последнего символа
MBo (2002-12-30 13:33:00) [1]предполагаю, что элементов в списке не слишком много, поэтому использовал пузырьковую сортировку.
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: integer;
function RevStr(const s: string): string;
var
i, l: integer;
begin
l := length(s);
SetLength(Result, l);
for i := 1 to l do
Result[i] := s[l - i + 1];
end;
begin
ListBox1.Items.BeginUpdate;
for i := 0 to ListBox1.Items.Count - 2 do
for j := i + 1 to ListBox1.Items.Count - 1 do
if RevStr(ListBox1.Items[i]) > RevStr(ListBox1.Items[j]) then
ListBox1.Items.Exchange(i, j);
ListBox1.Items.EndUpdate;
end;
gsu (2002-12-30 10:21:00) [2]Какие проблемы
1. инвертируй строки
2. отсортируй их
3. инвертируй обратно
4. выровняй по правому краю, если надо
beginer1 (2002-12-30 10:20:00) [3]>Song
выравнивание мне не надо МНЕ НУЖНА ИМЕННО СОРТИРОВКА справа налево
те если последний символ A то строка должна стоять самой верхний в списке а если последний символ Z то в Конце списка
Delirium^.Tremens (2002-12-30 10:14:00) [4]2 Song © (30.12.02 10:10)
> Это называется не сортировка, а выравнивание по правому
> краю.
> Обрабатывайте TListBox.onDrawItem
Да нет, там еще и сортировка справа налево.
beginer1 (2002-12-30 10:11:00) [5]>VAleksey
А более рациональный метод?
Song (2002-12-30 10:10:00) [6]Это называется не сортировка, а выравнивание по правому краю.
Обрабатывайте TListBox.onDrawItem
beginer1 (2002-12-30 10:07:00) [7]>ЮЮ
cпечиально для тебя пример приведу
есть список:
beginer1
Delirium^.Tremens
Song
ЮЮ
beginer1
а после сортировки должен выглядить вот так:
beginer1
Song
Delirium^.Tremens
ЮЮ
VAleksey (2002-12-30 09:59:00) [8]Есть предложение записать в другой StringList имена наоборот, отсортировать его, а потом в соответствии с ним выстороить 1-й :)
beginer1 (2002-12-30 09:58:00) [9]>сортировка справа налево
>Song
А подробнее можно?
ЮЮ (2002-12-30 09:51:00) [10]Это, наверное, "метод шифрования" такой, в строке хранится 1renigeb, а при прорисовке видно beginer1. "Королевство кривых зеркал", однако :-)
Song (2002-12-30 09:43:00) [11]Используйте TStringList, у него есть ssDuplicate. А вот насчёт сортировки с конца :-) я так и не понял..
Delirium^.Tremens (2002-12-30 09:36:00) [12]
> по имени тольк с конца строки
Это что же, справа налево? IMHO, нужно самому алгоритмы писать или к арабам обращаться :-)