GetCell жрет память

Страницы: 1
RSS
GetCell жрет память
 
путем бесконечного комментирования выяснил, что сабж присутствует. Запускаю на паралелс

while (j <= rows)  do
 x=GetCell(self.hID, j, i)
    --if x~=nil then
   -- if x["image"]==id then
--SetCell(self.hID, j+1, i,value)
   -- end
-- end

 j=j+1
 end  
 
kbrobot.ru, Во-первых, зачем вообще нужен GetCell? В моём скрипте он используется только один раз, только в основной таблице и только для того, чтобы определить "настоящую" айдишку кликнутой строки, поскольку её порядковый номер в таблице может меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.

Во-вторых, у Вас не определены ни i, ни j, ни id, ни value, ни на кой Вам вообще нужен GetCell. В-третьих, результат вызова GetCell присваивается одной и той же переменной. откуда здесь вообще "жор памяти"? Кто кого сожрал?
 
Цитата
Владимир написал:
вообще нужен GetCell? В моём скрипте он используется только один раз, только в основной таблице и только для того, чтобы определить "настоящую" айдишку кликнутой строки, поскольку её порядковый номер в таблице может меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.Во-вторых, у Вас не определены ни i, ни j, ни id, ни value, ни на кой Вам вообще нужен GetCell. В-третьих, результат вызова GetCell присваивается одной и той же переменной. откуда здесь вообще "жор памяти"? Кто кого сожрал?
Спасибо за ответ. Когда я комментирую ГетСел то тут же жор пропадает. В квике в скриптах он показывает постоянный рост памяти.

Я с помощью этой функции нахожу код бумаги в таблице. И в соседнюю ячейку ставлю нужное мне значение.  
 
Цитата
Владимир написал:
меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
Все эти параметры определяются выше

function Window:InsertValue(id,value)
value=tostring(value)
if value==nil then
return
end
rows,columns=GetTableSize(self.hID)
i=1
j=1

while (i <= columns)  do
j=1
 while (j <= rows)  do
 x=GetCell(self.hID, j, i)
    if x~=nil then
    if x["image"]==id then
SetCell(self.hID, j+1, i,value)
    end
end

 j=j+1
 end
i=i+1  
end

end
 
Цитата
kbrobot.ru написал:
Цитата
Владимир написал:
меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
Все эти параметры определяются выше

function Window:InsertValue(id,value)
value=tostring(value)
if value==nil then
return
end
rows,columns=GetTableSize(self.hID)
i=1
j=1

while (i <= columns)  do
j=1
 while (j <= rows)  do
 x=GetCell(self.hID, j, i)
    if x~=nil then
    if x["image"]==id then
SetCell(self.hID, j+1, i,value)
    end
end

 j=j+1
 end
i=i+1  
end

end
Зачем Вы обходите встю таблицу по столбцам и строкам. Вы разве не знаете в каком столбце у вас id?
----------------------
Если у вас инструменты не гуляют произвольно по строкам таблицы, то создайте для них  table[seccode]  в которой запишите номера строк.
В итоге Вы просто будете выбирать из этой table номер строки инструмента по его seccode.
 
Цитата
nikolz написал:
Цитата
kbrobot.ru написал:
 
Цитата
Владимир  написал:
меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
 Все эти параметры определяются выше

function Window:InsertValue(id,value)
value=tostring(value)
if value==nil then
return
end
rows,columns=GetTableSize(self.hID)
i=1
j=1

while (i <= columns)  do
j=1
 while (j <= rows)  do
 x=GetCell(self.hID, j, i)
    if x~=nil then
    if x["image"]==id then
SetCell(self.hID, j+1, i,value)
    end
end

 j=j+1
 end
i=i+1  
end

end
Зачем Вы обходите встю таблицу по столбцам и строкам. Вы разве не знаете в каком столбце у вас id?
----------------------
Если у вас инструменты не гуляют произвольно по строкам таблицы, то создайте для них  table[seccode]  в которой запишите номера строк.
В итоге Вы просто будете выбирать из этой table номер строки инструмента по его seccode.
А по другому эту проблему никак не решить?
 
Цитата
kbrobot.ru написал:
Цитата
nikolz написал:
 
Цитата
kbrobot.ru  написал:
 
Цитата
 Владимир   написал:
меняться - например, при выполненной сортировке по какому-либо столбцу, или при изменении видимого количества строк. Скрипт прорисовывает таблицу сам и прекрасно знает, что и в какой ячейке у него лежит.
  Все эти параметры определяются выше

function Window:InsertValue(id,value)
value=tostring(value)
if value==nil then
return
end
rows,columns=GetTableSize(self.hID)
i=1
j=1

while (i <= columns)  do
j=1
 while (j <= rows)  do
 x=GetCell(self.hID, j, i)
    if x~=nil then
    if x["image"]==id then
SetCell(self.hID, j+1, i,value)
    end
end

 j=j+1
 end
i=i+1  
end

end
 Зачем Вы обходите встю таблицу по столбцам и строкам. Вы разве не знаете в каком столбце у вас id?
----------------------
Если у вас инструменты не гуляют произвольно по строкам таблицы, то создайте для них  table[seccode]  в которой запишите номера строк.
В итоге Вы просто будете выбирать из этой table номер строки инструмента по его seccode.
А по другому эту проблему никак не решить?
я не использую такие таблицы в скриптах, поэтому лень писать тест.
Если выложите работающий скрипт с Вашим вариантом поиска ячейки я скажу как исправить, либо соглашусь с Вами , что жрет.
 
kbrobot.ru, Господи, заведите невидимый нулевой столбец и запихните туда код бумаги в таблице. Именно так я и сделал, именно этот код и считывает тот самый единственный GetCell с моём скрипте.
 
Решил сделать проще. Заказал таблицу на QPILE. Там ничего не течет
 
kbrobot.ru, Здесь тоже ничего не течёт.
Страницы: 1
Читают тему
Наверх