Hej Du saknar en end if Niklas har rätt, men tror att han har lagt in End If på fel ställe. mmm... den stöten har man gått på några gånger. För mig som inte fular mig med GoSub, vad gör den egentligen? Blir det som en separat Sub fast med labels istället? Finns det då något som är fördel med GoSub mot en riktig Sub? GoSub körde vi ju med i Basicbörjan 1970 > Varje rad var en adress. Ok, som jag trodde då. Kanske har använt det nån gång på QBasic-tiden. mmm... njaaa finns kvar. 1.Min fråga: Min subrutin är ganska stor, så jag extraherade några rader. Men saknad End If var boven i dramat. Jag har använt gosub och vet vad det gör. Det är värdelös skit.Next without for
En knepig fråga.
Jag håller på med ett program.
I en subrutin (privat sub) där det finns ett antal gosub osv:
När jag kör programmet så stannar den i denna subrutin med felmeddelande "Next without for", men jag HAR både For och next.
Private Sub x()
For N = 1 To 100
If A = B Then GoSub Rutin1
If Cfakt = 8 Then GoSub Rutin2
For N1 = 1 To n2
If PaSt(N) = CompSt(N1) And PaCo(N) = CompCo(N1) Then
If PaSi(N) = CompSi(N1) Then
BollE = True
End If
Next N1
Next N
End Sub
Vad är fel?
Per
Sv: Next without for
For N = 1 To 100
If A = B Then GoSub Rutin1
If Cfakt = 8 Then GoSub Rutin2
For N1 = 1 To n2
If PaSt(N) = CompSt(N1) And PaCo(N) = CompCo(N1) Then
If PaSi(N) = CompSi(N1) Then
BollE = True
End If
Next N1
<b>End If</b>
Next N
Sen är det ju iofs nästan förkastligt att använda gosub och de tämligen dåliga variabelnamnen du har, men skit samma.Sv:Next without for
Testa:
Private Sub x()
For N = 1 To 100
If A = B Then GoSub Rutin1
If Cfakt = 8 Then GoSub Rutin2
For N1 = 1 To n2
If PaSt(N) = CompSt(N1) And PaCo(N) = CompCo(N1) Then
If PaSi(N) = CompSi(N1) Then
BollE = True
End If
<b>End If</b>
Next N1
Next N
End Sub
/ThomasSv:Next without for
End If och Next man får svar på Next.
Där är språken Delphi C# mfl mer raka "Begin / End"
Det blir en djä... cirkus om du inte kan indenteringen !
Och snälla ! sluta med GoSub.
mvh
SvenSv: Next without for
/ThomasSv:Next without for
Man hoppade 100 rader ner,körde den slingan,fick ett nytt GoSub gick upp till rad 42
körde den osv. Det blev en djä.... soppa.
Kallades "Makaroni - programmering"Sv: Next without for
Varför finns det ens kvar i VB? Bakåtkompabilitet av nått slag?
/ThomasSv:Next without for
Någon gång kan det vara effektivt. Bara man vet vad man gör.
Själv är jag såld på rekursivt anrop.
Vad är jag såld på ?Sv: Next without for
2. GOSUB: En annan som programmerat lite då och dp i Basic sedan långt före det fanns ett företag som hette Microsoft tycker GOSUB är bra. Påminner om Call men ligger i samma subrutin. När man kan det så ger det ett antal fördelar.
T.ex. Om jag skriver:
Gosub Arutin.
Så kan jag i denna rutin om ett visst värde uppstår eller jag får ett errormeddelande eller ... skapa en exit ur subrutinen. Om jag istället hade skrivit Call Brutin så om jag får en exit ur B-rutin så kommer jag tillbaka till min urpsrungliga rutin vilket gör att jag måste lägga till en variabel och skapa x antal rader för att hantera ett "meddelande" från Brutin, vilket jag alltså slipper med GOSUB.
Gamla Basic hade några andra saker jag också gillade, som inte finns kvar. Ett exempel. GET - när GET -raden aktiverats så räckte det med EN tangetnedtryckning för att programmet skulle reagera. T.ex. skrev jag ofta en sorts MessageBox som t.ex. frågade vilket alternativ man ville ha:
A-Alt 1
B-Alt 2
C-Alt 3
osv
Och det ränkte att användaren nuddade vid t.ex. B-tangenten för att valet skulle vara gjort. Inga musrörelser och inga Enter... Mycket snabbt.
Ha en bra dag
PerSv:Next without for
Program blir betydligt renare och enklare att förstå utan det. Ett exempel på vad som blir så otroligt mycket sämre med det är just att funktioner blir stora.