typeid-как это работает
От: Аноним  
Дата: 03.10.11 19:49
Оценка: :)
Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи
void __fastcall TForm1::Button1Click(TObject *Sender)
{
char a;
if(typeid(Edit1->Text)==typeid(a))
{ShowMessage("help!");}
я не получаю никакого результата?может я не правильно сравниваю типы?
Re: typeid-как это работает
От: uzhas Ниоткуда  
Дата: 03.10.11 19:54
Оценка:
Здравствуйте, Аноним, Вы писали:

А> я не получаю никакого результата?может я не правильно сравниваю типы?

возможно, потому, что тип Edit1->Text не является char =) попробуйте сравнить переменные одинаковых типов
Re: typeid-как это работает
От: milkpot Россия  
Дата: 04.10.11 08:53
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи

А>void __fastcall TForm1::Button1Click(TObject *Sender)
А>{
А>char a;
А>if(typeid(Edit1->Text)==typeid(a))
А>{ShowMessage("help!");}
А> я не получаю никакого результата?может я не правильно сравниваю типы?

Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.
Re: typeid-как это работает
От: wisp Украина  
Дата: 04.10.11 11:42
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.Я встречала,что 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.
Re: typeid-как это работает
От: alex_public  
Дата: 06.10.11 18:21
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Добрый день.Я встречала,что typeid используется для определения типа в том случае,когда у нас есть классы.А если мне нужно получить безовый тип,например int,char и т.д.я могу использовать данную функцию?Почему при записи

А>void __fastcall TForm1::Button1Click(TObject *Sender)
А>{
А>char a;
А>if(typeid(Edit1->Text)==typeid(a))
А>{ShowMessage("help!");}
А> я не получаю никакого результата?может я не правильно сравниваю типы?

1. Что бы RTTI работало, оно должно быть разрешено в опция компилятора.
2. А вы уверены что вам действительно нужно именно RTTI? Т.е. что переменная Text у вас бывает разных типов...
Re[2]: typeid-как это работает
От: alex_public  
Дата: 06.10.11 18:22
Оценка:
Здравствуйте, milkpot, Вы писали:

M>Здравствуйте, Аноним, Вы писали:


M>Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.


Причём тут анализ текста и определения типа переменной?
Re[3]: typeid-как это работает
От: milkpot Россия  
Дата: 06.10.11 18:29
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, milkpot, Вы писали:


M>>Здравствуйте, Аноним, Вы писали:


M>>Может лучше использовать isalpha из MSDN или pcre использовать со стандартным шаблоном.


_> Причём тут анализ текста и определения типа переменной?


С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.
Re[4]: typeid-как это работает
От: alex_public  
Дата: 06.10.11 19:51
Оценка:
Здравствуйте, milkpot, Вы писали:

M>С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.


Как вы будете применять PCRE к int или вообще какому-то произвольному объекту?

Напомню, у автора код if(typeid(Edit1->Text)==... ). Т.е. подразумевается что переменная Text может быть любого типа... )
Re[5]: typeid-как это работает
От: milkpot Россия  
Дата: 07.10.11 10:41
Оценка:
Здравствуйте, alex_public, Вы писали:

_>Здравствуйте, milkpot, Вы писали:


M>>С помощью PCRE можно определить, что ввел в editbox кокретный пользователь, а главное, что он ввел то, что надо. Мне это не кажется грамоздко.


_>Как вы будете применять PCRE к int или вообще какому-то произвольному объекту?


_>Напомню, у автора код if(typeid(Edit1->Text)==... ). Т.е. подразумевается что переменная Text может быть любого типа... )


Пользователь может ввести в editbox строку символов, которая будет содержать символы, которые будут сопоставлены с шаблоном RE. В строке Text может быть и целое число. На эту тему ссылка. Ещё ссылка.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.