Гость
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Куда можно перенаправить вывод? / 5 сообщений из 5, страница 1 из 1
15.02.2016, 11:21
    #39171097
osuss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Куда можно перенаправить вывод?
Недавно начал разбираться с gt.m и столкнулся с проблемой.
Необходимо временно перенаправить вывод в какой-нибудь буфер, чтобы в случае возникновения ошибок в работе программы не отдавать неполный контент, а вывести только сообщение об ошибке

Исходный код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
test
 ;
 q 

test 
  n a,b,c 
  s a=1,b=2 
  w a,! 
  w b,! 
  w c,! 
  q  
Код: plaintext
1.
2.
3.
4.
GTM>do test^test

>1 
>2 
>%GTM-E-UNDEF, Undefined local variable: c 

Я изобрел такое решение
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
test2 
  n f 
  s f="testFile" 
   
  n a,b,c 
  s a=1,b=2 
  ;s c=3   ; !!! 
  s $ZTRAP="goto err" 
   
  open f:(NEWERSION) 
  use f 
   w a,! 
   w b,! 
   w c,! 
  close f 
   
  n d,e,g 
  open f 
  use f 
   read d 
   read e 
   read g 
  close f 
   
  w d,! 
  w e,! 
  w g,!         
  q 
         
err 
  s $ZTRAP="" 
  close f 
  w "Error" 
  q
Код: plaintext
1.
GTM>do test2^test
>Error

Если раскомментировать s c=3   ; !!!

Код: plaintext
1.
2.
3.
GTM>do test2^test
>1 
>2 
>3

Но я считаю, что использование файловой системы не самое корректное решение. Есть ли возможность перенаправить вывод не в файл, а в глобал, например, или в поток?
...
Рейтинг: 0 / 0
28.04.2016, 14:45
    #39226685
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Куда можно перенаправить вывод?
osussЕсть ли возможность перенаправить вывод не в файл, а в глобал, например, или в поток?
Не совсем перенаправление... Но все же.
Код: plaintext
1.
2.
3.
4.
5.
test
 d WRITE("Test")
 q
WRITE(Text)
 s ^tmp($i(^tmp))=$g(Text)
 q
...
Рейтинг: 0 / 0
29.04.2016, 19:06
    #39227771
О-О-О
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Куда можно перенаправить вывод?
krvsa,

C gt.m не знаком, но в Каше есть две чудные фишки.

Set $ZTrap ="OshibkaPoSMS" // Переход к метке/коду (Goto OshibkaPoSMS), если возникла ошибка.
и выполняется нужный код. Эту стоку помещаете в самом начале исполняемого кода.

А код куда переход будет во время ошибки в самом низу программы.



Есть вторая фишка $ETrap - выполняется команда, в случае возникновения ошибки.

Есть ещё $Ecode и $ZError, но я почему то их не использую (чем то они мне не угодили).
...
Рейтинг: 0 / 0
04.05.2016, 08:10
    #39228796
krvsa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Куда можно перенаправить вывод?
О-О-О , только мне это зачем?

В ГТ.М есть такие же обработчики ошибок...
...
Рейтинг: 0 / 0
10.05.2016, 14:54
    #39232465
osuss
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[gt.m] Куда можно перенаправить вывод?
О-О-О

Тут суть не обработке ошибок, а в том, что нужно куда-то "складировать" весь вывод перед отправкой его клиенту/на экран/еще куда и показывать или весь вывод или только ошибку
...
Рейтинг: 0 / 0
Форумы / Caché, Ensemble, DeepSee, MiniM, IRIS, GT.M [игнор отключен] [закрыт для гостей] / [gt.m] Куда можно перенаправить вывод? / 5 сообщений из 5, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]