Clarion 7 - 8 разных сборок а проблема одна
Добавлено: 20 Май 2011, 12:05
				
				ROUTINE that can RETURN from procedure cannot be called here а в 5 и 6 все отлично
			Место общения программистов, форум разработчиков БД на Clarion
https://www.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