Можно ли сделать каким нибудь GOTO на метку в другой процедуре ?
Т.е
- Код: Выделить всё
Sub Sub1()
Goto METKA
End Sub
Sub Sub2()
METKA:
End Sub
В MSDN написано, что можно переходить только на метку в своей сабе
Sub Sub1()
Goto METKA
End Sub
Sub Sub2()
METKA:
End Sub
Блин, смайлик тебе надо было внутри кода написать, а то незаметно нифига Зато может человеку ну позарез надо переход на другую метку сделать и теперь он через несколько Ж..П и с кучей багов но таки кА-Ак прыганет в другую процедуру... Никаким дебагером потом не поймаешьKonst_One писал(а):это шутка же
Sub Sub1()
Sub2
End Sub
Sub Sub2(Optional CallМетка As Boolean = False)
If CallМетка Then GoTo МЕТКА
METKA:
End Sub
msdn писал(а):It is good programming style to use the break, continue, and return statement in preference to goto whenever possible.
John Carmack (who create ID Software) писал(а):...
If who or in mine the command of developers will start to use the operator goto, it will be immediately dismissed. To all partners I recommend to deal with it never.
...
GM писал(а):И все же в некоторых случаях без них не обойтись:
on error goto home
home:
или в таком случае, вместо continue, ну тут в принципе можна но все равно:
for i = 1 to 1000
for j = 1 to 1000
...
...
if <условие> then goto continuej
...
...
continuej:
next
next
Не совсем так. Когда ты скачешь по GOTO метка, предполагается, что ты там и останешься (хотя куда программе тогда вообще из второй процедуры возвращаться), а у тебя после прыжка на метку, программа снова потом вернется на следующую строку опосля окончания процедуры2. Поэтому одной попой тут не обойдешьси Еще проверки надо добавлятьKDima писал(а):
- Код: Выделить всё
Sub Sub1()
Sub2
End Sub
Sub Sub2(Optional CallМетка As Boolean = False)
If CallМетка Then GoTo МЕТКА
METKA:
End Sub
alibek писал(а):Обойтись можно почти всегда.
On Error Resume Next
If Not <условие> Then
...
End If
Exit For
John Carmack (who create ID Software) писал(а):
...
If who or in mine the command of developers will start to use the operator goto, it will be immediately dismissed. To all partners I recommend to deal with it never.
alibek писал(а):codemaster, он был естественнен на GW-BASIC. Уже в QBasic без него можно было почти всегда обойтись, а в VB его имеет смысл применять разве что для обработчиков ошибок.
With adoRs
If Not .EOF Then
If m_IsDeleted Then
.Delete
Else
SaveRecord:
adoRs("...") =
.....
.....
adoRs("...") =
.Update
m_ID = adoRs("...")
End If
Else
If Not m_IsDeleted Then
.AddNew
GoTo SaveRecord
End If
End If
.Close
End With
With adoRs
If m_IsDeleted Then
If .EOF Then
.Delete
End If
Else
If .EOF Then
.AddNew
End If
adoRs("...") =
.....
.....
adoRs("...") =
.Update
m_ID = adoRs("...")
End If
.Close
End With
гугл писал(а):Не найдено ни одного документа, соответствующего запросу "If who or in mine".
Сейчас этот форум просматривают: Bing-бот и гости: 190