Главная страница
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.47 MB
Время: 0.039 c
2-1392639364
Васька
2014-02-17 16:16
2015.09.10
Открытие формы


11-1259759327
MTsv DN
2009-12-02 16:08
2015.09.10
Разыскивается код...


6-1255352020
minomorf
2009-10-12 16:53
2015.09.10
Как сделать аутификацию после подключения клиента к TServerSocket


8-1236500354
deswan
2009-03-08 11:19
2015.09.10
Graphics32 - навигация по изображению


15-1414960402
dmk
2014-11-02 23:33
2015.09.10
Слетает платформа