Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2015.09.10;
Скачать: CL | DM;

Вниз

Как работает функция VarType?   Найти похожие ветки 

 
aXLES1984   (2012-03-06 16:51) [0]

Здравствуйте! Мне необходимо узнать что за данные храниться в переменной
Пишу:
где a – некоторая переменная
Showmessage(VarTypeAsText(VarType(a)));
Система говорить – “Unicode String”

Изменил код на:
Showmessage(VarTypeAsText(VarType("1234")));
Все равно– “Unicode String”.

Какой же там String если стоит число? VarTYPE работает неверно? Или я что-то не так делаю?


 
Anatoly Podgoretsky ©   (2012-03-06 17:09) [1]

> aXLES1984  (06.03.2012 16:51:00)  [0]

Если апострофы, то какое же это число


 
aXLES1984   (2012-03-06 17:36) [2]

Понял НАдо вот  так писать: Showmessage(VarTypeAsText(VarType(1234)));

Но проблема с переменной у меня осталась: есть переменная a типа Variant, вот если я пишу явно a:=234 - то функция Vartype работает нормально, а если я заношу в a - данные, скопированные в буфер обмена, тоже 234, то возврат идет уже UnicodeString, хотя переменная а содержит тоже самое....

Не подскажите как обойти?


 
Anatoly Podgoretsky ©   (2012-03-06 17:49) [3]

> aXLES1984  (06.03.2012 17:36:02)  [2]

Значит а не того типа, раз позволяет вставить из буфера обмена, который
строка


 
Dimka Maslov ©   (2012-03-06 17:50) [4]

В буфере обмена может находиться ТОЛЬКО текст (ну или специфические двоичные данные, дескрипторы и прочая шняга, не про это вопрос). Поэтому, когда мы переменной типа вариант присваиваем содержимое вышеозначенного буфера обмена - там будет строка, но не как не её числовое представление. Обходить это не надо, надо с этим жить. Если уж совсем припёрло, пишем а := Integer(a). НО! Если в а не будет преобразуемой в целое число строки, получим исключение.


 
Avil   (2012-03-06 19:39) [5]

Чтобы по строке определить тип придется помучиться, перебирая варианты преобразования (дата, буль, плавающая точка, целое, если ничего не подошло, то строка). Лучше, конечно, если заранее известно, какой результат будет, и преобразовывать в него.


 
Avil   (2012-03-06 19:44) [6]

Как работает VarType:

function VarType(const V: Variant): TVarType;
begin
 Result := TVarData(V).VType;
end;

Т.е. какой тип был при присвоении, то он и выводит.



Страницы: 1 вся ветка

Текущий архив: 2015.09.10;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.093 c
15-1419531172
Rouse_
2014-12-25 21:12
2015.09.10
Задачка для разминки мозга


15-1414578228
qpash
2014-10-29 14:23
2015.09.10
Скриншот произвольной области


2-1397634920
lewka_s
2014-04-16 11:55
2015.09.10
Список баз данных


15-1421303608
ПЛОВ
2015-01-15 09:33
2015.09.10
Запрос к БД, но данные не нужны :)


15-1418808674
zagayevskiy
2014-12-17 12:31
2015.09.10
Игра для Android