getInfoParam is not a string?

Страницы: 1 2 След.
RSS
getInfoParam is not a string?
 
Не могу понять, у меня почему то getInfoParam не разбирается как стринг, это глюк или только у меня такая проблема

message( string.gsub(getInfoParam('SERVERTIME'),':',''),100)        

message(string.sub(getInfoParam('SERVERTIME'),0,2)..string.sub(getInfoParam('SERVERTIME'),4,5)..string.sub(getInfoParam('SERVERTIME'),7,9),100)

все два возвращают 23:22:21
 
Кто нибудь может объяснить? У меня вообще не как не отрабатывают функции string возвращает только исходную переменную!
 
"А если написать просто

Код
message("23:22:21",':',''))

Кстати, вы вторым параметром message передаёте 100, хорошо ли это?
 
swerg :)
 
Разработчики могут прокомментировать ситуацию, потому что если делаем вызов функции без getInfoParam - message(string.gsub('23:22:21',':',''),100), она работает.
 
Добрый день.
Соединение с сервером установлено при этом?
 
да, сам getInfoParam('SERVERTIME') - время правильно показывает.
 
Вот так проверьте:

Код
xxx = getInfoParam('SERVERTIME')
message('Server time = ' .. xxx)
 
 
Указанная проблема у нас не воспроизводится.
 
Хэ, прикольно. И что это может быть за ерундой %(
 
Цитата
Роман пишет:
Хэ, прикольно. И что это может быть за ерундой %(
Какая версия терминала у Вас используется?
Вы проверяли именно на следующей строке
message( string.gsub(getInfoParam('SERVERTIME'),':',''),100)
Или в коде есть другие? если естьпопробуйте в скрипте оставить только одну строку, и не запускайте другие скрипты если они есть.
Также, следует проверить а тот ли скрипт Вы запускаете, возможно просто перепутали скрипты местами.
 
Обновил ещё раз, заработало, надеюсь в дальнейшем проблем не будет.
 
В общем сейчас ночь и она опять 25:10:00 - это наверное зависит в какое время запрашиваешь инфу, тогда и глючит.
 
Или утечка памяти где-то :(
 
И вот ещё tonumber(string.gsub(getInfoParam('SERVERTIME'),':','')) > 100  в промежутке подключения и загрузки таблиц выводит:  attempt to compare number with nil, хотя упёрто не видит tonumber()
 
версия 6.17.1.17
 
Роман, те симптомы которые Вы описываете, возникают при отсутствии соединения с сервером.
Вы точно уверены что соединение есть? Это можно определить по индикатору в нижнем правом углу окна терминала, в подключенном состоянии он зеленый.
 
25:10:00 - отражает когда соединение есть, не зависимо от времени соединения, tonumber() выдающий ошибку attempt to compare number with nil - да в основном падает в начале соединения (скорее кажется когда таблицы закачает), здесь ещё не понятно почему tonumber()  - nil отдаёт, причём даже ставлю tonumber(Time)~=nil and tonumberi(Time)>0 всеравно выводит attempt to compare number with nil
 
Роман,
В общем то что у Вас происходит не поддается какому-либо объяснению.
В виду чего дальнейший анализ не представляется возможным.
Присылайте скриншоты, на подобии того что я выложил, чтобы было видно код, терминал, и результат работы этого кода.
 
Цитата
Роман пишет:
tonumber(Time)~=nil and tonumberi(Time)>0
в строке ошибка, исправьте

Код
if tonumber(Time)~=nil and tonumber(Time)>0


И чему равна переменная Time??
 
У него type(Time) равен string но на tonumber(Time)>0 - attempt to compare number with nil, ну вот какой из tonumber() nil?

вот пример одного из кодов который валится на тайме:

Код
function TTime()  

    local Time = Stime()
    
--message('('..tostring(Time)..'
 > 95959 and '..tostring(Time)..' < 135955) or ('.. 
tostring(Time)..' > 140259 and '..tostring(Time)..' < 184400) and 
'..tostring(see_td("LOC_DATE"))..' ==  
'..tostring(see_td("TRADE_DATE")),100000)        
        if (Time ~= nil and  (Time 
> 95959 and Time < 135955) or  (Time > 140259 and Time < 
184400)) then - attempt to compare number with nil на Time 
> 95959 
                return "T"
        end
    
    return "-"  
    
end

function Stime()

    local Ftimes  = 0
        Ftimes = getInfoParam("SERVERTIME") -- ночью показывает 25:12:45
        return tonumber(string.sub(Ftimes,0,2)..string.sub(Ftimes,4,5)..string.sub(Ftimes,7,9))
        --return tonumber(string.gsub(getInfoParam('SERVERTIME'),':',''))
end 
 
Добрый день.

Код
str = "23:23:23"
--[[
if tonumber(str:gsub(':','')) > 100 then -- так не работает - " attempt to compare number with nil "
   print('111')
end
--]]
if tonumber((str:gsub(':',''))) > 100 then -- так работает
   print('111')
end
 
 
З.ы. заплатками я то же проблему решаю, но здесь галюкан который и скрипт вырубить может - а потом мне ушами хлопать, куда деньжищи пропали.
 
Кстати, к примеру на отпарсенный getInfoParam("TRADEDATE") - не каких жалоб.
 
Это не заплатки. перечитайте еще раз внимательно документацию по string.gsub и tonumber

string.gsub('23:23:23', ':', '') возвращает два значения: '232323' и 2, которые передаются в tonumber
В свою очередь, tonumber пытается перевести '232323' в число по основанию 2 и возвращает nil
 
Michael Bulychev, а вот это я не заметил: '232323' и 2. Но все равно с.м. вариант функции которую я выше выложил там используется  
string.sub(Ftimes,0,2)..string.sub(Ftimes,4,5)..string.sub(Ftimes,7,9) и он все равно муть какую-то возвращает, второго параметра там ну не как не откуда взятся.

if tonumber((string.gsub(getInfoParam('SERVERTIME'),':','')) or '0') > 100 then - так более подходяще.
 
Цитата
Роман пишет:
Michael Bulychev , а вот это я не заметил: '232323' и 2. Но все равно с.м. вариант функции которую я выше выложил там используется
string.sub(Ftimes,0,2)..string.sub(Ftimes,4,5)..string.sub(Ftimes,7,9) и он все равно муть какую-то возвращает, второго параметра там ну не как не откуда взятся.

if tonumber((string.gsub(getInfoParam('SERVERTIME'),':','')) or '0') > 100 then - так более подходяще.
Проблема изучается. Постараемся в ближайшее время дать ответ.
 
Заплатки я в принципе поставил. Но вот эта проблема с влитом в процессе загрузки таблиц до сех пор смущает. Хотя я думал что и tonumber не может выдавать nil - а оказывается может :(
 
Цитата
Роман пишет:
проблема с влитом
О какой проблеме Вы говорите?
 
Sergey Gorokhov - спасибо, да посмотрите пожалуйста, с датой торгов таких проблем нет.
 
когда она не только nil возвращает, но и attempt to compare number with nil на Time выдаёт
 
Цитата
Роман пишет:
когда она не только nil возвращает, но и attempt to compare number with nil на Time выдаёт
так мы же уже решили эту проблему, или нет?
 
tonumber((string.gsub(getInfoParam('SERVERTIME'),':','')) or '0') все равно равен nil при закачки таблиц
tonumber((string.gsub(getInfoParam('SERVERTIME'),':','')) or '0') > 0 attempt to compare number with nil

в общем я поставил так
Stime() ~= nil робот продолжает работа.
 
Цитата
Роман пишет:

в общем я поставил так
Stime() ~= nil робот продолжает работа.

Можно так написать:

Код
return tonumber((string.gsub(getInfoParam('SERVERTIME')),':','')) or -1
 
ну или так, только скобку подправить:
return tonumber((string.gsub(getInfoParam('SERVERTIME'),':',''))) or -1

С этим просто какая то ерунда, кода нет соединения или таблицы загружаются, getInfoParam('SERVERTIME') не равняется не nil и не времени   :(  
поэтому даже если поставить проверку getInfoParam('SERVERTIME') ~= nil она про игнорируется, у того же LASTRECORDTIME - постоянно есть запись в ячейки.
 
Цитата
Роман пишет:
кода нет соединения или таблицы загружаются,
SERVERTIME - это время сервера, если нет соединения с сервером, нельзя узнать время сервера.
LASTRECORDTIME - это время последнего изменения, оно просто висит
 
Sergey Gorokhov да я так и понял :), в мануале не помещало инфу об этом добавить.

И последний вопрос, по дате:

string.gsub(getInfoParam('TRADEDATE'),'.',''). Парни, а кто нибудь знает как в string.gsub точку указать для паттерна? '\.' - такой вариант тоже не берёт.
 
Код
string.gsub(getInfoParam('TRADEDATE'),'[.]','')
 
 
спасибо!
 
кстати, а почему на TRADEDATE, дата не с года, а с числа начинается?
 
Цитата
Роман пишет:
кстати, а почему на TRADEDATE, дата не с года, а с числа начинается?
формат даты DD.MM.YYYY соответствует ГОСТ Р 6.30-2003 (п. 3.11).
 
Ну всё, теперь все на местах, заплаток конечно получилось многовато, но вроде машина завилась. Спасибо!
 
Цитата
Роман пишет:
-- ночью показывает 25:12:45
Ошибка будет исправлена в одной из следующих версий программы
 
Цитата
25:12:45
позорники)))))
за такого вида ошибки - надо расформировывать весь отдел))))
 
Цитата
Sergey Gorokhov пишет:
Цитата
Роман пишет:
-- ночью показывает 25:12:45
Ошибка будет исправлена в одной из следующих версий программы
Мне интересно, что тут можно исправить, если время "сбрасывается" при смене торговой даты, которая в свою очередь меняется при перезагрузке сервера?
Не вижу никаких проблем в использовании того формата времени, что есть сейчас, наоборот даже удобство:
1) Если время > 23:50 - значит торги уже закончились
2) Если время < 09:30 - значит начался новый торговый день, но торги ещё не начались
Надо делать так, как надо. А как не надо - делать не надо.
 
Цитата
Серж пишет:
Мне интересно, что тут можно исправить, если время "сбрасывается" при смене торговой даты, которая в свою очередь меняется при перезагрузке сервера?
речь идет о появлении времени > 24 часов
 
Цитата
Sergey Gorokhov пишет:
речь идет о появлении времени > 24 часов
Если кому-ту будет легче, если часы "застынут" на 23:59:59, то ок  :D
Главное, чтоб дата торгов не менялась в выходные дни.  
Надо делать так, как надо. А как не надо - делать не надо.
 
Тоже столкнулся с этой ошибкой, когда потребовалось конвертировать дату, для сохранения в базу, посыпались ошибки. До времени 23:59:59 всё в порядке, а далее .... вместо 00:00:00 показывает 24:00:00.  Далее дождался ещё час и хотел увидеть 01:00:00, а увидел 25:00:00. Дальше ждать не стал...  Версия терминала последняя, соединение установлено. Это будние дни, что происходит в выходные ещё не смотрел.  Это однозначно ошибка, все пользователи не должны сами отслеживать и ставить заплатки...разберитесь.  
 
Цитата
DronGO пишет:
дождался ещё час и хотел увидеть 01:00:00, а увидел 25:00:00
А что бы Вы хотели увидеть, если дата торгов еще не сменилась? Насколько я понимаю, она меняется только утром.
Если бы время начало отсчитываться заново с 0 часов прежде чем сменится дата торгов, то это выглядело бы так, будто мы вернулись в прошлое и начали вчерашний день заново.
К каким неожиданным последствиям это может привести - можно только гадать, но очевидно, что это могло бы ввести в заблуждение каких-нибудь роботов и т.д.
По-моему, ничего особо страшного во времени, превышающем 24 часа, нет. В данном случае это меньшее из двух зол.
 
Цитата
Дмитрий пишет:
А что бы Вы хотели увидеть, если дата торгов еще не сменилась? Насколько я понимаю, она меняется только утром.
А почему дата меняется только утром? а не в 00:00:00?
Страницы: 1 2 След.
Читают тему
Наверх