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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 03.02.2009, 17:56   #1
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость Вопросы по поводу edit`ов

Ребята, на форму кинул 3 едита и 1 кнопку, в едит №1 и №2 вводим числа, нажимаем кнопку и в едит №3 выводиться сумма 2-х чисел.

Вопрос №1
Если я не ввожу никаких чисел, а сразу наживаю кнопку, выскакивает ошибка! Как это избежать? я хочю что бы при нажатии кнопки никаких действий не происходило, если едит 1 и едит 2 не заполнены!
Вопрос №2
Если ввожу буквы, то тоже ошибка, я хочю что бы при нажатии кнопки никаких действий не происходило!

Заранее спасибо!
Lemo вне форума
Старый 03.02.2009, 18:07   #2
goblinyara
Форумчанин
 
Аватар для goblinyara
 
Регистрация: 02.01.2009
Сообщений: 340
По умолчанию

Код:
procedure TForm1.Button1Click(Sender: TObject);
var i: integer;
begin
if edit1.Text <>'' then
for i:=1 to length(edit1.Text) do
if not (edit1.Text[i] in ['0','1','2','3','4','5','6','7','8','9']) then
begin
showmessage('Символ '+inttostr(i)+' не цифра!!!');
exit;
end
else
begin
//тут делаете то,что вам нужно
end;
end;
это для одного эдита, для второго - аналогично
DelphiWorld 6. Скачай, поставь, и будет тебе счастье=)
Программирование, как и любовь -- одно слово, за которым скрывается бесконечное множество занятий.
goblinyara вне форума
Старый 03.02.2009, 18:09   #3
NieL
Форумчанин
 
Регистрация: 17.11.2008
Сообщений: 116
По умолчанию

Можно так:

Код:
if TryStrToInt(edit1.Text, v1) and TryStrToInt(edit2.Text, v2) then
// какое-то действие 
ShowMessageFmt('%d', [v1 + v2]);

Последний раз редактировалось NieL; 03.02.2009 в 18:12.
NieL вне форума
Старый 03.02.2009, 18:18   #4
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

а не проще ли MaskEdit использовать?
или ограничить ввод символов?
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума
Старый 03.02.2009, 18:29   #5
5naip
Форумчанин
 
Аватар для 5naip
 
Регистрация: 05.10.2007
Сообщений: 536
По умолчанию

можно ли так? на ошибку при компиляции не смотреть...в готовом exeшнике все оки-доки...
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
try
edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));
except
showmessage('неверные данные');
edit1.Text:='';
edit2.Text:='';
edit3.Text:='';
end;
end;
rocklistener...
5naip вне форума
Старый 03.02.2009, 18:33   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Ну, вот это:
Цитата:
if not (edit1.Text[i] in ['0','1','2','3','4','5','6','7','8' ,'9']) then
begin
showmessage('Символ '+inttostr(i)+' не цифра!!!');
exit;
end
будет очень напрягать - все время жмакать "ОК"...
Проще по EditKeyDown присваивать key:=0;
Да и вообще вся обработка должна происходить в момент нажатия клавиш в эдитах (или отпускания), а не в обработчике кнопки Button1Click.
А вообще - вопрос из множества "жеванных-пережеванных"...
mihali4 вне форума
Старый 03.02.2009, 19:03   #7
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Код:
procedure TForm1.Button1Click(Sender: TObject);

var i, j: integer;
begin
if edit1.Text <>'' then
for i:=1 to length(edit1.Text) do
if not (edit1.Text[i] in ['0','1','2','3','4','5','6','7','8','9']) then
begin
showmessage('Символ '+inttostr(i)+' не цифра!!!');
exit;
end
else
begin
edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));
end;


if edit2.Text <>'' then
for j:=1 to length(edit2.Text) do
if not (edit2.Text[j] in ['0','1','2','3','4','5','6','7','8','9']) then
begin
showmessage('Символ '+inttostr(j)+' не цифра!!!');
exit;
end
else
begin
edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));
end;
end;
end.
Со 2м едитом выдает ошибку!
Lemo вне форума
Старый 03.02.2009, 19:27   #8
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

Цитата:
Сообщение от NieL Посмотреть сообщение
Можно так:

Код:
if TryStrToInt(edit1.Text, v1) and TryStrToInt(edit2.Text, v2) then
// какое-то действие 
ShowMessageFmt('%d', [v1 + v2]);
NieL предложил самый разумный и простой вариант (имхо)

используй TryStrToInt (или Float, что тебе надо)
Bayazet вне форума
Старый 03.02.2009, 19:34   #9
Lemo
Форумчанин
 
Аватар для Lemo
 
Регистрация: 13.10.2008
Сообщений: 714
Радость

Код:
procedure TForm1.Button1Click(Sender: TObject);
var v1,v2:integer;
begin
if TryStrToInt(edit1.Text, v1) and TryStrToInt(edit2.Text, v2) then
edit3.text:=inttostr(strtoint(edit1.text)+strtoint(edit2.text));

end;
end.
Вот оно, спасибо за помощь!
Lemo вне форума
Старый 03.02.2009, 19:38   #10
Bayazet
Форумчанин
 
Регистрация: 08.12.2008
Сообщений: 156
По умолчанию

))

edit3.text:=inttostr(strtoint(edit1 .text)+strtoint(edit2.text));

у вас уже есть значения edit1.text и edit2.text в, соответственно, v1 и v2.

следовательно можно обойтись этим:

Код:
procedure TForm1.Button1Click(Sender: TObject);
var v1,v2:integer;
begin
if TryStrToInt(edit1.Text, v1) and TryStrToInt(edit2.Text, v2) then
edit3.text:=inttostr(v1 + v2);

end;
end.
Bayazet вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Помогите по поводу разгона Jugger Компьютерное железо 7 21.11.2008 13:42
по поводу привода Nixtone Помощь студентам 1 14.12.2007 22:08
Вопрос по поводу StringList(а) KAMENYKA Компоненты Delphi 4 07.12.2007 13:01
Вопрос по поводу типов werser Помощь студентам 4 23.06.2007 14:18
-=Вопросы от Хамана по поводу Дельфей=- HAMMAN Помощь студентам 2 29.05.2007 19:35