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

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

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

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

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 11.04.2009, 23:32   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию Нужно скоратить выражение

Здравствуйте! Подскажите пожалуйста,что лучше использовать,чтоб сократить вот это выражение:

Код:
//Проверка на вводимость данных в поле Edit1..Edit5
if((Edit1->Text).Length() == 0)
{
ShowMessage("Ведите значение -> а");
return;
}
if((Edit2->Text).Length() == 0)
{
ShowMessage("Ведите значение -> b");
return;
}
if((Edit3->Text).Length() == 0)
{
ShowMessage("Ведите значение -> c");
return;
}
if((Edit4->Text).Length() == 0)
{
ShowMessage("Ведите значение -> d");
return;
}
if((Edit5->Text).Length() == 0)
{
ShowMessage("Ведите значение -> h");
return;
}
prikolist вне форума
Старый 12.04.2009, 00:02   #2
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

загнать указатели на эдиты в массив? но если у тебя их не 100 штук, сомнительное удовольствие.
а чем эта конструкция не устраивает?
vvviperrr вне форума
Старый 12.04.2009, 00:16   #3
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Вот такой способ еще есть:
Код:
for(int i=1;i<6;i++)
 {
 TControl * a = (TControl*)FindChildControl("Edit"+IntToStr(i));
 if(a->GetTextLen()==0)
  {
   ShowMessage("Введите значение");
   return;
  }
 }
Или вот так (даже лучше, наверное).
Код:
for(int i=1;i<6;i++)
 {
 TEdit *b = dynamic_cast<TEdit*>(FindChildControl("Edit"+IntToStr(i)));
 if(b->Text.Length()==0)
  {
   ShowMessage("Введите значение");
   b->SetFocus();
   return;
  }
 }
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]

Последний раз редактировалось Sazary; 12.04.2009 в 00:18.
Sazary вне форума
Старый 12.04.2009, 00:33   #4
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2Sazary точно, этож билдер) хотя по хорошему контролам имена надо задавать логически соответствующие содержанию, тогда такой способ не прокатит)
vvviperrr вне форума
Старый 12.04.2009, 00:36   #5
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Сообщение от vvviperrr
хотя по хорошему контролам имена надо задавать логически соответствующие содержанию, тогда такой способ не прокатит)
Ну у prikolist'а 5 эдитов под переменные. Поэтому если и изменять стандартные имена, то будет логично дать им похожие имена (какое-нибудь n1, n2...).

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

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 12.04.2009, 14:42   #6
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Скажите,правильно ли я понял эту строку,если что не так,поправьте пож.

Код:
TEdit *b = dynamic_cast<TEdit*>(FindChildControl("Edit"+IntToStr(i)));
 if(b->Text.Length()==0)
Переменной b, указателю на переменную TEdit
prikolist вне форума
Старый 12.04.2009, 14:50   #7
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Цитата:
Переменной b, указателю на переменную TEdit
о_О Вообще не понял )

Есть указатель на TEdit - b.
Ищем элемент TControl с именем Edit1 (или Edit2, Edit3...)
Пытаемся его преобразовать к TEdit.
Т.к. мы знаем, что точно найдем TEdit, то проверку можно не добавлять (хотя это было бы более правильно). И этот указатель на TEdit присваиваем b.
Дальше работаем с b также, как и с обычным TEdit*.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

___________________________________ ___________________________________ _______
[=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль]
Sazary вне форума
Старый 13.04.2009, 13:18   #8
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
По умолчанию

Подскажите,а что делает FindChildControl
prikolist вне форума
Старый 13.04.2009, 17:56   #9
vvviperrr
Тупой студент
Форумчанин
 
Аватар для vvviperrr
 
Регистрация: 12.05.2007
Сообщений: 614
По умолчанию

2prikolist ну этож явно. find - искать, child - дочерний. а контрол он и в африке контрол. функция ищет дочерний контрол на форме по заданному имени контрола.
vvviperrr вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Логическое выражение DaniyMilner Общие вопросы C/C++ 6 22.02.2009 19:14
регулярное выражение XeN0N Помощь студентам 1 27.01.2009 15:14
Проверить выражение fosto Общие вопросы Delphi 1 16.12.2008 01:52
Проверьте выражение fosto Помощь студентам 2 15.12.2008 22:58
Строковое выражение SeregaIRK Общие вопросы C/C++ 1 07.10.2008 19:20