Сортировка списка

Степан_888

Доброго времени суток. Есть список в RichEdit. Необходимо при нажатии на кнопку, отсортировать. В сети ничего не нашел. Скриншот прикладываю. Спасибо.
8 ответов

Степан_888

Например так
void __fastcall TForm1::Button2Click(TObject *Sender)
{
     TStringList *SL = new TStringList;
     SL->Assign(RichEdit1->Lines);
     SL->Sort();
     RichEdit1->Lines->Assign(SL);
     delete SL;
}
с использованием StringList'а.


Степан_888

nick42, Спасибо. Отличный код. Скажите, у меня скрипт не работает без сортировки. Для чего она мне и понадобилась. Может я вовсе не правильно его написал, и если внести корректировку, сортировка вовсе не понадобится? Идет сравнение списков: RichEdit1 сравнивается с RichEdit2. В случае, если у RichEdit1 есть то, чего нет у RichEdit2, то поместить в RichEdit3.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
 String TXT1RichEdit1;
 String TXT1RichEdit2;
  //цикл пробег по строкам
 for (int i=0; i <= RichEdit1->Lines->Count-1; i++)//колич. строк (Текст перевода)
  {
       TXT1RichEdit1 = RichEdit1->Lines->Strings[i]; //№ строки
       TXT1RichEdit2 = RichEdit2->Lines->Strings[i];
       if  (TXT1RichEdit1 != TXT1RichEdit2){
        RichEdit3->Lines->Add(TXT1RichEdit1);
       }
     }
}


Степан_888

если у RichEdit1 есть то, чего нет у RichEdit2, то поместить в RichEdit3
Если я вас правильно понял, то такая запись должна решить эту задачу. Попробуйте__
    for(int i=0;i<RichEdit1->Lines->Count;i++)
      if(RichEdit2->Lines->IndexOf(RichEdit1->Lines->Strings[i])<0)
        RichEdit3->Lines->Add(RichEdit1->Lines->Strings[i]);


Степан_888

nick42, Спасибо, да, действительно, вы меня правильно поняли ) Я каждый раз нажимаю "Сравнить" и список каждый раз наполняется (добавляется в RichEdit3). Ошибочно дважды нажмешь и все, список в два раза больше, считай пропало. А каждый раз применять "Clear" не очень удобно скажем, что мне надо дописать? Подскажете?


Степан_888

.. перед этим циклом просто очищать RichEdit3 - RichEdit3->Clear();


Степан_888

nick42, Здравствуйте У меня есть номера (1 колонка) и атрибуты (2 колонка). Работает у меня только 1 колонка с номерами (вторую не знаю как подключить, или может использовать ListEdit для этого). Хорошо, а если например сохранять, содержимое RichEdit1 и что бы к записи, напротив неё в скобках указывался атрибут. Что то вроде:
RichEdit1->Lines && Edit1->SaveToFile("C:\\file.rtf");
Если посмотреть на скриншот, то при сохранении, в текстовом файле, напротив каждой записи будет атрибут.


Степан_888

Степан_888, а может хватит вопросы дублировать в разных темах?


Степан_888

D1973, Прошу прощения