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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 30.11.2013, 16:00   #1
krabich
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 15
По умолчанию Stringgrid сортировка

Скорей всего уже 100500 тема.
Имеется Stringgrid размером 10*20.
В массиве b - числовые значения сумм строк.
Массив as1 - временное пристанище для сравниваемой строки.
kstr- количество строк(20)
kstl- количество столбцов (10)

Итог работы программы: Сортировка проходит, но не сразу, а лишь после 7 вызова данной процедуры. По ходу оно меняет столбцы, но,увы, не сразу. Проект приложу при необходимости.

Код:
var k10,i,j:integer;
b:array [1..20] of integer;
as1:array [1..10] of string
Код:
for i:=1 to kstr do  
begin
    for j:=i+1 to kstr do          
    begin
    if b[i]<b[j] then            
          begin
          for  k10:=1 to kstl do           
              begin
              as1[k10]:= sg1.Cells[k10,j];  
              sg1.Cells[k10,j]:=sg1.cells[k10,i];    
              sg1.Cells[k10,i]:=as1[k10];                 
       
              end;

          end;
    end;
    end;
Изображения
Тип файла: jpg й323523.jpg (28.6 Кб, 135 просмотров)

Последний раз редактировалось krabich; 30.11.2013 в 16:02.
krabich вне форума Ответить с цитированием
Старый 30.11.2013, 16:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Код:
var t: Integer;

for i:=1 to kstr-1 do
begin
    for j:=i+1 to kstr do
    begin
    if b[i]<b[j] then
          begin
          for  k10:=1 to kstl do
              begin
              as1[k10]:= sg1.Cells[k10,j];
              sg1.Cells[k10,j]:=sg1.cells[k10,i];
              sg1.Cells[k10,i]:=as1[k10];
              end;
          t:=b[j];
          b[j]:=b[i];
          b[i]:=t;
          end;
    end;
end;
as1 как массив и не нужен, там достаточно просто s: String как промежуточная переменная

ADD

Подправил, вытащил манипуляции с b из цикла
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 30.11.2013 в 16:42.
Аватар вне форума Ответить с цитированием
Старый 30.11.2013, 16:46   #3
krabich
Пользователь
 
Регистрация: 12.10.2013
Сообщений: 15
По умолчанию

Спасибо большое) Вторая часть кода помогла. Все дальнейшие расчеты проходили уже по отсортированной таблице.

PS: Вашу часть кода относительно массива надо вывести из цикла "k10".

Update: вы и сами вывели
Update2: С выводом в Stringgrid разобрался
Скрины удалить не могу
Изображения
Тип файла: jpg 1Безымянный.jpg (27.0 Кб, 139 просмотров)
Тип файла: jpg 2Безымянный.jpg (24.7 Кб, 142 просмотров)

Последний раз редактировалось krabich; 30.11.2013 в 16:52. Причина: Update
krabich вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сортировка в Stringgrid gamezeldol Помощь студентам 0 31.05.2012 12:17
Сортировка в StringGrid chex01 Общие вопросы Delphi 5 08.04.2012 20:57
StringGrid сортировка Gregorian Помощь студентам 1 26.02.2010 08:33
Сортировка в Stringgrid сер4ей Помощь студентам 1 24.02.2010 14:40
StringGrid и сортировка dee_lv Помощь студентам 5 02.05.2008 17:51