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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2009, 23:57   #1
bee_uk
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 18
По умолчанию Подскажите как сделать парвильно)

у меня вводятся значения в Editах
Мне необходимо, чтоб была проверка, что эти значения 1)только неотрицательные,2)только с одной точкой или без неё.
А также нужно проверить, 3)если есть введённое значение в Edit, то далее работает программа, а если не все Editы заполнены...тогда Show Message.
???????

Спасибо
bee_uk вне форума Ответить с цитированием
Старый 05.06.2009, 00:51   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Сначала проверяете все поля на пустоту. Потом проверяете количество точек в полях. Потом ищете минусы. Если где-нибудь косяк, то показываем сообщение и выходим (return).
Все это делается над строками.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:03   #3
bee_uk
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 18
По умолчанию

над строками - это значит, что перед самым кодом??

Код:
if ((Key>='0')&&(Key<='9'))
return;
if (Key==DecimaSeparator)
{if ((Edit1->Text).Pos(DecimalSeparator)!=0)
Key=0;
return;
}
так??

Последний раз редактировалось Sazary; 05.06.2009 в 01:06.
bee_uk вне форума Ответить с цитированием
Старый 05.06.2009, 01:10   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от bee_uk
над строками - это значит, что перед самым кодом??
Это я имел в виду, что переводить в числа не нужно.
Цитата:
Сообщение от bee_uk
так??
А кто такой Key?

На пустоту так:
Код:
if(length(Eidt1->Text)==0) // выходим
Про точку: тут одним Pos-ом не обойтись. Либо 2 Pos'а, либо проходим по строке и считаем точки (и если больше 1-й - выходим).
Ну а минус - просто проверяем первый символ строки.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:25   #5
bee_uk
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 18
По умолчанию

Key, я писала, как глобальная переменная...не уверена, что это правильно...но если я пишу так - у меня вдруг вылазят ошибки в других местах(не распознаются русские буквы почему-то из-за этого)
bee_uk вне форума Ответить с цитированием
Старый 05.06.2009, 01:37   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Так вам нужна проверка в реальном времени (прямо при вводе), или уже потом, например, по нажатию кнопки?
Про точку я это имел в виду:
Код:
int cnt=0,i;
for(i=1; i<=Edit1->Text.Length(); i++)
 if(Edit1->Text[i]==DecimalSeparator) ++cnt;
if(cnt>1)
 {
  ShowMessage("Ошибка!");
  return;
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 01:53   #7
bee_uk
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 18
По умолчанию

Да, мне надо,когда на кнопку нажимаешь, что ыбло сообщение, что типа ошибка))
bee_uk вне форума Ответить с цитированием
Старый 05.06.2009, 01:57   #8
bee_uk
Пользователь
 
Регистрация: 28.05.2009
Сообщений: 18
По умолчанию

и куда вставить этот код про точку???я вставляю как
Код:
void __fastcall TForm1::FormCreate(TObject *Sender)
{
 int cnt=0,i;
for(i=1; i<=Edit1->Text.Length(); i++)
 if(Edit1->Text[i]==DecimalSeparator) ++cnt;
if(cnt>1)
 {
  ShowMessage("Ошибка!");
  return;
 }
и ничего!(((

Модератор: тег CODE

Последний раз редактировалось Sazary; 05.06.2009 в 01:59.
bee_uk вне форума Ответить с цитированием
Старый 05.06.2009, 02:00   #9
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

А при чем тут FormCreate? Ставьте на кнопку. Этот код должен выполняться, когда в эдите уже что-то есть.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума Ответить с цитированием
Старый 05.06.2009, 09:40   #10
pu4koff
Старожил
 
Аватар для pu4koff
 
Регистрация: 22.05.2007
Сообщений: 9,065
По умолчанию

Так в билдере должны быть функции: TryStrToInt / TryStrToFloat (в делфях по крайней мере есть, думаю и в билдер "завезли").
Сначала пытаетесь строку перевести в число, если удалось, то уже число проверяете отрицательное оно или какое-то еще.
Код:
int x;
if (TryStrToInt(Edit1->Text, x))
{
  if (x < 0)
  {
    ShowMessage("x < 0");
    return;
  }
}
else
{
  ShowMessage("Введено некорректное число");
  return;
}
pu4koff вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подскажите как сделать! Sanek777 Общие вопросы Delphi 5 08.08.2008 19:12
Подскажите пожалуйсто как сделать xGroupers Общие вопросы Delphi 26 25.04.2008 00:16
Подскажите как сделать аналог Felix Zeraim Свободное общение 2 07.03.2008 17:55
Подскажите как сделать цикл... Apollo_13 Общие вопросы Delphi 4 26.06.2007 22:01
Подскажите как лучше сделать Gendolff БД в Delphi 1 10.02.2007 08:47