Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char a;
if(typeid(Edit1->Text)==typeid(a))
{ShowMessage("help!");}
я не получаю никакого результата?может я не правильно сравниваю типы?
Здравствуйте, Аноним, Вы писали:
А> я не получаю никакого результата?может я не правильно сравниваю типы?
возможно, потому, что тип Edit1->Text не является char =) попробуйте сравнить переменные одинаковых типов
Здравствуйте, Аноним, Вы писали:
А>Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи А>void __fastcall TForm1::Button1Click(TObject *Sender) А>{ А>char a; А>if(typeid(Edit1->Text)==typeid(a)) А>{ShowMessage("help!");} А> я не получаю никакого результата?может я не правильно сравниваю типы?
Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.
Здравствуйте, Аноним, Вы писали:
А>Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи А>void __fastcall TForm1::Button1Click(TObject *Sender) А>{ А>char a; А>if(typeid(Edit1->Text)==typeid(a)) А>{ShowMessage("help!");} А> я не получаю никакого результата?может я не правильно сравниваю типы?
взято отсюда http://en.wikipedia.org/wiki/Typeid
It is generally only useful to use typeid on the dereference of a pointer or reference (i.e. typeid(*ptr) or typeid(ref)) to an object of polymorphic class type (a class with at least one virtual function) because these are the only expressions that are associated with run-time type information. The type of any other expression is known at compile time.
Здравствуйте, Аноним, Вы писали:
А>Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи А>void __fastcall TForm1::Button1Click(TObject *Sender) А>{ А>char a; А>if(typeid(Edit1->Text)==typeid(a)) А>{ShowMessage("help!");} А> я не получаю никакого результата?может я не правильно сравниваю типы?
1. Что бы RTTI работало, оно должно быть разрешено в опция компилятора.
2. А вы уверены что вам действительно нужно именно RTTI? Т.е. что переменная Text у вас бывает разных типов...
Здравствуйте, milkpot, Вы писали:
M>Здравствуйте, Аноним, Вы писали:
M>Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.
Причём тут анализ текста и определения типа переменной?
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, milkpot, Вы писали:
M>>Здравствуйте, Аноним, Вы писали:
M>>Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.
_> Причём тут анализ текста и определения типа переменной?
С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.
Здравствуйте, milkpot, Вы писали:
M>С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.
Как вы будете применять PCRE к int или вообще какому-то произвольному объекту?
Напомню, у автора код if(typeid(Edit1->Text)==... ). Т.е. подразумевается что переменная Text может быть любого типа... )
Здравствуйте, alex_public, Вы писали:
_>Здравствуйте, milkpot, Вы писали:
M>>С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.
_>Как вы будете применять PCRE к int или вообще какому-то произвольному объекту?
_>Напомню, у автора код if(typeid(Edit1->Text)==... ). Т.е. подразумевается что переменная Text может быть любого типа... )
Пользователь может ввести в editbox строку символов, которая будет содержать символы, которые будут сопоставлены с шаблоном RE. В строке Text может быть и целое число. На эту тему ссылка. Ещё ссылка.