Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.94/35: Рейтинг темы: голосов - 35, средняя оценка - 4.94
 Аватар для Bastis
1 / 1 / 0
Регистрация: 22.09.2009
Сообщений: 39

Сделать сортировку StringGrid

22.09.2009, 19:38. Показов 6740. Ответов 26
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Задали сделать сортировку StringGrid. Код,который написала я преподу не понравился, сказал написать короче. Подскажите пожалуйста как...
Код:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
if (RG->ItemIndex==0)
 {
    String buff;
 String buff2;
 String buff3;
 
 for (int i = 0; i < SG->RowCount-1; i++)
   for (int j = i; j < SG->RowCount; j++)
    {
     if (SG->Cells[1][i]<SG->Cells[1][j])
     {
          buff=SG->Cells[0][i];
          SG->Cells[0][i]= SG->Cells[0][j];
          SG->Cells[0][j]=buff;
 
          buff2=SG->Cells[1][i];
          SG->Cells[1][i]= SG->Cells[1][j];
          SG->Cells[1][j]=buff2;
 
          buff3=SG->Cells[2][i];
          SG->Cells[2][i]= SG->Cells[2][j];
          SG->Cells[2][j]=buff3;
     }
    }
 }
 if (RG->ItemIndex==1)
 {
    String buff;
 String buff2;
 String buff3;
 for (int i = 1; i < SG->RowCount+1; i++)
   for (int j = i; j < SG->RowCount; j++)
   {
     if ((StrToInt(SG->Cells[2][i]))>StrToInt((SG->Cells[2][j])))
      {
       buff=SG->Cells[0][i];
       SG->Cells[0][i]= SG->Cells[0][j];
       SG->Cells[0][j]=buff;
 
       buff2=SG->Cells[1][i];
       SG->Cells[1][i]= SG->Cells[1][j];
       SG->Cells[1][j]=buff2;
 
       buff3=SG->Cells[2][i];
       SG->Cells[2][i]= SG->Cells[2][j];
       SG->Cells[2][j]=buff3;
      }
   }
 }
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
22.09.2009, 19:38
Ответы с готовыми решениями:

Как ускорить сортировку StringGrid?
Привет! Провожу сортировку строк пузырьковым методом прямо StringGrid более 500 записей. При этом на момент работы алгоритма интерфейс...

Delphi 7 Stringgrid Нужно сделать цикл для заполнения Stringgrid данными из другого Stringgrid
Нужно чтобы из Stringgrid1 данные переносились в Stringgrid2 Но ТОЛЬКО ПО УСЛОВИЮ Таблицы Stringgrid2 На рис всё показано. За работающий...

Выполнить сортировку данных в объекте stringgrid
Необходимо выполнить сортировку заполненных вручную данных в новом stringgrid. Данные для заполнения: склады, участки, материалы,...

26
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
19.01.2010, 20:28
Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
void __fastcall TMainForm::Button1Click(TObject *Sender)
{
  TStringList *sl=new TStringList;
  sl->StringGrid2->Cells[2][i];
  sl->CustomSort(MySortCompare);
  ShowMessage(sl->Text);
  delete sl;
}
Ругается что StringGrid2 не описан в TStringList , а то что там написано без объяснений я не понимаю, что там изменить чтобы обращение работало тоже не подрузамеваю. Все методом тыка и пока безрезультатно хотя метод тыка начался после 5-ти часового обдумывания и поиска что же сделать , чтобы работало...

Добавлено через 51 секунду
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
gradiusalisikты еще выбираешь по какому столбцу сортировать?
Да
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
19.01.2010, 20:32
gradiusalisik, а можно узнать из каких соображений появился этот код? в классе стринглист нет такого свойства точно... вы вообще справку по билдеру смотрели?
0
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
19.01.2010, 20:37
Понятное дело что разжевывать не будут , но все досканально я не смогу сам сделать я просмотрел около 3-х книг в примерах и нет. Культина к примеру . Но с сортировкой и многими другими вещами так и не разобрался ...

Добавлено через 3 минуты
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
gradiusalisik, а можно узнать из каких соображений появился этот код?
Из того что данный путь ведет в столбец , который нужно сортировать.

Добавлено через 1 минуту
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
gradiusalisik, вы вообще справку по билдеру смотрели?
В самой программе она на англицйском , я к сожелению его не знаю, а переводить чуть ли ни целую книгу это не так просто и займет много времени.
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
19.01.2010, 20:47
gradiusalisik, проблема в том, что код вам надо делать немного хитрее, чем он представлен в этой теме, вам надо сформировать список данных для стринглиста... т.е. пробежаться по всему гриду и конкатенацией объединить все столбцы построчно, потом отсортировать и потом уже разбить строки на ячейки по столбцам... в принципе сложностей нет... а заморский язык учить придеться, иначе будет сложно
0
0 / 0 / 0
Регистрация: 19.01.2010
Сообщений: 25
19.01.2010, 20:59
Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
в принципе сложностей нет...
Для кого как , я пока только стараюсь что-нибудь понять и научиться чему-нибудь , поэтому для меня это архисложно.

Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
заморский язык учить придеться,
Чтобы учить язык надо ходить на курсы , а время не резина , его не растянешь ...

Цитата Сообщение от Lord_Voodoo Посмотреть сообщение
код вам надо делать немного хитрее
Да я это подозревал, но как не знал так и не знаю).Еще я не понял , что из себя представляет вот эта часть программы , понял что это сама сортировка , но как подробно все происходит и откуда опции лемитед и т.п.

C++
1
2
3
4
5
6
7
8
int __fastcall MySortCompare(TStringList* List, int Index1, int Index2)
{
  AnsiString str1=List->Strings[Index1];
  str1 = str1.SubString(str1.Pos(" ") + 1, str1.LastDelimiter(" ") - 1 - str1.Pos(" "));
  AnsiString str2=List->Strings[Index2];
  str2 = str2.SubString(str2.Pos(" ") + 1, str2.LastDelimiter(" ") - 1 - str2.Pos(" "));
  return strcmp(str1.c_str(), str2.c_str());
}
И еще , вы не даете курсы билдера в ускоренном режиме? Мне бы они не помешали так как курсовую нужно сдать через пару дней, преподаватель дал ее поздно и я сомневаюсь что своими силами я что-нибудь успею((
0
Почетный модератор
 Аватар для Lord_Voodoo
8785 / 2538 / 144
Регистрация: 07.03.2007
Сообщений: 11,873
19.01.2010, 23:53
gradiusalisik, это функция сравнения, которую использует для своих нужд пользовательская сортировка
0
 Аватар для Зоти Сергей
230 / 227 / 65
Регистрация: 18.12.2009
Сообщений: 316
21.01.2010, 00:43
Ну.. можно еще один цикл захренделячить, чтобы короче было, и буферы глобально вывести.


C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
 String buff;
 String buff2;
 String buff3;
if (RG->ItemIndex==0)
 {
   
 for (int i = 0; i < SG->RowCount-1; i++)
   for (int j = i; j < SG->RowCount; j++)
    {
     if (SG->Cells[1][i]<SG->Cells[1][j])
     {
        for(int k=0;k<3;k++)
        {
          buff=SG->Cells[k][i];
          SG->Cells[k][i]= SG->Cells[k][j];
          SG->Cells[k][j]=buff;
        }
     }
    }
 }
 if (RG->ItemIndex==1)
 {
    
 for (int i = 1; i < SG->RowCount+1; i++)
   for (int j = i; j < SG->RowCount; j++)
   {
     if ((StrToInt(SG->Cells[2][i]))>StrToInt((SG->Cells[2][j])))
      {
        for(int k=0;k<3;k++)
        {
           buff=SG->Cells[k][i];
           SG->Cells[k][i]= SG->Cells[k][j];
           SG->Cells[k][j]=buff;
        }
      }
   }
 }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.01.2010, 00:43
Помогаю со студенческими работами здесь

Нужно доделать сортировку StringGrid методом простых обменов
Сортирует по первому столбцу StringGrid. Не передвигает только остальные столбцы Вот скрин SG procedure...

Сортировку вставками меняем на Пирамидальную сортировку и на Сортировку подсчётом
Здравствуйте. Я не как не могу разобраться.Помогите. У меня есть листинг сортировки вставками: #include &quot;stdafx.h&quot; ...

Как сделать сортировку по id
Здравствуйте. Ребят помогите , как сделать вывод пользователей согласно id то-есть id=1 первый в списке, id=2 второй в списке и так далее....

Как сделать сортировку
Как сделать сортировку переделав этот код, чтобы получилось как в примере double massive = new double; int countm = 0; ...

Как сделать сортировку?
Есть таблица transfer: -------------- id | who -------------- 1 | Petr 2 | Vasa 3 | Vasa 4 | Eugen


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
27
Ответ Создать тему
Новые блоги и статьи
Отправка уведомления на почту при изменении наименования справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере изменения наименования типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной. . .
модель ЗдравоСохранения 5. Меньше увольнений- больше дохода!
anaschu 24.03.2026
Теперь система здравосохранения уменьшает количество увольнений. 9TO2GP2bpX4 a42b81fb172ffc12ca589c7898261ccb/ https:/ / rutube. ru/ video/ a42b81fb172ffc12ca589c7898261ccb/ Слева синяя линия -. . .
Midnight Chicago Blues
kumehtar 24.03.2026
Такой Midnight Chicago Blues, знаешь?. . Когда вечерние улицы становятся ночными, а ты не можешь уснуть. Ты идёшь в любимый старый бар, и бармен наливает тебе виски. Ты смотришь на пролетающие. . .
SDL3 для Desktop (MinGW): Вывод текста со шрифтом TTF с помощью библиотеки SDL3_ttf на Си и C++
8Observer8 24.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-text-sdl3-c. zip finish-text-sdl3-cpp. zip
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло. Но на выплатах по больничным это. . .
Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере нетипового документа выдачи шин для спецтехники с табличной частью, разработанного в конфигурации КА2. Данные берутся из. . .
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y Z4Tv2zpXVVo https:/ / github. com/ shumilovas/ med2. git
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru