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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2009, 21:31   #1
prikolist
Форумчанин
 
Аватар для prikolist
 
Регистрация: 18.06.2008
Сообщений: 350
Вопрос Выдача ошибки при вводе 2 нулей в Edit1..Edit5

Здравствуйте! Подскажите пожалуйста,как, используя функцию,повторять вот это выражение, начиная с Edit1..Edit5.,чтоб не записывать много текста.

Код:
if(Edit1->Text.Length()>1)
if(Edit1->Text[1] == '0' && Edit1->Text[2]!=DecimalSeparator)
{
ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
return;
Тоесть,чтоб не вводить тоже самое 5 раз в Edit1,Edit2,Edit3,Edit4,Edit5.
Заранне благодарен за ответ.
prikolist вне форума Ответить с цитированием
Старый 11.04.2009, 21:50   #2
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Ну вот такой способ есть. Проверяет для всех Эдитов на форме.
Код:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
TEdit *edit;
for(int i=0;i<ComponentCount;i++)
if(edit=dynamic_cast<TEdit*>(Components[i]))
if(edit->Text.Length()>1)
 if(edit->Text[1] == '0' && edit->Text[2]!=DecimalSeparator)
 {
 ShowMessage("Ошибка! Вы не поставили запятую после 1-го нуля");
 edit->SetFocus();
 return;
 }
}
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Спасибо большое. Расшифруйте пожалуйста,очень буду благодарен это:
Код:
TEdit *edit;
for(int i=0;i<ComponentCount;i++)
if(edit=dynamic_cast<TEdit*>(Components[i]))
prikolist вне форума Ответить с цитированием
Старый 11.04.2009, 22:20   #4
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

Код:
TEdit *edit;  //edit - указатель на TEdit
Код:
for(int i=0;i<ComponentCount;i++)
перебираем все компоненты на форме.
ComponentCount - общее количество компонентов
Код:
if(edit=dynamic_cast<TEdit*>(Components[i]))
пытаемся преобразовать текущий компонент (Components[i]) в TEdit.
Если это удалось, то это действительно TEdit и можно продолжать с ним работать
иначе преобразование закончится неудачей
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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

Спасибо. Скажите, существуют ли какие-то функции,это я на будущее спрашиваю,чтоб например перебирать только определённые компоненты.
Например,как вы используете ComponentCount - перебор всех элементов на формее,а я,например хочу перебрать только Memo.
Ещё,подскажите пож.что делает эта константа dynamic_cast.
Зараннее благодарю.
prikolist вне форума Ответить с цитированием
Старый 11.04.2009, 22:44   #6
Sazary
В тени
Старожил
 
Аватар для Sazary
 
Регистрация: 19.12.2008
Сообщений: 5,788
По умолчанию

dynamic_cast пытается выполнить приведение к указанному типу.
http://ru.wikipedia.org/wiki/Динамич...ия_типа_данных
Цитата:
Например,как вы используете ComponentCount - перебор всех элементов на формее,а я,например хочу перебрать только Memo.
Насколько я знаю, вроде, нельзя. Надо перебирать все компоненты и отлавливать нужные.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем.

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


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод ошибки при вводе цифры 1..5 в поле Edit prikolist Общие вопросы C/C++ 2 16.03.2009 00:22
TurboC - баг при вводе строки с клавиатуры FW-TOT Общие вопросы C/C++ 4 21.11.2008 01:39
отключение проверки при вводе engeneer Паскаль, Turbo Pascal, PascalABC.NET 21 23.07.2008 19:45
преобразование массивов при вводе данных greenkat Microsoft Office Excel 4 28.02.2008 19:21
Проблемка при вводе чисел at10 Microsoft Office Excel 4 02.12.2007 22:22