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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 24.04.2014, 16:25   #1
Nightway
Пользователь
 
Регистрация: 18.05.2013
Сообщений: 57
По умолчанию Решение ошибки: проверка Edit'ов на заполнение

в общем такая штука:есть несколько эдитов в которые вводятся значения и по нажатию кнопки происходит расчёт по формуле,но если в один из эдитов нечего не введено,то возникает ошибка и программа вылетает,как сделать,чтобы она не вылетала,а писала что одно из полей не введено?
Nightway вне форума Ответить с цитированием
Старый 24.04.2014, 16:33   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Проверить в OnClick кнопки содержимое эдитов
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 24.04.2014, 16:45   #3
eval
Подтвердите свой е-майл
 
Регистрация: 29.08.2012
Сообщений: 4,011
По умолчанию

проверки, исключения и проч. базовые вопросы вам еще не читали лекции?
eval вне форума Ответить с цитированием
Старый 24.04.2014, 17:31   #4
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Код:
if trim(Edit1.text) = '' then exit;
Перевожу. Если в Edit1 ничего не введено, то выйти из процедуры.
P.S. Вопрос самого что ни на есть начального уровня. Читайте книги, а потом программируйте, но ни в кое случае не наоборот.
XE5 вне форума Ответить с цитированием
Старый 25.04.2014, 10:04   #5
blackstrip
Форумчанин
 
Аватар для blackstrip
 
Регистрация: 21.01.2012
Сообщений: 241
По умолчанию

или заключить сбор значений из edit-ов в try except end примерно так:

(а то можно в edit ввести "154sdfs" и тоже вылезет ошибка при превращении строки в число, тогда проверка на пустую строку не поможет)

Код:
var
a,b,c,resu:integer;
begin

try
a:=StrToInt(Edit1.Text);
except
Application.MessageBox('Ошибочное/пустое значение в поле №1. Поправьте его и вызовите расчет снова.','Ошибка');
exit;
end;

try
b:=StrToInt(Edit2.Text);
except
Application.MessageBox('Ошибочное/пустое значение в поле №2. Поправьте его и вызовите расчет снова.','Ошибка');
exit;
end;

try
c:=StrToInt(Edit3.Text);
except
Application.MessageBox('Ошибочное/пустое значение в поле №3. Поправьте его и вызовите расчет снова.','Ошибка');
exit;
end;

//если все ок - считаем результат по формуле
resu:=a+b+c;

end;

Последний раз редактировалось blackstrip; 25.04.2014 в 10:08.
blackstrip вне форума Ответить с цитированием
Старый 25.04.2014, 10:35   #6
IliaIT
Форумчанин
 
Аватар для IliaIT
 
Регистрация: 17.03.2009
Сообщений: 977
По умолчанию

а для цифр придуман другой способ проверок. (да и у многих функций перевода есть функция с проверкой аналогичная)
TryStrToInt(Edit1.Text,a)
если перевелось то вернётся правда если не перевелось то ложь.
Интуитивно понятный интерфейс - это такой интерфейс, для работы с которым нужна недюжинная интуиция.
IliaIT вне форума Ответить с цитированием
Старый 25.04.2014, 11:26   #7
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

А ты как хочел? Ты пытаешь перевести текст в числовую переменную. Ещё бы ошибки не было.
-=Virus=- вне форума Ответить с цитированием
Старый 25.04.2014, 11:47   #8
-=Virus=-
Форумчанин
 
Аватар для -=Virus=-
 
Регистрация: 03.07.2009
Сообщений: 246
По умолчанию

Пользуйся

Код:
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c,resu:integer;
begin

if TryStrToInt(Edit1.Text,a) then

else
begin
 showmessage('Ошибочное/пустое значение в поле №1. Поправьте его и вызовите расчет снова.');
 exit;
end;

if TryStrToInt(Edit2.Text,b) then
else
begin
 showmessage('Ошибочное/пустое значение в поле №2. Поправьте его и вызовите расчет снова.');
 exit;
end;

if TryStrToInt(Edit3.Text,c) then
else
begin
 showmessage('Ошибочное/пустое значение в поле №3. Поправьте его и вызовите расчет снова.');
 exit;
end;

//если все ок - считаем результат по формуле

showmessage(IntTOStr(a+b+c));
end;
-=Virus=- вне форума Ответить с цитированием
Старый 25.04.2014, 12:49   #9
XE5
Заблокирован
 
Регистрация: 02.03.2014
Сообщений: 439
По умолчанию

Интересно почему все резко забили на MaskEdit?
XE5 вне форума Ответить с цитированием
Старый 25.04.2014, 13:07   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
забили на MaskEdit
В делфи халтурно реализовано. Имхо. Поэтому вообще никогда этой фигней не пользуюсь
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проверка на заполнение ячеек в строке Uralmaster Microsoft Office Excel 3 10.02.2013 14:24
заполнение edit ,ранее созданных динамически Игорь Кулакевич Помощь студентам 10 31.10.2011 12:15
Проверка на заполнение полей svyatoi777 Помощь студентам 3 14.03.2011 15:47
Заполнение массива через Edit FennecFox Общие вопросы Delphi 7 12.08.2010 10:39
Заполнение StringGrid из Edit Инна Помощь студентам 13 03.05.2007 13:44