OberonCore https://forum.oberoncore.ru/ |
|
Нехорошее дело с коммандерами. https://forum.oberoncore.ru/viewtopic.php?f=35&t=1663 |
Страница 1 из 1 |
Автор: | Клоп Говорун [ Пятница, 19 Июнь, 2009 10:23 ] |
Заголовок сообщения: | Нехорошее дело с коммандерами. |
Есть такое - Код: PROCEDURE ClientCardView* (cclid: INTEGER; IN cclname: Views.Title); Модератор: к исходному тексту применён стиль "код"..... Strings.IntToString(cclid, clidstr); CardQStr := "select cl.Ptn_Rcd,cl.Ptn_CdSrt,ptng.PtnGrp_Nmk,cl.Ptn_Inn,cl.Ptn_OKONX,cl.Ptn_SchRch from ptnrk cl left join ptngrpk ptng on cl.PtnGrpk_rcd=ptng.ptngrpk_rcd where Ptn_Rcd=" + clidstr; Open; table.Exec(CardQStr); IF table.res # SqlDB.noData THEN table.Read(1, ClientCard); PathToLoc("../ISPROCRM/", loc); CardView := Views.OldView(loc, "tstdoc"); CardModel := CardView(TextViews.View).ThisModel(); .................. Views.OpenAux(CardView, 'Карточка клиента: ' + cclname); END END ClientCardView; PROCEDURE Test*; BEGIN ClientCardView(335, 'тест'); END Test; Так вот ,коммандер "ISPROClient.ClientCardView(335,'test')" выдает ошибку syntax error,а ISPROClient.Test - нормалек. В чем тут загогулина? То же самое западло имеет место при вызове изпод гиперссылки. а вот при перестановке параметров - работает! Нехорошее дело.Абсолютное зло. "ISPROClient.Test('ааа',5,10)" |
Автор: | Евгений Темиргалеев [ Пятница, 19 Июнь, 2009 11:50 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
См. StdInterpreter. Там указано, процедуры какого типа могут быть вызваны. Для 1.5, например, есть: Код: Proc = PROCEDURE И нетуProcSI = PROCEDURE (s: ARRAY OF CHAR; x: INTEGER) ProcSII = PROCEDURE (s: ARRAY OF CHAR; x, y: INTEGER) Код: PROCEDURE (x: INTEGER; s: ARRAY OF CHAR) См. также Dialog.Call.
|
Автор: | Info21 [ Пятница, 19 Июнь, 2009 12:12 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Клоп Говорун писал(а): а вот при перестановке параметров - работает! Нехорошее дело.Абсолютное зло. Признаться, меня тоже несколько жмёт ограниченность разрешенных вариантов передачи параметров в коммандере. Не особо сложно обойтись и так, но, например, для начинающих писать лишнюю процедуру ввода -- чрезмерно.Я понимаю, "тебе надо -- ты и напиши". Но, может, кому-то еще надо? |
Автор: | Евгений Темиргалеев [ Пятница, 19 Июнь, 2009 12:20 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Не надо забывать, что в 1.6 свободы гораздо больше: BB1.6, StdInterperter docu писал(а): Command = Call { ";" Call }.
Call = ModuleName "." ProcedureName [ "(" Parameter { "," Parameter } ")" ]. Parameter = Integer | String. Integer = Decimal | Hex. Decimal = [ "-" ] Digit { Digit }. Hex = [ "-" ] HexDigit { HexDigit } "H". String = " ' " { Char } " ' ". |
Автор: | Иван Кузьмицкий [ Пятница, 19 Июнь, 2009 13:24 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Евгений Темиргалеев писал(а): Не надо забывать, что в 1.6 свободы гораздо больше: Ух ты, а я и не знал. Ещё один стимул к переходу на 1.6! |
Автор: | Info21 [ Пятница, 19 Июнь, 2009 14:25 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Евгений Темиргалеев писал(а): Не надо забывать, что в 1.6 свободы гораздо больше: Нельзя забыть, чего не знаешь.Спасибо. Но REAL всё равно нет. |
Автор: | Валерий Лаптев [ Пятница, 19 Июнь, 2009 14:34 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Info21 писал(а): Клоп Говорун писал(а): а вот при перестановке параметров - работает! Нехорошее дело.Абсолютное зло. Признаться, меня тоже несколько жмёт ограниченность разрешенных вариантов передачи параметров в коммандере. Не особо сложно обойтись и так, но, например, для начинающих писать лишнюю процедуру ввода -- чрезмерно.Я понимаю, "тебе надо -- ты и напиши". Но, может, кому-то еще надо? А какая проблема написать обертку из 2 строчек? |
Автор: | Info21 [ Пятница, 19 Июнь, 2009 16:09 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Валерий Лаптев писал(а): А какая проблема написать обертку из 2 строчек? Так там не две строчки.
|
Автор: | Клоп Говорун [ Пятница, 19 Июнь, 2009 16:54 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Патамушта надо было предусмотреть. И в документации нигде нету. |
Автор: | Валерий Лаптев [ Пятница, 19 Июнь, 2009 17:44 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Info21 писал(а): Валерий Лаптев писал(а): А какая проблема написать обертку из 2 строчек? Так там не две строчки.Я правильно понимаю, что приходится подгонять параметры реально вызываемой процедуры под два параметра, разрешенные в коммандере? |
Автор: | Info21 [ Пятница, 19 Июнь, 2009 18:12 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Валерий Лаптев писал(а): Info21 писал(а): Валерий Лаптев писал(а): А какая проблема написать обертку из 2 строчек? Так там не две строчки.Я правильно понимаю, что приходится подгонять параметры реально вызываемой процедуры под два параметра, разрешенные в коммандере? |
Автор: | Info21 [ Пятница, 19 Июнь, 2009 18:13 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Клоп Говорун писал(а): Патамушта надо было предусмотреть. Всего не предусмотришь.
|
Автор: | Валерий Лаптев [ Пятница, 19 Июнь, 2009 18:45 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Info21 писал(а): Нет. Видимо, вы меня не совсем поняли. Допустим, мне нужно в коммандере вызвать процедуру с тремя параметрами, не совпадающими по типам с разрешенными для комаандера. Я пишу процедуру обертку с двумя разрешенными параметрами. Внутри ее я пытаюсь параметры моей процедуры "подогнать" под два разрешенных.. То есть, процедура-обертка получает два разрешенных параметра, а потом из них делает три нужных в моей реальной процедуре и вызывает мою процедуру с нужными ей аргументами. |
Автор: | Info21 [ Пятница, 19 Июнь, 2009 20:12 ] |
Заголовок сообщения: | Re: Нехорошее дело с коммандерами. |
Валерий Лаптев писал(а): Info21 писал(а): Нет. Видимо, вы меня не совсем поняли. Если разрешена доп. процедура, то проще заставить читать нужные параметры из потока ввода без возни с представлением. Это несколько строк, но в некоторых условиях такой оверхед чрезмерен. |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB® Forum Software © phpBB Group https://www.phpbb.com/ |