Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 10.12.2010, 22:19
тупица( тупица( вне форума
Прохожий
 
Регистрация: 10.12.2010
Сообщения: 4
Репутация: 10
Печаль Содержимое ячеек StringGrid

Умоляю помогите(((( Мне совершенно никак не дается программирование, ничего не понимаю. Что нужно написать, чтобы посчитать сумму содержимого ячеек StringGrid, найти минимальное и максимальное значение среди них и среднее значение???
Ответить с цитированием
  #2  
Старый 10.12.2010, 22:45
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,093
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Ну, доступ к данным производится через StringGrid.Cells[I,J]. Соответсвенно, нужны вложенные циклы. Ну и не забыть, что в ячейке может не быть данных (ячейки имеют тип String, соответсвенно, надотданные конвертировать).

Вот пример подсчета суммы ячеек. Мин и Макс по образу сам сделаешь.
(предполагаем, что в ячейках целые числа)
Код:
var
  I, J : Integer;
  S : Integer;
begin
  S := 0;
  For I := 0 To StringGrid1.RowCount-1 Do
    For J := 0 To StringGrid1.ColCount-1 Do
       Try
          S := S + StrToInt(StringGrid1.Cells[I,J]);
        Except
          // do nothing
        End;
  ShowMessage('Сумма = ' + IntToStr(S));
end;

PS. Под отладчиком могут возникать ошибки, если не удастся конвертировать данные ячейки в число. Просто пускай дальше. Если запускать не из под отладчика, то ошибок видно не будет.

PPS. Не помню точно какая координата (колонки или столбца) должна идти первой при обращении к ячейке - проверь по справке.
Ответить с цитированием
  #3  
Старый 11.12.2010, 12:28
тупица( тупица( вне форума
Прохожий
 
Регистрация: 10.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Я никак не понимаю, почему не запускается именно с того места, где объявляются переменные I,J.
Я может быть вообще что-то не так сделала:
Код:
procedure TForm1.StringGrid1Click(Sender: TObject);
begin
 StringGrid1.Cols[0].Text:='Январь' ;
StringGrid1.Cols[1].Text:='Февраль' ;
StringGrid1.Cols[2].Text:='Март'  ;
StringGrid1.Cols[3].Text:='Апрель';
StringGrid1.Cols[4].Text:='Май' ;
StringGrid1.Cols[5].Text:='Июнь';
StringGrid1.Cols[6].Text:='Июль' ;
StringGrid1.Cols[7].Text:='Август';
StringGrid1.Cols[8].Text:='Сентябрь' ;
StringGrid1.Cols[9].Text:='Октябрь';
StringGrid1.Cols[10].Text:='Ноябрь';
StringGrid1.Cols[11].Text:='Декабрь' ;
StringGrid1.Cells[0,1]:='12000';
StringGrid1.Cells[1,1]:='14500';
StringGrid1.Cells[2,1]:='15800';
StringGrid1.Cells[3,1]:='13700';
StringGrid1.Cells[4,1]:='19900';
StringGrid1.Cells[5,1]:='17400';
StringGrid1.Cells[6,1]:='16200';
StringGrid1.Cells[7,1]:='11700';
StringGrid1.Cells[8,1]:='18700';
StringGrid1.Cells[9,1]:='14200';
StringGrid1.Cells[10,1]:='12800';
StringGrid1.Cells[11,1]:='17600';
end;
 
procedure TForm1.Button1Click(Sender: TObject);
begin
 var I, J : Integer;
  S : Integer;
begin
  S := 0;
  For j := 0 To StringGrid1.RowCount-1 Do
    For I := 0 To StringGrid1.ColCount-1 Do
       Try
          S := S + StrToInt(StringGrid1.Cells[I,J]);
        Except
          // do nothing
        End;
  ShowMessage('Сумма = ' + IntToStr(S));
end;
Edit1.Text:=s;
end;
Admin: Пользуемся тегами для оформления кода!

Что нужно изменить? (Я уже на грани нервного срыва)

Последний раз редактировалось Admin, 12.12.2010 в 13:13.
Ответить с цитированием
  #4  
Старый 11.12.2010, 12:49
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Ну для твоего случая достаточно такого:
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
  i, n: integer;
begin
  n := 0;
  for i := 0 to StringGrid1.ColCount - 1 do
  begin
    try
      n := n + StrToInt(StringGrid1.Cells[i, 1]);
    except
    end;
  end;
  ShowMessage('Сумма = ' + IntToStr(n));
end;
Ответить с цитированием
  #5  
Старый 11.12.2010, 13:12
тупица( тупица( вне форума
Прохожий
 
Регистрация: 10.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Спасибо огромное!!!
А как тогда сделать, чтобы ответ выводился в Edit1?
Ответить с цитированием
  #6  
Старый 11.12.2010, 13:35
Аватар для BoRoV
BoRoV BoRoV вне форума
Начинающий
 
Регистрация: 08.09.2008
Сообщения: 193
Репутация: 12694
По умолчанию

Вместо ShowMessage напиши:
Код:
  Edit1.Text := 'Сумма = ' + n;
Ответить с цитированием
  #7  
Старый 11.12.2010, 14:46
тупица( тупица( вне форума
Прохожий
 
Регистрация: 10.12.2010
Сообщения: 4
Репутация: 10
По умолчанию

Еще раз благодарю за помощь!!!
Ответить с цитированием
Ответ


Delphi Sources

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

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 07:46.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025