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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.07.2009, 14:49   #1
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
Восклицание Задача со StrinGrid-ом

Добрый день! Столкнулся с такой задачкой. Пишу, что-то наподобие классного журнала и нужна ваша помощь. Всем известно, что в журнале ставится дата и полученная учеником оценка в этот день. Дни могут стоять разные. От даты я не завишу. Так вот, пусть, например, даты стоят следующие: 1.09 4.09. Под ними оценки 4 5. И вот, учитель ставит в следующей ячейке I, что означает конец первой четверти. Мне нужно, чтобы считалось количество каждого вида оценок (пятерок, четверок, троек, двоек, н-ок) до символа I. Код подсчета у меня есть. А потом, нужно, чтобы при следующем обсчете все виды оценок считались уже после I, а цифры до I в расчет не брались. Предполагал сделать как-то так:
Код:
procedure TForm8.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:=4 to 100 do
  begin
     if Form8.StringGrid1.Cells[i,0] = 'I' then
        begin
            //тут код сложения
         end;
  end;
end;
Будет ли этот код работать так, чтобы была решена моя задача?
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.07.2009, 14:52   #2
psycho-coder
Участник клуба
 
Аватар для psycho-coder
 
Регистрация: 06.04.2009
Сообщений: 1,524
По умолчанию

Будет... До первого вхождения "I"
psycho-coder вне форума Ответить с цитированием
Старый 27.07.2009, 14:55   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
А потом, нужно, чтобы при следующем обсчете все виды оценок считались уже после I,
Ну так проходи начиная с конца вверх до первой снизу I. и считай.

P.S. ИМХО - БД здесь лучший выход.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 15:42   #4
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Будет... До первого вхождения "I"
"I" и будет только один раз появляться. Потом будет II, III, IV и Год. Вопрос в том, как сделать, чтобы брались только те значения, которые стоят после I, а потом и после II и т.д. Может какое-то условие добавить надо?
Цитата:
P.S. ИМХО - БД здесь лучший выход.
Каким образом ее сюда сделать? Для чего?)
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.07.2009, 16:01   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Может какое-то условие добавить надо?
Например от нечисла до следующего нечисла
Цитата:
Для чего?)
Смеешся??? Например каждую четверть в отдельную таблицу.
Я свой курсач - журнал классный делал в БД.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 16:25   #6
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Например от нечисла до следующего нечисла
Можешь помочь кусочком кода?
Цитата:
Например каждую четверть в отдельную таблицу.
Хорошо, подумаю над этим .
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.
artemavd вне форума Ответить с цитированием
Старый 27.07.2009, 16:37   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Можешь помочь кусочком кода?
Теоретически: Допустим у тебя есть число n - строка, которая идет первая после некой ячейки с нечислом, тогда проходя по строкам, и пытаясь их конвертировать в число до первой ошибки, которая будет означать что это не число, ты получишь цикл от нечисла до нечисла. В нем и проводи нужные действия
Код:
 i:=n; while (i<StringGrid1.RowCount)and
  (TryStrToInt(StringGrid1.Cells[0,i],k)) do inc(i);
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.07.2009, 18:26   #8
artemavd
Старожил
 
Аватар для artemavd
 
Регистрация: 05.06.2008
Сообщений: 4,206
По умолчанию

Цитата:
Допустим у тебя есть число n - строка, которая идет первая после некой ячейки с нечислом, тогда проходя по строкам,
У меня всего будет одна строка. Количество колонок будет с 4 по 100. Строка одна. Что-то я, уважаемый Stilet, твой код не понял....

Мой вариант кода:
Код:
procedure TForm8.Button1Click(Sender: TObject);
var
  i: integer;
begin
  for i:=4 to 100 do
  begin
     if Form8.StringGrid1.Cells[i,0] = 'I' then
        begin
            //тут код сложения
         end;
  end;
end;
не работает как надо (. Stilet, как ты решил этот вопрос в своей задаче? Если он стоял перед тобой такой вопрос.
Не стоит смеяться над человеком делающим шаг назад, возможно он делает разбег.

Последний раз редактировалось Stilet; 28.07.2009 в 11:56.
artemavd вне форума Ответить с цитированием
Старый 28.07.2009, 12:03   #9
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
твой код не понял
Смысл моего кода в том чтобы пройтись по ячейкам, пока в очередной ячейке ее содержимое не сможет сконвертироваться в число - на этой ячейке и бует конец счета
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 28.07.2009, 12:15   #10
quit
Я есть!
Форумчанин
 
Аватар для quit
 
Регистрация: 17.02.2008
Сообщений: 318
По умолчанию

Код:
var
  i, tmpint: integer;
begin
  tmpint := 0;
  for i:=4 to 100 do
  begin
       if TryStrToInt(StringGrid1.Cells[i,0],tmpint) then
       begin
       //твой код
       end;
  end;
end;
БД спасет тебя от такого Г...
©Учиться, учиться и еще раз учиться!
quit вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Печать Stringrid в FastReport LIEN Компоненты Delphi 2 25.05.2009 11:18
C++. Проблема с раскидкой текста по ячейкам StrinGrid -=CrasH=- Помощь студентам 1 20.04.2009 13:46