Главная страница
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.037 c
15-1421679392
Дмитрий С
2015-01-19 17:56
2015.09.10
Автоматическое завершение дочернего процесса


2-1390997184
JohnKorsh
2014-01-29 16:06
2015.09.10
Удаление файла средствами Delphi


15-1412713803
Юрий
2014-10-08 00:30
2015.09.10
С днем рождения ! 8 октября 2014 среда


15-1412022602
Юрий
2014-09-30 00:30
2015.09.10
С днем рождения ! 30 сентября 2014 вторник


15-1420839004
Юрий
2015-01-10 00:30
2015.09.10
С днем рождения ! 10 января 2015 суббота