Om man i en procedur startar en ny procedur som innehåller en if-sats, kan man beroende på vad svaret blir i if-satsen avsluta den föregående proceduren utan att gå tillbaka till den(vill istället starta en ny procedur)? Tror inte det går. Men du kan göra något sånt här: Även om det hade gått att göra så som du föreslår, så skall man inte göra så, eftersom ingen annan än den som skrivit programmet skulle kunna se hur det hänger ihop utan att vara Sherlock Holmes. Inte ens programmeraren själv skull bgripa det efter ett halvår. Hejsan !Avsluta en subprocedur från en annan procedur
Sv: Avsluta en subprocedur från en annan procedur
Private Sub Command1_Click()
Procedur1 Text1.Text
End Sub
Private Sub Procedur1(Namn As String)
If Procedur2(Namn) Then
MsgBox "Hej: " & Namn
MsgBox "Klockan är: " & Time
End If
End Sub
Private Function Procedur2(Namn As String) As Boolean
If Len(Namn) > 0 Then
'Fortsätt
Procedur2 = True
Else
'Fortsätt inte
Procedur3 Namn
End If
End Function
Private Function Procedur3(Namn As String) As Boolean
MsgBox "Du har inte fyllt i något namn!"
End FunctionSv: Avsluta en subprocedur från en annan procedur
Rätt sätt är det som föreslagits redan, att göra den andra proceduren till en funktion som svarar med sant/falskt.
Så kan man för övrigt göra med vilken procedur som helst, svaret kan visa om "procedur-funktionen" lyckades med det den skulle göra. Man behöver ju inte ta hand om resultatet om man inte vill, men en vacker dag kan det vara bra att ha, speciellt om det är en djup hierarki av sådana här "procedurer".
Det finns ju många språk där man inte har procedurer utan svar alls.
Det mest speciella i det sammanhanget är ICON där flödet styrs helt av om funktior lyckas eller inte.
- Hans
- HansSv: Avsluta en subprocedur från en annan procedur
Jag blev nyfiken på varför du vill döda en procedur ! Jag tror inte du behöver bry dig om proceduren. Det finns en Class Terminator för just detta. När en metod eller procedur kar körts färdigt förstörs objektet eller proceduren automatiskt, det vill säga minnet som det låg i görs tillgängligt för andra variablar som kan behöva detta. Detta kallas för skräpsamling.
MVH Peter