Что нового

Объявление переменных через If $var = a then $var1 = b

OrangeSound

Новичок
Сообщения
28
Репутация
0
Здраствуйте! Объявление переменных через If $var = a then $var1 = b выдает ошибку
Код:
Variable used without being declared

Есть ли другие способы обьявления переменных?
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
OrangeSound
переменные объявляешь вначале кода - всего скрипта или функции. потом уже меняешь им значения. ты же хочешь создать переменную при проверке условия, если я правильно понял.
Читай справку
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
joiner сказал(а):
OrangeSound
переменные объявляешь вначале кода - всего скрипта или функции. потом уже меняешь им значения. ты же хочешь создать переменную при проверке условия, если я правильно понял.
Читай справку

Обьявил переменную
Код:
$metalinfotype = 1

Задал ей значение
Код:
Assign("metalinfotype", "s")[autoit]
Попытка через If then поменять переменную
If $prod = "Покупка" then Assign("metalinfotype", "s")
If $prod = "Продажа" then Assign("metalinfotype" , "b")
If $prod = "Другое" then Assign("metalinfotype", "o")[/autoit]

На выходе имеем только $metalinfotype = "s", от изменения переменной $prod ничего не меняется. Подскажите пожалуйста где ошибка? :scratch:

Забыл добавить, что переменная $prod берется из ini файла, может быть в этом проблема?
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
При сравнении через = строка считается нулем.
Чтобы действительно сравнивать строки используйте ==
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
C2H5OH [?]
При сравнении через = строка считается нулем.
Неа.
Код:
ConsoleWrite( 123 = "123" & @CRLF)


Насколько я помню - просто идет сравнение без учета регистра.
 

Medic84

Омега
Команда форума
Администратор
Сообщения
1,590
Репутация
341
C2H5OH [?]
При сравнении через = строка считается нулем.Чтобы действительно сравнивать строки используйте ==
Нет. Сравнение строк с одним знаком =, обычное сравнение без учета регистра.
Код:
"СтРоКа" = "строка"
это выражение будет иметь значение True
А вот если:
Код:
"СтРоКа" == "строка"

тогда уже выражение имеет значение False
 

C2H5OH

AutoIT Гуру
Сообщения
1,473
Репутация
333
Я удивлен, конечно.
Ну, хорошо, пробел в моих знаниях закрыли.
А что с ТС тогда ?
OrangeSound, показывай код как ты из ini-файла читаешь.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
OrangeSound [?]
На выходе имеем только $metalinfotype = "s"
Код:
Local $prod = "Покупка"
If $prod = "Покупка" Then Assign("metalinfotype", "s")
MsgBox(0, @ScriptName, Eval("metalinfotype"))

Local $prod = "Продажа"
If $prod = "Продажа" Then Assign("metalinfotype" , "b")
MsgBox(0, @ScriptName, Eval("metalinfotype"))

Local $prod = "Другое"
If $prod = "Другое" Then Assign("metalinfotype", "o")
MsgBox(0, @ScriptName, Eval("metalinfotype"))
 
Автор
O

OrangeSound

Новичок
Сообщения
28
Репутация
0
C2H5OH сказал(а):
Я удивлен, конечно.
Ну, хорошо, пробел в моих знаниях закрыли.
А что с ТС тогда ?
OrangeSound, показывай код как ты из ini-файла читаешь.

Код:
$prod = IniRead($obv, "prod", "prod", "")



Добавлено:
Сообщение автоматически объединено:

Garrett сказал(а):
OrangeSound [?]
На выходе имеем только $metalinfotype = "s"
Код:
Local $prod = "Покупка"
If $prod = "Покупка" Then Assign("metalinfotype", "s")
MsgBox(0, @ScriptName, Eval("metalinfotype"))

Local $prod = "Продажа"
If $prod = "Продажа" Then Assign("metalinfotype" , "b")
MsgBox(0, @ScriptName, Eval("metalinfotype"))

Local $prod = "Другое"
If $prod = "Другое" Then Assign("metalinfotype", "o")
MsgBox(0, @ScriptName, Eval("metalinfotype"))

Суть в том, что переменную $prod мы берем из ini Файла, а не задаем изначально, или нам надо задать все возможные варианты переменной изначально?


Добавлено:
Сообщение автоматически объединено:

Medic84 сказал(а):
C2H5OH [?]
При сравнении через = строка считается нулем.Чтобы действительно сравнивать строки используйте ==
Нет. Сравнение строк с одним знаком =, обычное сравнение без учета регистра.
Код:
"СтРоКа" = "строка"
это выражение будет иметь значение True
А вот если:
Код:
"СтРоКа" == "строка"

тогда уже выражение имеет значение False

Не работает, вот код
Код:
$metalinfotype = "p"
$prod = IniRead($obv, "prod", "prod", "")
If $prod == "Покупка" then $metalinfotype = "s"
If $prod == "Продажа" then $metalinfotype = "b"
If $prod == "Другое" then $metalinfotype = "o"
_IEFormElementRadioSelect($oForm, $metalinfotype, "category")


Я овощ, Все работает через
Код:
"СтРоКа" == "строка"
Выставлял не ту переменную! Будьте внимательны! Спасибо огромное за помощь, всем добра и огромного запаса кармы! :IL_AutoIt_1:
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
OrangeSound [?]
Суть в том, что переменную $prod мы берем из ini Файла, а не задаем изначально

Код:
$metalinfotype = "p"
MsgBox(0, @ScriptName, $metalinfotype)
IniWrite("prod.ini", "prod", "prod", "Другое")

$prod = IniRead("prod.ini", "prod", "prod", "")
If $prod == "Покупка" then $metalinfotype = "s"
If $prod == "Продажа" then $metalinfotype = "b"
If $prod == "Другое" then $metalinfotype = "o"

MsgBox(0, @ScriptName, $metalinfotype)
IniWrite("prod.ini", "prod", "prod", "Покупка")

$prod = IniRead("prod.ini", "prod", "prod", "")
If $prod == "Покупка" then $metalinfotype = "s"
If $prod == "Продажа" then $metalinfotype = "b"
If $prod == "Другое" then $metalinfotype = "o"

MsgBox(0, @ScriptName, $metalinfotype)
IniWrite("prod.ini", "prod", "prod", "Продажа")

$prod = IniRead("prod.ini", "prod", "prod", "")
If $prod == "Покупка" then $metalinfotype = "s"
If $prod == "Продажа" then $metalinfotype = "b"
If $prod == "Другое" then $metalinfotype = "o"

MsgBox(0, @ScriptName, $metalinfotype)

P.S. Суть в том, что от природы человеку даны мозги и его задача научиться ими пользоваться!
 
Верх