Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.01.13;
Скачать: CL | DM;

Вниз

СОртировка   Найти похожие ветки 

 
beginer1 ©   (2002-12-30 09:32) [0]

как быстро отсортировать записи В ListBox по имени тольк с конца строки и удалить одинаковые строки
те должны остаться уникальные имена отсортировынные с последнего символа


 
Delirium^.Tremens ©   (2002-12-30 09:36) [1]


> по имени тольк с конца строки

Это что же, справа налево? IMHO, нужно самому алгоритмы писать или к арабам обращаться :-)


 
Song ©   (2002-12-30 09:43) [2]

Используйте TStringList, у него есть ssDuplicate. А вот насчёт сортировки с конца :-) я так и не понял..


 
ЮЮ ©   (2002-12-30 09:51) [3]

Это, наверное, "метод шифрования" такой, в строке хранится 1renigeb, а при прорисовке видно beginer1. "Королевство кривых зеркал", однако :-)


 
beginer1 ©   (2002-12-30 09:58) [4]

>сортировка справа налево

>Song
А подробнее можно?


 
VAleksey ©   (2002-12-30 09:59) [5]

Есть предложение записать в другой StringList имена наоборот, отсортировать его, а потом в соответствии с ним выстороить 1-й :)


 
beginer1 ©   (2002-12-30 10:07) [6]

>ЮЮ
cпечиально для тебя пример приведу
есть список:
beginer1
Delirium^.Tremens
Song
ЮЮ
beginer1

а после сортировки должен выглядить вот так:
beginer1
Song
Delirium^.Tremens
ЮЮ


 
Song ©   (2002-12-30 10:10) [7]

Это называется не сортировка, а выравнивание по правому краю.
Обрабатывайте TListBox.onDrawItem


 
beginer1 ©   (2002-12-30 10:11) [8]

>VAleksey
А более рациональный метод?


 
Delirium^.Tremens ©   (2002-12-30 10:14) [9]

2 Song © (30.12.02 10:10)

> Это называется не сортировка, а выравнивание по правому
> краю.
> Обрабатывайте TListBox.onDrawItem

Да нет, там еще и сортировка справа налево.


 
beginer1 ©   (2002-12-30 10:20) [10]

>Song
выравнивание мне не надо МНЕ НУЖНА ИМЕННО СОРТИРОВКА справа налево
те если последний символ A то строка должна стоять самой верхний в списке а если последний символ Z то в Конце списка


 
gsu ©   (2002-12-30 10:21) [11]

Какие проблемы

1. инвертируй строки
2. отсортируй их
3. инвертируй обратно
4. выровняй по правому краю, если надо


 
MBo ©   (2002-12-30 13:33) [12]

предполагаю, что элементов в списке не слишком много, поэтому использовал пузырьковую сортировку.


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;



Страницы: 1 вся ветка

Текущий архив: 2003.01.13;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.026 c
6-37232
Dima_S
2002-11-12 04:08
2003.01.13
Получение списка файлов с Ftp.


3-36913
tomat
2002-12-17 05:52
2003.01.13
InterBase, Trigger


3-36954
Борис
2002-12-16 17:02
2003.01.13
Русские буквы в IB 6


3-36968
Сергей Бушин
2002-12-14 17:58
2003.01.13
Поле AutoIncrement при вставке в ClientDataSet


1-37200
April
2002-12-30 14:55
2003.01.13
Как создать кнопку во время выполнения программы?