Вот функция для установки значения в ячейке.
Она служит мне верой и правдой. Но иногда она выдает такую ошибку:
Это он ругается на строчку if self.data[row][col_ind]==data then return true end
Внутри колбека это не приводит к выбиванию скрипта, поэтому я продолжаю работать с ней. Важно: эта ошибка приходит в первую секунду после запуска, когда какое то значение ещё не определено. Потом всё работает хорошо.
Вы можете видеть, что я пытаюсь отловить эту ошибку через message, но он спокойно проходит эту проверку.
Подскажите где искать иэтот "нил"
Код |
---|
function QTable:SetValue(row, col_name, data, formatted) -- Установить значение в ячейке local col_ind = self.columns[col_name].id or nil if col_ind == nil then return false end local col_type = self.columns[col_name].c_type if row==nil or col_name==nil or data==nil or col_ind==nil then message ((row or "nil").." | "..(col_name or "nil").." | "..(data or "nil").." | "..(col_ind or "nil")),1) end if self.data[row][col_ind]==data then return true end self.data[row][col_ind]=data local col_type = self.columns[col_name].c_type -- если для числового столбца дано НЕчисловое значение, то применяем к нему tonumber if type(data) ~= "number" and (col_type==QTABLE_INT_TYPE or col_type==QTABLE_DOUBLE_TYPE or col_type==QTABLE_INT64_TYPE) then data = tonumber(data) or 0 end -- если для НЕстрокового значения уже дан отформатированный вариант, то сначала используется он if formatted and col_type~=QTABLE_STRING_TYPE and col_type~=QTABLE_CACHED_STRING_TYPE then return SetCell(self.t_id, row, col_ind, formatted, data) end -- если для столбца задана функция форматирования, то она используется local ff = self.columns[col_name].format_function if type(ff) == "function" then -- в качестве строкового представления используется -- результат выполнения функции форматирования if col_type==QTABLE_STRING_TYPE or col_type==QTABLE_CACHED_STRING_TYPE then return SetCell(self.t_id, row, col_ind, ff(data)) else return SetCell(self.t_id, row, col_ind, ff(data), data) end else if col_type==QTABLE_STRING_TYPE or col_type==QTABLE_CACHED_STRING_TYPE then return SetCell(self.t_id, row, col_ind, tostring(data)) else return SetCell(self.t_id, row, col_ind, tostring(data), data) end end end |
Она служит мне верой и правдой. Но иногда она выдает такую ошибку:
Это он ругается на строчку if self.data[row][col_ind]==data then return true end
Внутри колбека это не приводит к выбиванию скрипта, поэтому я продолжаю работать с ней. Важно: эта ошибка приходит в первую секунду после запуска, когда какое то значение ещё не определено. Потом всё работает хорошо.
Вы можете видеть, что я пытаюсь отловить эту ошибку через message, но он спокойно проходит эту проверку.
Подскажите где искать иэтот "нил"