PDA

Показать полную графическую версию : Переменная Null в AutoIt


abb269
27-08-2009, 14:37
Здравствуйте,
Подскажите, пожалуйста, как в AutoIt реализовать объявление нулевой переменной.
Мне нужен эквивалент конструкции VB
Value = Null
или конструкции Паскаля
Value := Null
Простое $value="" не катит, равно как и $value=0.

Belfigor
27-08-2009, 15:59
А почему $value=0 то не подходит?

abb269
27-08-2009, 16:07
Почему не подходит не знаю.
Я пытаюсь работать с СОМ-интерфейсом, в описании которого рекомендуют этот самый Null тип как он определяется в Бейсике и Паскале.
А про AutoIt этот СОМ ничего не знает :(

Creat0R
27-08-2009, 18:55
как в AutoIt реализовать объявление нулевой переменной »

$NULL = ""

Вот и всё.

abb269
27-08-2009, 19:39
Нет, я же говорю, что это не работает. Не считает СОМ-объект это нулевой переменной. Для него это, видимо, пустая строковая переменная.

Creat0R
27-08-2009, 19:45
Не считает СОМ-объект это нулевой переменной
Пример использования COM-объекта в студию.

abb269
27-08-2009, 20:00
Да в том-то и дело, что с примером все не так просто.
Это брокерский интерфейс АльфаДиректа
Вот ссылка http://www.alfadirect.ru/?page=api
А вот что я пытаюсь сделать

$oAD=ObjCreate("ADLite.AlfaDirect")
$NULL=""
$tmp=$oAD.CreateStopOrder("33333-000","FORTS","RTSI-9.09","30/08/09 12:00", _
"","RUR", "B",1,110000,5500,$NULL,5)

Creat0R
27-08-2009, 20:18
А если пропустить параметр?
Или так: $NULL= Chr(0)

Ну или метод с оф. форума:


Global Const $NULL = _GetNull()

Func _GetNull()
Local $oVBS = ObjCreate("ScriptControl")
$oVBS.Language = "VBScript"
Local $NULL = $oVBS.Eval("Nothing")
$oVBS = $NULL
Return $NULL
EndFunc

abb269
27-08-2009, 20:40
Спасибо, но...
Впрочем, если вариант $NULL="" давал такое сообщение об ошибке
Could not convert variant of type (OleStr) into type (Double)
то вариант через _GetNull пишет
Could not convert variant of type (Dispatch) into type (Double)

Creat0R
27-08-2009, 21:19
abb269, Поискав по оф. форуму, можно найти много полезной инфы: Null problem with COM (http://www.autoitscript.com/forum/index.php?showtopic=73551)

Там в конце ссылаются на то, что Default может иногда заменить Null:

Global Const $NULL = Default

Пробуйте.

abb269
27-08-2009, 22:40
CreatOR, большое спасибо! Но...
Ничего не выходит по всем вариантам.
Ближе всего оказался вот такой способ
$NULL=ObjCreate("")
COM уже просто выдает: "Ошибка выполнения", а про типы молчит

Creat0R
27-08-2009, 22:56
Ничего не выходит по всем вариантам. »
Ещё один вариант:

Global Const $NULL = _GetNull()

Func _GetNull()
EndFunc

Идея в том, что функция возвращает 0 если не задан Return, в этом случае оно как раз может вернуть нулевое значение.

P.S
А Default не пробовали без переменной использовать - сразу в качестве параметра?

abb269
27-08-2009, 23:21
CreatOR, еще раз спасибо. И еще раз но...
Все пробовал - результат аналогичен NULL :(

amel27
28-08-2009, 10:49
abb269, попробуй еще так: "$NULL = .0"




© OSzone.net 2001-2012