VLX e a tecla ESC

Já compilaram suas rotinas para VLX? que opções vocês usaram?
Pergunto isso, pois sempre compilo as minhas para este formato, seja para proteger o código, seja para colocar os *.lsp e *.dcl num arquivo apenas… Bom, mas minha dúvida aqui é o seguinte: quando compilada a rotina VLX, com a opção “Separate NameSpace” habilitada, a tecla ESC já não cancela mais a rotina… Estranho não?
Agora imagine que seu programa faça alguma operação bem demorada, e você decide interromper a execução dele? o que você vai fazer, já que a tecla ESC não cancela mais a execução? ver a rotina

(defun expandlist (el qtd / lst)
(
repeat qtd (setq lst (cons el lst))))

(defun init-status (maxvalue msg)
(
setq status:delta (/ maxvalue 100.0)
status:str (apply strcat (expandlist (chr 160) 100))
status:index 0
status:looping 0
status:msg msg)
(
grtext -1 (strcat msg ” 00 %” status:str)))

(defun show-status nil
(if (>= status:looping (* status:delta status:index))
(
progn
(setq status:str (vl-string-subst “|” (chr 160) status:str)
status:index (1+ status:index))
(
grtext -1 (strcat status:msg ” “
(if (< status:index 10) “0” “”)
(
itoa status:index) ” %” status:str))))
(
setq status:looping (1+ status:looping)))

(defun end-status nil
(grtext -1 “”)
(
princ))

(defun c:teste (/ qtd)
(
setq qtd 10000)
(
init-status qtd “processing…”)
(
repeat qtd
(command)
(
REDRAW)
(
show-status))
(
prompt “nFIM”)
(
end-status))


Faça o teste, compile a rotina acima para VLX com o Separate NameSpace marcado, carregue o VLX e rode… tente cancelar a rotina, depois tente o mesmo, deixando Separate NameSpace desmarcado… Numa delas você verá um “FIM” na linha de comando, na outra verá o famigerado “Function Cancelled”

Deixe um comentário

Carrinho de compras
Rolar para cima