• Познакомьтесь с пентестом веб-приложений на практике в нашем новом бесплатном курсе

    «Анализ защищенности веб-приложений»

    🔥 Записаться бесплатно!

  • CTF с учебными материалами Codeby Games

    Обучение кибербезопасности в игровой форме. Более 200 заданий по Active Directory, OSINT, PWN, Веб, Стеганографии, Реверс-инжинирингу, Форензике и Криптографии. Школа CTF с бесплатными курсами по всем категориям.

Объяснить 2 строки

  • Автор темы prikolist
  • Дата начала
P

prikolist

Здравствуйте программисты! Объясните пожалуйста вот эти 2 строки,что они делают:
Меня интересует (FindChildControl("Edit"+IntToStr(i)));

Код:
TEdit *b = dynamic_cast<TEdit*>(FindChildControl("Edit"+IntToStr(i)));
if(b->Text.Length()==0)

из этого кода:

Код:
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;
}
}
 
E

European

Находит на форме дочерние Edit-ы по имени и возвращает указатель на них
 
E

etc

за такой год - ецих с гвоздями, пожизненный.
 
P

prikolist

Я напишу, как я понял,если что не так,поправьте пожалуйста. Вначале указателю b, который указывает на класс TEdit(только не знаю зачем это делать),ему присваивается операцией приведения типов dynamic_cast какой-то класс-указатель на метод find - искать, child - что-то дочернее(тоже не знаю зачем),какой-то контрол(Не знаю что такое Control), а выражение
Код:
"Edit"+IntToStr(i))
, наверное ищет в каком-то контроле,не знаю что за контрол по-моему выражение "Edit" все эдиты, с первого по пятый.
Если,я что не так выразился,поправьте меня пожалуйста.Заранне благодарен за ответ.
 
E

European

Код:
TEdit *b = dynamic_cast<TEdit*>(FindChildControl("Edit"+IntToStr(i)));
Данный код эквивалентен следующему:
Код:
AnsiString NumStr = IntToStr(i);
AnsiString EditName = "Edit" + NumStr;
TControl* pEditObject = FindChildControl(EditName);
TEdit* b = dynamic_cast<TEdit*>(pEditObject );
Какая из этих строк вам не понятна?
 
P

prikolist

Мне не ясно в моём коде,зачем присваивать ......к TEdit *b =,выражение

Код:
dynamic_cast<TEdit*>(FindChildControl("Edit"+IntToStr(i)));
что даёт это присвоение указателю,извините,если может мои вопросы покажутся глупыми.

В вашем коде,не ясно pEditObject - это что такое?
И вот эта строка

Код:
TControl* pEditObject = FindChildControl(EditName);(Желательно полностью расшифровать,чтоб нормально понять)

И последний вопрос. В этом выражении FindChildControl("Edit"+IntToStr(i)))

Правильно ли я понял,Что Edit в кавычках,это поиск всех Эдитов, на форме,а +IntToStr(i)) - что даёт ?

ответьте пожалуйста на все вопросы,только подробнее,буду очень благодарен за ответ.
 
E

European

Откройте хелп
В вашем коде,не ясно pEditObject - это что такое?
Указатель на найденный объект компонента Edit
IntToStr(i)) - что даёт
Преобразует целое число в строку
В цикле будут имена эдитов от Edit1 до Edit6
Ищет компонет на форме по имени, т.е. поиск эдита
что даёт это присвоение указателю
указатель b - это указатель на найденный эдит, с которым вы дальше работаете
только подробнее
Подробнее в хелпе
 
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!