Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 27.04.2016, 12:04   #1
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
Вопрос Как сортировать строки в ListBox?

Здравствуйте. Кто нибудь знает как можно осуществлять сортировку по убиванию учитывая длина строки?
Например так:
до сортировка:
Африка
груша
является
инкапсуляция
после сортировка:
инкапсуляция
является
Африка
груша
Если кто знает, то скажите пожалуйста, очень нужно. Заранее спасибо.
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.04.2016, 12:05   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А без учета длины строки знаешь? Если знаешь, то добавь еще сравнение длин строк
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 27.04.2016, 12:37   #3
SASFM
Форумчанин
 
Аватар для SASFM
 
Регистрация: 26.03.2015
Сообщений: 191
Хорошо

Цитата:
Сообщение от Аватар Посмотреть сообщение
А без учета длины строки знаешь? Если знаешь, то добавь еще сравнение длин строк
Сделал в RichEdit.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var i,j,dsi,dsj,count:integer;
    si,sj,buf:WideString;
begin
    count:=RichEdit1.Lines.Count;
    for i := 0 to count do
      for j := i+1 to count do
           begin
              si:=RichEdit1.Lines.Strings[i];
              dsi:=length(si);
              sj:=RichEdit1.Lines.Strings[j];
              dsj:=length(sj);
              if dsi<dsj then
                begin
                  buf:=si;
                  RichEdit1.Lines.Strings[i]:=sj;
                  RichEdit1.Lines.Strings[j]:=buf;
                end;
           end;
end;
Работает нормально.
Моя родина там, где мой компьютер
SASFM вне форума Ответить с цитированием
Старый 27.04.2016, 12:43   #4
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,469
По умолчанию

Что-то подобное мне делал newerow1989.
Использовался TList.
Код:
type
   pDouble=^Integer; //Тип "указатель на Integer число".
//С помощью этой функции реализуется сортировка чисел.
function Comp(Item1,Item2:Pointer):Integer;
begin
  if pInteger(Item1)^ < pInteger(Item2)^ then Result:=-1
  else
     if pInteger(Item1)^ = pInteger(Item2)^ then Result:=0
     else
       if pInteger(Item1)^ > pInteger(Item2)^ then Result:=1;
end;
http://www.programmersforum.ru/showp...8&postcount=26
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как найти область Rect определенной строки в ListBox? Artik Компоненты Delphi 0 11.06.2009 19:16
Как окрасить строки ListBox'a в разные цвета??? AtiLin Общие вопросы C/C++ 0 06.04.2009 21:08
Как получить текст из любой строки ListBox Alex_09 Общие вопросы Delphi 2 22.03.2009 13:58
Как перетаскивать строки по ListBox Манжосов Денис :) Помощь студентам 1 06.04.2008 22:54
Как заставить Itemindex в ListBox перемещаться при добавлении новой строки на онную ? DartMrakkk Общие вопросы Delphi 10 05.07.2007 11:54