Блог им. HOME

Не академик в QLUA, а потому просто спрашиваю знающий народ про DestroyTable/

Существует ли альтернатива стандартному DestroyTable?

Сегодня протестил 8.8 — версию КВИКа.
Destroy… выбивает терминал. Инфо-сообщение примерно такое: «Неожиданная ошибка. Примите извинения».

Спасибо заранее.
Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
839 | ★2
9 комментариев
Альтернативы не видел. Раньше работало? В курсе, что DestroyTable должно запускаться до завершения OnStop()? 
avatar
Я луёй занимаюсь только 3-й год. Ни разу не работала эта функция. Раньше 7.2 — версии не проверял, правда.
На форуме АРКИ с 14 года висит вопрос «Доколе?..»
Надеюсь на светлые головы, ибо моя пока «встала».
avatar
Только что проверил на 8.7:
DestroyTable() прекрасно работает.

Что-то у вас с логикой в коде.
avatar
Винни Пух, родной!
Никакого особого кода нет (у меня на изыски знаний не хватает):

function close_w(t_id)

DestroyTable(t_id)

end
...
...
...
(вызов)
close_w(id)
...
...
function main()
.
.
end

function OnStop()
.
.
end

Поделитесь, пожалуйста, что как Вы запускаете «дестрой»?
avatar
Eugene Bright, 

function main ()

local Table = AllocTable()

AddColumn(***)
****
CreateWindow(Table)
SetWindowCaption(Table, «RTS»)
SetWindowPos(Table, 500, 500, 600, 400)
InsertRow(Table, -1)

while IsRun do
*******
end

DestroyTable(Table)

end

В Table запихивается id таблицы через AlloсTable
Чтобы закрыть просто пишешь команду DestroyTable(Table)

avatar
Винни Пух, всё так же, но есть разница!
Я вызываю «дестрой» не из-под main().
У меня вызов происходит из колл-бэк_функции.
«Слушатель» колл-бэка находится, как и полагается, внутри while-do-end головной функции main():

function event_callback (i_id, msg, par1, par2)
...
close_w(t_id) — вызов «дестроя» для закрытия другой таблицы
...
end

.
.
.
function main()
...
SetTableNotificationCallback(t_id, event_callback)
...
end

Это существенно?

avatar
Винни Пух, всё-таки ты — молодец!
Заставил еще раз проверить свои знания и внимательность.
В 7.27-версии запустил скрипт. DestroyTable работает, но не из всех мест.
Функции обратной связи, прописанные в main() с помощью SetTableNotificationCallback() на ту же таблицу, блокируют закрытие таблицы, которую «слушает» main().

В «Руководстве...» написано:

ВАЖНО! Недопустим вызов функций Clear и DestroyTable для t_id внутри функции обратного вызова f_cb, назначенной на таблицу с данным t_id.

(по-русски эту мысль сразу не понял, но «методом тыка» отключил некоторые вызовы DestroyTable() и нашел, что он работает, но не ото всюду...)
avatar
Eugene Bright, я просто уснул, т.к. утром тренировка. Извиняюсь за прерванный диалог. Но вижу Вы сами разобрались. Мое уважение, такому упорству можно позавидовать =)
avatar
Винни Пух, сердечно благодарю за поддержку!
А насчет упорства всё очень просто: я — древний старикашка и делать мне больше всё равно нечего.)))
avatar

Читайте на SMART-LAB:
Фото
Т⁠-⁠Банк представил новое поколение супераппа
В приложении появились новые сферы и данные о счетах и кредитах в других банках, а с главного экрана убрали лишнее Т⁠-⁠Банк объявил новый...
Фото
GBP/USD: Покупатели фунта занимают круговую оборону
Британская валюта вплотную приблизилась к мощному форпосту — области поддержки в диапазоне 1.3140–1.3160. Судя по всему, покупатели окопались...
Фото
«ЛУКОЙЛ» будоражит рынок: дивиденды и сделка драйвят акции
Акции «ЛУКОЙЛа» сегодня снова в фокусе рынка – на пике дня они достигали отметки 5687,5 рубля, то есть фактически вернулись на уровни 6...
Фото
Хэдхантер. Рынок труда в сентябре: hh.индекс снизился до 8,5 - становится лучше?
Вышла статистика рынка труда за сентябрь 2026 года (за август можно почитать здесь ), которую Хедхантер публикует ежемесячно, что же там...

теги блога Eugene Bright

....все тэги



UPDONW
Новый дизайн