Доброго времени суток всем форумчанам. Совсем недавно начал изучать Lua, и вот пытаюсь разобраться с этим языком (честно сказать язык вообще не радует)... Как вывести в окно остаток баланс счета? Пытаюсь запустить скрипт из мануала,но он мне выдает одни нули. Помогите разобраться в чем причина.
Код
-- Пример использования функции getMoney
function main()
-- Параметры для запроса берутся из таблицы "Лимиты по дененым средствам"
-- client_code = "Код клиента"
-- firmid = "Фирма"
-- tag = "Группа"
-- currcode = "Валюта"
local money = getMoney("11252", "MB1000100000", "RTOD", "SUR")
message("money_open_limit: " .. tostring(money.money_open_limit))
message("money_limit_locked_nonmarginal_value: " .. tostring(money.money_limit_locked_nonmarginal_value))
message("money_limit_locked: " .. tostring(money.money_limit_locked))
message("money_open_balance: " .. tostring(money.money_open_balance))
message("money_current_limit: " .. tostring(money.money_current_limit))
message("money_current_balance: " .. tostring(money.money_current_balance))
message("money_limit_available: " .. tostring(money.money_limit_available))
end
Подставляю свой код клиента, а дальше не пойму,какие данные подставлять? Спасибо заранее всем ответившим.
Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1, getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits", i )
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1 , getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits" , i )
Случайно ваше сообщение опубликовал! Вы видимо давно на нем программируете,поэтому для вас этот язык уже как семечки! А для меня этот язык пока темный лес. Я до этого программировал на mql4-5,там мне было более все понятно. И документация по Lua очень скудная. Вам большое спасибо за ответ,сейчас попробую по вашему примеру.
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1 , getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits" , i )
Maksimus, ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s=%s", k, v ) ) end
Артем написал: Maksimus, ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s=%s" , k, v ) ) end
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
Артем написал: Maksimus , ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s = %s" , k, v ) ) end
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
Выдавало ошибку,пока в цикле не добавил do после (money) for k, v in pairs ( money ) do message ( string.format ( "%s=%s" , k, v ) ) end Так работает. Теперь попробую сам докумекать,как вывести все эти данные в окно построчно,чтоб увидеть всю эту таблицу. Вам спасибо большое за подсказки. Буду к вам обращаться по мере надобности.
Maksimus написал: Я до этого программировал на mql4-5,там мне было более все понятно.
Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.
Цитата
Maksimus написал: И документация по Lua очень скудная.
Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь. https://arqatech.com/ru/support/files/ Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
Maksimus написал: Я до этого программировал на mql4-5,там мне было более все понятно.
Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.
Цитата
Maksimus написал: И документация по Lua очень скудная.
Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь. https://arqatech.com/ru/support/files/ Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Любопытно? Мозги включи "уважаемый",и сам себе ответь!!! А то ты "гений" с первой секунды грааль написал. Если тебе нечего написать умного,то проходи тему стороной! Без тебя здесь много нормальных людей. Тем кому не любопытно.
Владимир написал: Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
Так вот и я о том, что пока для меня этот язык темный лес. Ну будем разбираться.))
Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Артем написал: Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Ну это понятно,когда понимаешь. А я еще не пойму как тут все работает.
Артем написал: Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Вот как раз сейчас все это пробую сделать,и пока не получается
Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Владимир написал: Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Владимир написал: Maksimus , Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!