Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Переменная Null в AutoIt (http://forum.oszone.net/showthread.php?t=149057)

abb269 27-08-2009 14:37 1204627

Переменная Null в AutoIt
 
Здравствуйте,
Подскажите, пожалуйста, как в AutoIt реализовать объявление нулевой переменной.
Мне нужен эквивалент конструкции VB
Код:

Value = Null
или конструкции Паскаля
Код:

Value := Null
Простое $value="" не катит, равно как и $value=0.

Belfigor 27-08-2009 15:59 1204682

А почему $value=0 то не подходит?

abb269 27-08-2009 16:07 1204683

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

Creat0R 27-08-2009 18:55 1204793

Цитата:

Цитата abb269
как в AutoIt реализовать объявление нулевой переменной »

$NULL = ""

Вот и всё.

abb269 27-08-2009 19:39 1204825

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

Creat0R 27-08-2009 19:45 1204829

Цитата:

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

abb269 27-08-2009 20:00 1204838

Да в том-то и дело, что с примером все не так просто.
Это брокерский интерфейс АльфаДиректа
Вот ссылка 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 1204846

А если пропустить параметр?
Или так: $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 1204862

Спасибо, но...
Впрочем, если вариант $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 1204899

abb269, Поискав по оф. форуму, можно найти много полезной инфы: Null problem with COM

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

Код:

Global Const $NULL = Default
Пробуйте.

abb269 27-08-2009 22:40 1204987

CreatOR, большое спасибо! Но...
Ничего не выходит по всем вариантам.
Ближе всего оказался вот такой способ
Код:

$NULL=ObjCreate("")
COM уже просто выдает: "Ошибка выполнения", а про типы молчит

Creat0R 27-08-2009 22:56 1205007

Цитата:

Цитата abb269
Ничего не выходит по всем вариантам. »

Ещё один вариант:

Код:

Global Const $NULL = _GetNull()

Func _GetNull()
EndFunc

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

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

abb269 27-08-2009 23:21 1205045

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

amel27 28-08-2009 10:49 1205265

abb269, попробуй еще так: "$NULL = .0"


Время: 12:58.

Время: 12:58.
© OSzone.net 2001-