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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.10.2013, 10:20   #1
roma88gruzd88
 
Регистрация: 31.08.2012
Сообщений: 3
По умолчанию is not valid integer value

Здравствуйте.
Есть Stringgrid из 9 столбцов(Группа, Фамилия, Математика, Физика, ОАиП, ООП, БД, уч в общ жизни, Стипендия)
Делаю расчет стипендии в последнем столбце. Запускаю цикл на проверку значений с 3 столбца и второй стоки(там числа), все компилируется, но когда наживаю Рассчитать стипендию, то выдает ошибку is not valid integer value, как я понимаю он не находит числовых значений в StringGrid-е, но там у меня числа, и пустых строк нет.
У кого какие идеи? В чем проблема?

Код:
procedure TForm1.BitBtn4Click(Sender: TObject);
var
  i, j, k5, k4, k3: integer;
  s: double;
begin
StringGrid1.ColCount:=9;
s:=StrToFloat(Edit1.Text);
for i:=2 to stringgrid1.ColCount-1 do
  begin
  for j:= 1 to stringgrid1.RowCount-1 do
    begin
    k5:=0;
    k4:=0;
    k3:=0;
    if strtoint(stringgrid1.Cells[i,j]) = 5 then k5:=k5+1
    else if strtoint(stringgrid1.Cells[i,j]) = 4 then k4:=k4+1
    else if strtoint(stringgrid1.Cells[i,j]) = 3 then k3:=k3+1;
    if (k5=5)and(k4=0)and(k3=0)and(strtoint(stringgrid1.Cells[7,i])=1) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s+s/2);
    end
    else if (k5=5)and(k4=0)and(k3=0)and(strtoint(stringgrid1.Cells[7,i])=0) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s+s/4);
    end
    else if ((k5<5)or(k5>0))and((k4<5)or(k4>0))and(k3=0) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s);
    end
    else if ((k5<5)or(k5>0))and((k4<5)or(k4>0))and(k3=1)and(strtoint(stringgrid1.Cells[7,i])=1) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s);
    end
    else stringgrid1.Cells[8,i]:='Нет';

    end;
  end;
end;
roma88gruzd88 вне форума Ответить с цитированием
Старый 16.10.2013, 10:32   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А в 8-ую колонку сами же пишете не целые числа, а потом удивляетесь - почему в Integer не преобразовывается. Цикл по столбцам должен же это учитывать. Да и запись в Cells[8,i] походу не верна, скорее Cells[8,j]. Аналогично для Cells[7,i]
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.10.2013 в 10:40.
Аватар вне форума Ответить с цитированием
Старый 16.10.2013, 10:38   #3
roma88gruzd88
 
Регистрация: 31.08.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
А в 8-ую колонку сами же пишете не целые числа, а потом удивляетесь - почему в Integer не преобразовывается. Цикл по столбцам должен же это учитывать. Да и записть в Cells[8,i] походу не верна, скорее Cells[8,j]
все понял) спасибо) но вот еще один вопрос, в последнюю колонку записываются все одинаковые данные, т.е. в моем случае 100000, хотя исходные данные разные

Последний раз редактировалось roma88gruzd88; 16.10.2013 в 10:42.
roma88gruzd88 вне форума Ответить с цитированием
Старый 16.10.2013, 11:27   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от roma88gruzd88 Посмотреть сообщение
все понял) спасибо) но вот еще один вопрос, в последнюю колонку записываются все одинаковые данные, т.е. в моем случае 100000, хотя исходные данные разные
ну очевидно. Потому что Вы неверно формируете.

Более конкретный ответ дать затруднительно - не видно не только ваших исходных данных, но и вашего кода!
Вы вообще что делаете, пытаетесь подсчитать количество и процент оценок, вроде того, как отображаются оценки на dnevnik.ru ?!


p.s. и ещё, обсуждение заполнения StringGrid'а выходит за рамки заявленной Вами темы!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 16.10.2013, 13:41   #5
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
Код:
    k5:=0;
    k4:=0;
    k3:=0;
    if strtoint(stringgrid1.Cells[i,j]) = 5 then k5:=k5+1
    else if strtoint(stringgrid1.Cells[i,j]) = 4 then k4:=k4+1
    else if strtoint(stringgrid1.Cells[i,j]) = 3 then k3:=k3+1;
любое из k5, k4, k3 будет 0 или 1 (и только!)
поэтому k5=5 всегда False и k5<5 всегда True
поэтому вы всегда идете на запись по одной и той же ветке

Код:
    if FALSE // (k5=5)and(k4=0)and(k3=0)and(strtoint(stringgrid1.Cells[7,i])=1) 
then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s+s/2);
    end
    else if FALSE // (k5=5)and(k4=0)and(k3=0)and(strtoint(stringgrid1.Cells[7,i])=0) 
then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s+s/4);
    end
    else if TRUE //((k5<5)or(k5>0))and((k4<5)or(k4>0))
and(k3=0) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s);
    end
    else if TRUE //((k5<5)or(k5>0))and((k4<5)or(k4>0))
and(k3=1)and(strtoint(stringgrid1.Cells[7,i])=1) then
    begin
        stringgrid1.Cells[8,i]:=FloatToStr(s);
    end
    else stringgrid1.Cells[8,i]:='Нет';
хотя нет веток больше, но все равно не все.
А-a-a! запись то идет после каждой проверки!
стало быть при расчете учитываются только последняя колонка.

Что делать?
Выкинуть цикл по колонкам и честно (для всех известных колонок) расписать как мы будем считать стипендию.
Цитата:
Есть Stringgrid из 9 столбцов(Группа, Фамилия, Математика, Физика, ОАиП, ООП, БД, уч в общ жизни, Стипендия)
P.S. а теперь можно опять добавить цикл по колонкам, но по нужным и в нужное место!
программа — запись алгоритма на языке понятном транслятору
evg_m на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Is not a valid integer value [Jank] Общие вопросы Delphi 11 18.09.2012 16:36
is not a valid integer value AFA Помощь студентам 41 15.03.2012 20:29
Ошибка '' is not valid integer value svobodys Помощь студентам 4 12.12.2011 22:49
is not a valid integer value FanRa3 Общие вопросы Delphi 10 26.07.2011 19:54
Is not a valid integer value Lifefine Общие вопросы Delphi 8 04.03.2010 18:25