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

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

22.09.2009, 19:38. Показов 6808. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Remote Connection Manager
DevAlt 21.06.2026
Написал для себя небольшую прилагу: https:/ / github. com/ altbodhi/ ReConMan По итогу пришел к мысли, что DU не дружат с существующими технологиями. От сериализации до отображения в реляционную. . .
Администрация Хабра удаляет новые алгоритмы, которые не западно ориентированной философии кода, без уведомлений и объяснений.
Hrethgir 20.06.2026
Делается это, как замечено, при правках - при объявлении концептуальных отличий в алгоримах. Делается это, по линейке событий - после дополнения публикации основными отличиями от основных западных. . .
Процесс ориентированная диалектика (не новость - просто системное обновление, философия).
Hrethgir 20.06.2026
Однажды один участник в своём блоге, на этом форуме, сделал запись "О языках замолвите слово". Понимая, что язык - важная вещь, я решил хорошо подумать, прежде чем сказать, и сказал то, что вы видите. . .
Контроль уникальности строк в табличной части документа
Maks 18.06.2026
Алгоритм из решения ниже разработан на примере нетипового документа "ПланированиеСпецтехники" с табличной частью "НаличиеОборудования", разработанного в КА2. Задача: контроль уникальности строк в. . .
Клиент
Uhbif79 18.06.2026
Здесь простой клиент для работы с сервером.
Сервер
Uhbif79 18.06.2026
Выкладываю простейший сервер.
Дефенестрация
kumehtar 18.06.2026
Узнал интересное слово. Дефенестрация. Это когда ты выбрасываешь кого-либо или что-либо из окна. Возьму на вооружение)))
Дихотомия добра и зла
kumehtar 18.06.2026
Как Дзен-буддисты говорят о добре и зле: не нужно воевать против зла, нужно воевать против невежества. Тогда добро станет ествественным, и поэтому вечным. Но дело в том, что невежество всё время. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru