Toon posts:

[Visual basic] Geen break bij select case eerste resultaat

Pagina: 1
Acties:
  • 155 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Ik had even een vraag betreft Case Select.

Is er een manier dat hij met de Case Select door gaat inplaats hij bij de eerste resultaat stopt als het True is ? Zoals de Select Case werkt bij C/C++.


In iedergeval bedank,

Kornelis

  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Na de End select weer verder gaan :?

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


Verwijderd

Topicstarter
BV

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
Select Case True
    
        Case 1.Value
                modules = modules + " 1 "
        
        Case 2.Value
                modules = modules + " 2 "

        Case 3.Value
                modules = modules + " 3 "
                
        Case 4.Value
                modules = modules + " 4 "
        
        Case 5.Value
                modules = modules + " 5 "
                
        Case 6.Value
                modules = modules + " 6 "
        
        Case 7.Value
                modules = modules + " 7 "
                
        Case 8.Value
                modules = modules + " 8 "
                
    End Select


Wil dus dat hij alle cases afgaat zoals in c en c++

[ Voor 3% gewijzigd door Verwijderd op 22-01-2007 15:00 ]


  • Arie Kanarie
  • Registratie: Augustus 2002
  • Laatst online: 12-07-2023
Bij zo'n vraag begin ik meteen te denken aan een instinkvraag op een tentamen ofzo,
edit:
ah nu zie ik het dan is het volgende stuk ook niet echt nuttig meer
. Lees even volgende link en dan het stukje over leeftijdreeks, misschien is dat wat je zoekt: http://www.homeandlearn.co.uk/NET/nets1p21.html


Misschien for loopje maken als het numeriek oploopt?
For (i=0; i < value; i++)
{
if(value == value)
{
insert wat je wil;
}
}

[ Voor 35% gewijzigd door Arie Kanarie op 22-01-2007 15:04 . Reden: ja ik zie nu de case staan ]

-


  • KO
  • Registratie: December 2001
  • Laatst online: 12-11-2023

KO

Die methode is er niet in VB (voor zover ik weet).
Je zou dit met een if constructie kunnen doen.

Yesterday Is History. Today Is A Gift. Tomorrow Is Mystery


Verwijderd

Topicstarter
KO schreef op maandag 22 januari 2007 @ 15:01:
Die methode is er niet in VB (voor zover ik weet).
Je zou dit met een if constructie kunnen doen.
dat is juist wat ik wilde vermijden, een lange IF statement.
Snap trouwens niet waarom vb zo complex moet zijn :P

  • Salandur
  • Registratie: Mei 2003
  • Laatst online: 14:33

Salandur

Software Engineer

je enige alternatief is een if statement. ik heb toendertijd erg moeten wennen aan de switch van c/c++/java etc omdat die niet automagisch afbreekt bij de volgende case, hoewel ik nu wel de voordelen er van inzie

Assumptions are the mother of all fuck ups | iRacing Profiel


Verwijderd

Als ik het mij goed herinner is het bij VB Exit Case.

  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
In C# kan dat met GOTO.

Dus goto 2 in case 1 zetten
goto 3 in case 2 etc.

Mss kan dat in VB ook.

[ Voor 4% gewijzigd door Mastermind op 22-01-2007 15:13 ]


Verwijderd

Topicstarter
Mastermind schreef op maandag 22 januari 2007 @ 15:12:
In C# kan dat met GOTO.

Dus goto 2 in case 1 zetten
goto 3 in case 2 etc.

Mss kan dat in VB ook.
Klopt heb ik ook al geprobeerd maar helaas. Het blijft moeilijk doen. Maar ik heb het maar opgelost met een lap if statements.

In iedergeval bedankt.

  • PhysicsRules
  • Registratie: Februari 2002
  • Laatst online: 31-03 07:26

PhysicsRules

Dux: Linux voor Eenden

Verwijderd schreef op maandag 22 januari 2007 @ 15:16:
[...]


Klopt heb ik ook al geprobeerd maar helaas. Het blijft moeilijk doen. Maar ik heb het maar opgelost met een lap if statements.

In iedergeval bedankt.
Je kan ook je controls in een array stoppen en die met een for each loop doorlopen.

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Weet niet wat je bedoeling precies is maar het switch statement in VB is erg krachtig:

Visual Basic .NET:
1
2
3
4
5
6
7
8
9
10
11
12
13
  Dim Blaat As Integer: Blaat = 10
  Select Case Blaat
    Case 0:
      ' stuff
    Case 1 - 10:
      ' stuff
    Case 11, 12, 14:
      ' stuff
    Case 13:
      ' stuff
    Case Else:
      ' stuff
  End Select


Iedereen die voorstelt om in deze situatie met GoTo te werken moet op zijn minst een gigantische salarisverlaging krijgen of liever eigenlijk ontslagen worden.

Hoe dan ook, een lap if statements is iig niet de juiste manier.

[ Voor 6% gewijzigd door farlane op 22-01-2007 16:01 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Mastermind schreef op maandag 22 januari 2007 @ 15:12:
In C# kan dat met GOTO.

Dus goto 2 in case 1 zetten
goto 3 in case 2 etc.

Mss kan dat in VB ook.
goto is niet echt een nette manier; in C# kan je gewoon je break statement weglaten. Geen idee hoe het in VB.NET marcheert.

https://fgheysels.github.io/


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
goto moet je op 'on error goto' statements na inderdaad gewoon nooit willen gebruiken.

Maar farlane, dat Case 1 to 10 is misschien wel een leuke feature, maar is geen antwoord op de vraag van TS. Het ontbreken van fall-through is gewoon vervelend en leidt tot copy-paste gedrag.

@whoami: het kan ook over VB6 en ouder gaan, er is geen versie genoemd.

{signature}


  • Mastermind
  • Registratie: Februari 2000
  • Laatst online: 29-11 15:35
whoami schreef op maandag 22 januari 2007 @ 16:08:
[...]

goto is niet echt een nette manier; in C# kan je gewoon je break statement weglaten. Geen idee hoe het in VB.NET marcheert.
In .NET 2.0 mag je je break statement niet weglaten. In C# moet je een goto gebruiken als je van een case naar de andere wil vallen.

Afbeeldingslocatie: http://www.xerson.nl/temp/switchcase.jpg
Iedereen die voorstelt om in deze situatie met GoTo te werken moet op zijn minst een gigantische salarisverlaging krijgen of liever eigenlijk ontslagen worden.
Lekker dan voor de C# programmeurs :P

  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Voutloos schreef op maandag 22 januari 2007 @ 16:09:
Maar farlane, dat Case 1 to 10 is misschien wel een leuke feature, maar is geen antwoord op de vraag van TS. Het ontbreken van fall-through is gewoon vervelend en leidt tot copy-paste gedrag.
Die fall through is een feature van de C taal die makkelijk kan worden opgevangen zonder meteen slechte language features als goto te gaan gebruiken. ( Door bijvoorbeeld de switch in een functie te plempen en die in een for loop aan te roepen )

Zoals gezegd, het is me niet helemaal duidelijk wat de TS nou eigenlijk wil, de code die gepost werd slaat nl helemaal nergens op.

[ Voor 10% gewijzigd door farlane op 23-01-2007 08:41 ]

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • lier
  • Registratie: Januari 2004
  • Laatst online: 15:43

lier

MikroTik nerd

Eerst het probleem, dan de oplossing


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
farlane schreef op dinsdag 23 januari 2007 @ 08:40:
[...]


Die fall through is een feature van de C taal die makkelijk kan worden opgevangen zonder meteen slechte language features als goto te gaan gebruiken.
Ik ben het helemaal met je eens dat goto evil is. Maar geen switch statement met fall-though hebben is gewoon wel een gemis.
( Door bijvoorbeeld de switch in een functie te plempen en die in een for loop aan te roepen )
Werk aub eens een voorbeeldje uit. Zeker als je een Case 1 to 10 hebt, is het niet zo triviaal om alle relevante acties maar 1x te doen. Tevens levert het toevoegen van functieaanroepen enige overhead op.
Zoals gezegd, het is me niet helemaal duidelijk wat de TS nou eigenlijk wil, de code die gepost werd slaat nl helemaal nergens op.
Tja, het gegeven voorbeeld kan ook wel met 2 regels code zonder select case, maar kan je je dan echt geen nuttige fall-though inbeelden?

{signature}


  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Mastermind schreef op maandag 22 januari 2007 @ 19:11:
[...]


In .NET 2.0 mag je je break statement niet weglaten. In C# moet je een goto gebruiken als je van een case naar de andere wil vallen.
Hmm, stom. In .NET 1.1 heb ik dat nl. wel eens gebruikt.

https://fgheysels.github.io/


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
whoami schreef op dinsdag 23 januari 2007 @ 09:18:
[...]

Hmm, stom. In .NET 1.1 heb ik dat nl. wel eens gebruikt.
De link die lier aanhaalt legt het uit. Op zich vindt ik er wel wat voor te zeggen. Al moet ik zeggen dat ik ook al eens heb lopen vloeken omdat het niet kon ;)

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Die link legt uit dat C# op dit punt liever iets te betuttelend is ipv dan dat er van de programmeur enige intelligentie verwacht wordt. Dank je wel he.
As a result of the C# rules requiring explicit flow-control to occur at the end of a case block (most usually a break), many people question why the behavior simply wasnt changed such that fall-through didnt occur. That is, dont make break required, simply change the semantics of switch to not have fall-through for cases. The reason this wasnt done was so that developers who were very used to C++ wouldnt have a hard time understanding what a switch statement was doing.
Leuk argument, geen implicit breaks zodat het op C++ lijkt. WTF? Hallo:
• C++ gebruikt implicit fall-though.
• 'developers who were very used to C++' gaan nu juist de mist in omdat de syntax erop lijkt, maar je geen break mag weglaten.
• 'developers who were very used to C++' zijn fall-through gewend en denken daar al automatisch aan.

{signature}


  • farlane
  • Registratie: Maart 2000
  • Laatst online: 30-11 00:17
Voutloos schreef op dinsdag 23 januari 2007 @ 11:35:
Die link legt uit dat C# op dit punt liever iets te betuttelend is ipv dan dat er van de programmeur enige intelligentie verwacht wordt. Dank je wel he.
Het ergste vind ik nog dat ze hiermee menen 'moeilijk vindbare bugs' te voorkomen en in the process een workaround met gotos aandragen die een heel scala aan zo mogelijk nog moeilijker vindbare bugs mogelijk maakt.

Somniferous whisperings of scarlet fields. Sleep calling me and in my dreams i wander. My reality is abandoned (I traverse afar). Not a care if I never everwake.


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
farlane schreef op dinsdag 23 januari 2007 @ 14:18:
[...]


Het ergste vind ik nog dat ze hiermee menen 'moeilijk vindbare bugs' te voorkomen en in the process een workaround met gotos aandragen die een heel scala aan zo mogelijk nog moeilijker vindbare bugs mogelijk maakt.
Idd. Als ze het duidelijker hadden willen maken haden ze beter als je een fall-trough wil hebben het continue; keyword kunnen verplichten. Op die manier verplicht je alleen dat je duidelijk aan moet geven wat je aan het einde van een case wilt doen. Als je die dan weg laat dan hoogstens een compiler warning geven ofzo.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”

Pagina: 1