Текущий архив: 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.45 MB
Время: 0.033 c