Вопрос от новичка, Как вывести в окно остаток баланс счета?
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 09:50:55
Доброго времени суток всем форумчанам. Совсем недавно начал изучать 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
Подставляю свой код клиента, а дальше не пойму,какие данные подставлять? Спасибо заранее всем ответившим.
Пользователь
Сообщений: Регистрация: 03.02.2021
19.05.2021 10:13:20
Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1, getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits", i )
Пользователь
Сообщений: Регистрация: 03.02.2021
19.05.2021 10:18:20
Пардон, в этих таблицах индексы начинаются с нуля.
Код
for i = 0, getNumberOf ( "money_limits" ) - 1 do
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 10:39:28
Цитата
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через getItem.
Код
for i = 1 , getNumberOf ( "money_limits" ) do
money = getItem ( "money_limits" , i )
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 10:42:27
Случайно ваше сообщение опубликовал! Вы видимо давно на нем программируете,поэтому для вас этот язык уже как семечки! А для меня этот язык пока темный лес. Я до этого программировал на mql4-5,там мне было более все понятно. И документация по Lua очень скудная. Вам большое спасибо за ответ,сейчас попробую по вашему примеру.
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 10:53:42
Цитата
Артем написал: Язык прекрасный на самом деле: можно писать как на Си, можно писать как на Паскале, можно писать как Питоне, можно писать как на Джаваскрипте. Встроенные хештаблицы и возможность ставить значения пустых полей по умолчанию через другую таблицу либо вообще функцию. Бинарные строки и отсутствие борьбы с нуль-терминатором, и такие сверхбыстрые строковые сравнения что можно вместо числовых констант строковые использовать. Сборщик мусора быстрый и хирургически точно управляемый. Можно загружать бинарные библиотеки написанные на С++, а через специализированые инструменты - даже при отсутствии у библиотек Луа интерфейса.
Нули у вас потому что неверные параметры заданы. По-хорошему должно ошибку выбрасывать, но в Арке у людей туго с идиоматичным кодом на Луа, так что вот такие перлы повсюду. Советую вам обращаться к табличным данным напрямую через 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
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 11:01:48
Цитата
Артем написал: , ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
for k, v in pairs ( money ) message ( string.format ( "%s=%s" , k, v ) ) end
Вот как раз для меня пока вообще не понятно, как эти данные выводятся,как их доставать по мере надобности и т.д. Сейчас пробую разбираться с помощью ваших подсказок.
Пользователь
Сообщений: Регистрация: 03.02.2021
19.05.2021 11:06:16
Значения полей можно получать квадртаными скобками, либо если ключ представляет собой валидное имя то через точку.
написал: , ну да, результат выдается таблицей. Из таблицы надо значения выдёргивать по мере надобности. Чтобы просто всё подряд высыпать можно вот такой например код использовать.
Код
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 Так работает. Теперь попробую сам докумекать,как вывести все эти данные в окно построчно,чтоб увидеть всю эту таблицу. Вам спасибо большое за подсказки. Буду к вам обращаться по мере надобности.
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 11:12:59
Цитата
Артем написал: От себя порекомендую прочитать онлайн-книгу Programming In Lua, и инструкцию QUIK Интерпретатор Языка Lua.
Обязательно прочту,спасибо!!
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
19.05.2021 11:59:00
Цитата
Maksimus написал: Я до этого программировал на mql4-5,там мне было более все понятно.
Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.
Цитата
Maksimus написал: И документация по Lua очень скудная.
Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь.
Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Пользователь
Сообщений: Регистрация: 03.02.2021
19.05.2021 12:30:38
Maksimus, можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Пользователь
Сообщений: Регистрация: 25.09.2020
19.05.2021 14:01:18
Maksimus, Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
написал: Я до этого программировал на mql4-5,там мне было более все понятно.
Мне просто любопытно: а вы также наугад составляли буквы в программах mql ? вот просто любопытно.
Цитата
написал: И документация по Lua очень скудная.
Приведу тут тоже ссылку, потому как найти её на этой сайте в самом деле крайне затруднительно; я просто помню по каким словам ее гуглить, просто так фик найдёшь.
Внизу страницы "Документация по языку LUA в QUIK и примеры.zip"
Любопытно? Мозги включи "уважаемый",и сам себе ответь!!! А то ты "гений" с первой секунды грааль написал. Если тебе нечего написать умного,то проходи тему стороной! Без тебя здесь много нормальных людей. Тем кому не любопытно.
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 15:12:12
Цитата
Владимир написал: , Язык, конечно, полный отстой, но написать рабочую программу можно и на нём. Главное, на мой взгляд, избегать здешних глюков (вплоть до подвешивания Квика), иногда очень глубоко сидящих и редко проявляющихся, а потому пользоваться таблицами Квика и/или прерываниями лучше только в случае крайней необходимости. Я, например, таблицей "Лимиты по денежным средствам" не пользуюсь вообще (как, впрочем, и всеми остальными, кроме Orders, да и та привлекается только в "экзотических" случаях). Вот "создать таблицу и туда эти данные затолкать" - разумное предложение, только не "графическую", а свою Lua-таблицу, держать и обрабатывать данные именно там (в "графической" собственный набор глюков имеется - в частности, уже указанная необходимость соблюдения порядка вызова команд, с непривычки повергающая в шок).
Так вот и я о том, что пока для меня этот язык темный лес. Ну будем разбираться.))
Пользователь
Сообщений: Регистрация: 03.02.2021
19.05.2021 15:29:25
Maksimus, в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 15:49:32
Цитата
Артем написал: , в плане программирования Луа сходен с Си. Разница состоит главным образом в отсутствии строгой типизации - любая переменная может иметь любое значение. Таким образом можно довольно легко делать например именованные структуры данных просто записав произвольные величины в произвольные ячейки массива, деревья данных просто записывая другой массив внутрь имеющегося массива, или делать ООП объекты просто навесив функций на массив. Всё это осуществимо и в Си, но довольно муторно из-а строгой типизации. Еще конечно память тут автоматическая, но это в целом эквивалентно просто использованию статической памяти в Си, с поправкой на то что можно локальные объекты передавать наружу из функций.
Ну это понятно,когда понимаешь. А я еще не пойму как тут все работает.
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 16:03:00
Цитата
Артем написал: , можете собственно создать графическую таблицу и туда эти данные затолкать. Тут одна особенность правда есть - сначала надо создать таблицу и добавить колонки, потом создать окно, и уже потом добавлять строки. Иначе не работает.
Вот как раз сейчас все это пробую сделать,и пока не получается
Пользователь
Сообщений: Регистрация: 25.09.2020
19.05.2021 16:10:49
Maksimus, Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Насчёт таблицы: вот здесь это обсуждалось:
Пользователь
Сообщений: Регистрация: 23.10.2020
19.05.2021 16:23:10
Цитата
Владимир написал: , Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
написал: , Lua - это просто антипод C! Близко ничего похожего! Гениальный язык и бездарная поделка с этой долбаной "динамической типизацией". Один goto чего стоит! В Си это обычный JMP (в отличие от ассемблера, без возможности межпрограммного перехода), а здесь это кастрированное убожество, нафиг никому не нужное. Про сборщик мусора я ваще молчу. И вершина идиотизма: тип integer вообще уничтожен!
Насчёт таблицы: вот здесь это обсуждалось:
Спасибо Владимир,обязательно сейчас прочту
Спасибо еще раз,очень полезная тема! Сейчас поглубже попробую разобраться!
Пользователь
Сообщений: Регистрация: 02.02.2015
миру мир!
20.05.2021 21:08:17
Цитата
Maksimus написал: Если тебе нечего написать умного,то проходи тему стороной!
Чета я забыл, что getMoney возвращает таблицу. Не в строчку выступил, извиняюсь. ;)