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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 27.01.2013, 11:25   #1
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
Вопрос Проблемы с операторами

Помогите кто знает есть код для расчётаки 4-ок и 5-ок, вроди всё написано правельно, но почемуто код не воспринимает 4-ки, если введены все 5-ки ну например 25 пятёрок (25*100/25) = 100%, а когда введены 4-ки получается что он их не считает и получается 0%, хотя он должен считать как 4-ки так и 5-ки и прибавлять их к переменной "а", но прибавляет только 5-ки.
Код:
procedure TForm1.Button1Click(Sender: TObject);
var a,c :integer;
w:Extended;
begin
a:=0;
 if StrToInt(Edit31.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit32.text)=4 or 5 then a:=a+1;
 if StrToInt(edit33.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit34.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit35.text)=4 or 5 then a:=a+1;
 if StrToInt(edit36.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit37.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit38.text)=4 or 5 then a:=a+1;
 if StrToInt(edit39.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit40.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit41.text)=4 or 5 then a:=a+1;
 if StrToInt(edit42.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit43.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit44.text)=4 or 5 then a:=a+1;
 if StrToInt(edit45.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit46.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit47.text)=4 or 5 then a:=a+1;
 if StrToInt(edit48.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit49.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit50.text)=4 or 5 then a:=a+1;
 if StrToInt(edit51.text)=4 or 5 then a:=a+1;
 if StrToInt(Edit52.Text)=4 or 5 then a:=a+1;
 if StrToInt(edit53.text)=4 or 5 then a:=a+1;
 if StrToInt(edit54.text)=4 or 5 then a:=a+1;
 if StrToInt(edit55.text)=4 or 5 then a:=a+1;
 c:=StrToInt(edit781.text);
 w:=((a*100)/c);
 label3.Caption:=FloatToStr (W);
end;
end.

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

Код:
if StrToInt(Edit31.Text) in [4,5] then a:=a+1;
Так подходит?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2013, 11:41   #3
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

Да, спасибо подошло)
SW00001 вне форума Ответить с цитированием
Старый 27.01.2013, 13:46   #4
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

А что нужно прописать чтобы было так: если edit пустой то просто неучитывать это значение, чтобы не выдавалась ошибка. А то у меня когда не вводишь цифру в эдит(остаётся пустой) то сразу выдаёт ошибку.
подскажите пожалуйсто
SW00001 вне форума Ответить с цитированием
Старый 27.01.2013, 14:03   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

StrToIntDef использовать
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2013, 14:04   #6
SW00001
Пользователь
 
Регистрация: 21.01.2013
Сообщений: 39
По умолчанию

т.е. вместо if StrToInt(Edit31.Text)=4 or 5 then a:=a+1; вставить StrToIntDef ?
SW00001 вне форума Ответить с цитированием
Старый 27.01.2013, 14:06   #7
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Не просто вставить а вдумчиво изучить в хелпе эту функцию и примеры с ней
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 27.01.2013, 14:32   #8
Develop
Пользователь
 
Регистрация: 26.06.2010
Сообщений: 52
По умолчанию

Цитата:
Сообщение от SW00001 Посмотреть сообщение
А что нужно прописать чтобы было так: если edit пустой то просто неучитывать это значение, чтобы не выдавалась ошибка. А то у меня когда не вводишь цифру в эдит(остаётся пустой) то сразу выдаёт ошибку.
подскажите пожалуйсто
Можно же проверить строку перед конвертацией:
Код:
if Trim(text) <> '' then ***
или сделать обработку исключения:
Код:
try *** Except on EConvertError do ... ; end;
или есть еще такое:
Код:
function TryStrToInt(const S: string; out Value: Integer): Boolean;

Последний раз редактировалось Develop; 27.01.2013 в 14:37.
Develop вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи с операторами повтора. AntoshkaK Паскаль, Turbo Pascal, PascalABC.NET 0 09.12.2011 07:39
Практическая с Операторами циклов по BC++ Juice_TKD Помощь студентам 3 17.05.2011 22:17
циклы с операторами For, While, Repeat baltser Помощь студентам 1 03.06.2010 06:59
Подсобите с операторами Паскаля... yurasta Помощь студентам 0 17.05.2010 20:17