Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 08.03.2008, 15:37
Vigor Vigor вне форума
Прохожий
 
Регистрация: 20.11.2007
Сообщения: 12
Репутация: 10
По умолчанию Нужна помощь с Editom

Нужно сделать проверку, если в Edit введено что-либо кроме положительного числа то выйти из программы, как это можно сделать?
Ответить с цитированием
  #2  
Старый 08.03.2008, 16:05
Аватар для alikoder
alikoder alikoder вне форума
Начинающий
 
Регистрация: 05.12.2007
Сообщения: 126
Репутация: 10
По умолчанию

как понять положительное число? с плюсом, что ли +1 +2 и тд?
Ответить с цитированием
  #3  
Старый 08.03.2008, 16:28
Vigor Vigor вне форума
Прохожий
 
Регистрация: 20.11.2007
Сообщения: 12
Репутация: 10
По умолчанию

Да, число должно быть не отрицательное и не равное нулю, остальные подходят. Если вводятся какие-то символы, в том числе и пробел нужно выйти из программы.
Ответить с цитированием
  #4  
Старый 08.03.2008, 19:13
Аватар для Dimanus
Dimanus Dimanus вне форума
Прохожий
 
Регистрация: 20.11.2006
Адрес: Россия г.Братск
Сообщения: 33
Репутация: 10
По умолчанию

По поводу числа, там же всё просто.
if StrToInt(Edit.Text) > 0 then "Выйти из программы";

А по поводу символов если они не нужны то можно их исключить, все кроме числовый по событию KeyPress или какие то запрещать а какие то разрашать, там же способы реализации разные.
Ответить с цитированием
  #5  
Старый 08.03.2008, 19:25
Аватар для White_Horse
White_Horse White_Horse вне форума
Новичок
 
Регистрация: 28.10.2007
Сообщения: 61
Репутация: 15
По умолчанию

Цитата:
Сообщение от Vigor
Нужно сделать проверку, если в Edit введено что-либо кроме положительного числа то выйти из программы, как это можно сделать?

Обработай событие OnKeyPress у своего Edita'a , как пример :
Код:
procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
  if Key in ['1'..'9'] then //запрет ввода чисел 1 - 9 
    begin
      Key:=#0;
      Exit;//Close
    end;
end;
Ответить с цитированием
  #6  
Старый 08.03.2008, 20:39
Аватар для Dimanus
Dimanus Dimanus вне форума
Прохожий
 
Регистрация: 20.11.2006
Адрес: Россия г.Братск
Сообщения: 33
Репутация: 10
По умолчанию

Я чего то не пойму, ему же нужен ввод положительных чисел, а не их запрет ( обращение к White Horse ).

Можно написать такой способ :

procedure TForm1.EditKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #32 then "Выйти";// Если нажат пробел то exit

case key of
'0'..'9':
Begin
IF POS(DecimalSeparator, Edit.Text) <> 0 THEN Key:=Chr(0);
end;
#8:; // разрещён backspase
// #97..#122:; // разрешён ввод английских букв
else Key:=Chr(0); // или Form.Close;
end;
end;

Последний раз редактировалось Dimanus, 08.03.2008 в 21:02.
Ответить с цитированием
  #7  
Старый 08.03.2008, 20:58
Аватар для White_Horse
White_Horse White_Horse вне форума
Новичок
 
Регистрация: 28.10.2007
Сообщения: 61
Репутация: 15
По умолчанию

Цитата:
Сообщение от Dimanus
Я чего то не пойму, ему же нужен ввод положительных чисел, а не их запрет ( обращение к White Horse ).
Ну так их проще совсем запретить )))
Ответить с цитированием
  #8  
Старый 09.03.2008, 07:52
Аватар для The Shadow
The Shadow The Shadow вне форума
Продвинутый
 
Регистрация: 11.06.2007
Адрес: Уфа, Россия
Сообщения: 793
Репутация: 35
По умолчанию

Ну или так:
Код:
procedure TForm1.Edit1Change(Sender: TObject);
begin
try
if StrToInt(Edit1.Text) <= 0 then 
Application.Terminate;
except
Application.Terminate;
end;
end;
__________________
Что делать, когда сломался комп:
1. Если вы юзер - делать ноги.
2. Если ремонтник - делать деньги.
3. Если вы программист - делать вид, что так было задумано.
Ответить с цитированием
  #9  
Старый 09.03.2008, 07:54
Аватар для s0Creator
s0Creator s0Creator вне форума
Местный
 
Регистрация: 20.02.2008
Адрес: Московская область
Сообщения: 420
Репутация: 884
По умолчанию

PHP код:
procedure TForm1.Edit1KeyPress(SenderTObject; var KeyChar);
begin
  
// перечисляешь все допустимые символы если целое то
  // if not (Key in ['0'..'9','+']) then Application.Terminate;
  // если с запятой и мантисой
  
if not (Key in ['0'..'9','+',DecimalSeparator,'e','E']) then Application.Terminate;
end;

procedure TForm1.Edit1Change(SenderTObject);
begin
// если может быть с запятой
if StrToFloatDef(Edit1.Text,0) <= 0 then Application.Terminate;
// если толь целое
// if StrToIntDef(Edit1.Text,0) <= 0 then Application.Terminate;
end
Ответить с цитированием
  #10  
Старый 10.03.2008, 00:17
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Ставь условие значения ЭдитБокса > 0 ничего сложного
Ответить с цитированием
  #11  
Старый 10.03.2008, 01:20
Vigor Vigor вне форума
Прохожий
 
Регистрация: 20.11.2007
Сообщения: 12
Репутация: 10
По умолчанию

Цитата:
Сообщение от Неподарок
Ставь условие значения ЭдитБокса > 0 ничего сложного
Да это понятно, я не знал как символы запретить.
PS Ответившим спасибо
Ответить с цитированием
  #12  
Старый 10.03.2008, 04:10
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Запрещай символы через запрет нажатия клавиш..выше читай!

Тему можно считать закрытой думаю)
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 08:44.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025