Clarion 7 - 8 разных сборок а проблема одна
Добавлено: 20 Май 2011, 12:05
ROUTINE that can RETURN from procedure cannot be called here а в 5 и 6 все отлично
Место общения программистов, форум разработчиков БД на Clarion
https://forum.clarionlife.net/
Код: Выделить всё
R ROUTINE
RETURN
P1 PROCEDURE
CODE
P2()
DO R
P2 PROCEDURE
CODE
DO R
Здесь хрень написал... не по правилам клаши...Дед Пахом писал(а):хрен знает, из P1 или из P2 мы выйдем по RETURN?Код: Выделить всё
R ROUTINE RETURN P1 PROCEDURE CODE P2() DO R P2 PROCEDURE CODE DO R
Код: Выделить всё
PROGRAM
MAP
P1 PROCEDURE
P2 PROCEDURE
END
CODE
P1
P1 PROCEDURE
CODE
P2()
DO R
R ROUTINE
MESSAGE('ROUTINE 1')
RETURN
P2 PROCEDURE
CODE
DO R
R ROUTINE
MESSAGE('ROUTINE 2')
RETURN
Я приблизительноAdmin писал(а): Здесь хрень написал... не по правилам клаши...
И что-где подправить?ROUTINE that can RETURN from procedure cannot be called here
во вложенных рутинках по-тупому заменил RETURN на EXIT и все откомпилировалось и заработало.в рутине заменить RETURN на "Loc:Return=True; EXIT",
Дед Пахом писал(а):Может кто-нибудь, кто столкнулся с этой проблемой, будет столь любезен и опишет ситуацию, при которой она возникает?????
Код: Выделить всё
в моем случае если в ROUTINE встречается следующий код
IF ErrorCode() THEN
Message('Невозможно выполнить запорос|' &|
'Причина (клиент): '&Error()&'|' &|
'Причина (сервер):'&FileError(), 'Ошибка', Icon:Exclamation)
SetCursor()
Return меняем на Exit тогда собирается
END
Когда-то давным давно Алексей Соловьев написал вот это в ньюсах, надеюсь поможет:Дед Пахом писал(а):Может кто-нибудь, кто столкнулся с этой проблемой, будет столь любезен и опишет ситуацию, при которой она возникает?????
Код: Выделить всё
IFace INTERFACE
SomeMethod PROCEDURE()
END
MAP
ExtProc (*IFace)
END
P PROCEDURE()
LocalClass CLASS,IMPLEMENTS(IFace)
.....
END
.....
CODE
...
ExtProc (LocalClass.IFace)
...
RETURN
SomeRoutine ROUTINE
RETURN
LocalClass.IFace.SomeMethod PROCEDURE()
CODE
DO SomeRoutine
RETURN
ExtProc PROCEDURE (*IFace I)
......
CODE
...
I.SomeMethod()
...
RETURN