Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / FoxPro, Visual FoxPro Новый топик    Ответить
 Type(variable) = "U"  [new]
I_l_I A M u JI b
Member

Откуда:
Сообщений: 70
Люди, подскажите кто-нибудь, как я могу переменную с типом "U"
(Undefined type of expression) перевести в строкую
Спасибо.
18 авг 03, 18:06    [304718]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Равиль
Member

Откуда: Уфа
Сообщений: 127
Думаю, что никак :)
Потому что, если не отпределяется тип переменной, то что уж говорить о его значении :)

PS А Вы имя переменной в функции TYPE включили в кавычки, типа
TYPE("Var_Name") ?
18 авг 03, 18:18    [304744]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Анатолий Широков
Member

Откуда: Санкт-Петербург
Сообщений: 1319
Вопрос не ясен. На всякий случай, нарушены правила вызова type - требуется строковый аргумент:

if type("m.variable") = "U"
...
endif

а не так как написали вы.
18 авг 03, 18:20    [304753]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
I_l_I A M u JI b
Member

Откуда:
Сообщений: 70
Пусть
VARIABLE = 'number = 12345'
тогда
?type(variable)
покажет U
А как мне эту VARIABLE перевести в строковый тип
18 авг 03, 21:37    [304945]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Анатолий Широков
Member

Откуда: Санкт-Петербург
Сообщений: 1319
Еще раз повторю, что ты неверно вызываешь type - такое впечатление, что ты полностью проигнорировали два ответа.

Ладно, для тех кто в танке:

variable = 'number = 12345' 


Вот, сравни свою строку:
? type(variable) && покажет U 

c
? type("m.variable") && покажет C 


Есть разница? Это ты хотел?
18 авг 03, 22:36    [304973]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
I_l_I A M u JI b
Member

Откуда:
Сообщений: 70
Да, именно это я и хотел.
Но остается вопрос, почему, когда
?Type("m.variable") &&Покажет N
?Type(m.variable) &&Покажет:"Function argument value,type, or couny is invalid"

а когда
?Type("m.variable") &&Покажет С
?Type(m.variable) &&Покажет U
Странно.
18 авг 03, 22:50    [304979]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Анатолий Широков
Member

Откуда: Санкт-Петербург
Сообщений: 1319
Потому что функция type (третий раз повторяю) ожидает на входе строковый аргумент, поэтому когда ты пытаешься скормить ему numeric fox вопит благим матом: караул, убивают ("Function argument value,type, or couny is invalid").

Короче, RTFM TYPE.
19 авг 03, 00:50    [305011]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Aijik
Member

Откуда:
Сообщений: 147
Шамиль, если все вышеперечисленное всё равно вызывает затруднения, тогда юзайте VARTYPE(). В ней кавычки не нужны, но появилась она только в VFP6, если у вас фокс более ранних версий, то тогда только TYPE(). Если верить хэлпу, VARTYPE к тому же и быстрее!
У ф-ции VARTYPE() есть второй параметр, который при передаче в него .T. возвращает реальный тип переменной, значение которой сейчас равно NULL:

oMyForm = CREATEOBJECT("form")


?ISNULL(oMyForm) &&.F.
?TYPE("oMyForm") &&"O"
?VARTYPE(oMyForm) &&"O"

oMyForm.Release() &&Релизим форму. Результат: переменная равна NULL, но тип ее все равно до сих пор "O" (см. Debugger)

?ISNULL(oMyForm) &&.T.
?TYPE("oMyForm") &&"O"
?VARTYPE(oMyForm) &&"X" (так VARTYPE отображает NULL)
?VARTYPE(oMyForm, .T.) &"O"



Есть еще одна тонкость:

* Допустим переменной aaa не существует:

?TYPE("aaa") && "U"
?VARTYPE(aaa) && "U"

?TYPE("5*aaa") && "U"
*но:
?VARTYPE("5*aaa") && Variable 'AAA' is not found


*Другой вариант того же самого

a="Вася"
b=5
?TYPE("a+b") &&"U"
?VARTYPE(a+b) && Operator/operand type mismatch
19 авг 03, 08:48    [305105]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
Aijik
Member

Откуда:
Сообщений: 147
?VARTYPE("5*aaa") && Variable 'AAA' is not found

Сорри, описка, без кавычек конечно же:

?VARTYPE(5*aaa)  && Variable 'AAA' is not found
19 авг 03, 08:56    [305112]     Ответить | Цитировать Сообщить модератору
 Re: Type(variable) = "U"  [new]
ВладимирМ
Member

Откуда: г. Москва
Сообщений: 7864
Функция TYPE() работает как макроподстановка.

Она пытается вычислить значение функции записанной в строковой константе и выдает тип результата этого вычисления.

Повторю еще раз, то что тебе уже многократно говорили: В качестве аргумента для функции TYPE() может быть только и исключительно символьные данные.
19 авг 03, 11:23    [305384]     Ответить | Цитировать Сообщить модератору
Все форумы / FoxPro, Visual FoxPro Ответить