![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как работает функция VarType?
aXLES1984 © (2012-03-06 16:51:00)Здравствуйте! Мне необходимо узнать что за данные храниться в переменной
Пишу:
где a – некоторая переменная
Showmessage(VarTypeAsText(VarType(a)));
Система говорить – “Unicode String”
Изменил код на:
Showmessage(VarTypeAsText(VarType('1234')));
Все равно– “Unicode String”.
Какой же там String если стоит число? VarTYPE работает неверно? Или я что-то не так делаю?
Avil (2012-03-06 19:44:00) [1]Как работает VarType:
function VarType(const V: Variant): TVarType;
begin
Result := TVarData(V).VType;
end;
Т.е. какой тип был при присвоении, то он и выводит.
Avil (2012-03-06 19:39:00) [2]Чтобы по строке определить тип придется помучиться, перебирая варианты преобразования (дата, буль, плавающая точка, целое, если ничего не подошло, то строка). Лучше, конечно, если заранее известно, какой результат будет, и преобразовывать в него.
Dimka Maslov (2012-03-06 17:50:00) [3]В буфере обмена может находиться ТОЛЬКО текст (ну или специфические двоичные данные, дескрипторы и прочая шняга, не про это вопрос). Поэтому, когда мы переменной типа вариант присваиваем содержимое вышеозначенного буфера обмена - там будет строка, но не как не её числовое представление. Обходить это не надо, надо с этим жить. Если уж совсем припёрло, пишем а := Integer(a). НО! Если в а не будет преобразуемой в целое число строки, получим исключение.
Anatoly Podgoretsky (2012-03-06 17:49:00) [4]> aXLES1984 (06.03.2012 17:36:02) [2]
Значит а не того типа, раз позволяет вставить из буфера обмена, который
строка
aXLES1984 (2012-03-06 17:36:00) [5]Понял НАдо вот так писать: Showmessage(VarTypeAsText(VarType(1234)));
Но проблема с переменной у меня осталась: есть переменная a типа Variant, вот если я пишу явно a:=234 - то функция Vartype работает нормально, а если я заношу в a - данные, скопированные в буфер обмена, тоже 234, то возврат идет уже UnicodeString, хотя переменная а содержит тоже самое....
Не подскажите как обойти?
Anatoly Podgoretsky (2012-03-06 17:09:00) [6]> aXLES1984 (06.03.2012 16:51:00) [0]
Если апострофы, то какое же это число