Wat is sneller? Function / Sub

Status
Niet open voor verdere reacties.

stoetel123

Gebruiker
Lid geworden
5 mrt 2009
Berichten
41
Ik ben een programma aan het maken waarbij verschillende knoppen dezelfde functie moeten uitvoeren. Om tijd te besparen, en het programma sneller te laten lopen, zit ik te twijfelen tussen twee methodes: 'Private Function' en 'Private Sub'. Nu heb ik de vraag: Welke van de twee zal sneller laden?

Mitchell van Bijleveld
 
Laatst bewerkt:
Ik denk niet dat daar echt verschil in zit, als dat wel het geval zou zijn spreek je over een 1000ste van een seconde. Het gaat hem ook meer om te toepassing denk ik
 
Laatst bewerkt:
Wat ik bedoel met toepassing is dat je een functie gebruikt om een waarde terug te krijgen dit kun je niet met een sub (return)

Edit:

Idd krolik
 
Laatst bewerkt:
Je kunt sub en functie niet met elkaar vergelijken en willekeurig gebruiken. Een sub voert een handeling uit.
Een functie krijgt een input, verwerkt die en geeft een output terug.
 
Laatst bewerkt:
Dan moet ik dus de sub gebruiken, want ik hoef geen 'output'. hij moet zeg maar alleen iets nakijken, of de namen kloppen en bestaan, dan is de Sub goed genoeg?
 
Ik had eigenlijk nog een vraag, alleen in een ander dinges, maar die is gesloten, dus hier de tweede vraag: Ik ben een programma aan het maken waarbij ik een hele rij moet langsgaan om te bepalen wat hij moet doen, wleke functie, etc. Nu weet ik dat er twee manieren zijn: het 'If'-Statement (If .... then, else(if), End if) en het 'Case'-statement (Select Case, Case 1, Case 2, End Select). Nu is het misschien een rare, en domme vraag, maar volgens mij is het Case-statement sneller of vergis ik mij hierin? Hier stond hij: http://www.helpmij.nl/forum/showthr...tatement-Case-statement?p=4603831#post4603831
 
Laatst bewerkt:
Je moet dus wel een functie gebruiken. Je hebt een input (naam of waarde van iets). Vervolgens kijkt het programma of deze waarde juist of aanwezig is. Aan de hand daarvan wordt een waarde geretourneerd (waar of niet waar = true or false). En daarmee wordt een taak uitgevoerd. En dit is de plaats voor het If...then...else... statement.
 
Select Case is volgens mij niet sneller. Maar het kan wel voor meer overzicht zorgen.
Waar wil je het precies voor gebruiken?
 
Lees zelf =)

Code:
Private Sub Login_Function()

        Select Case UsernameTextBox.Text = "" Or PasswordTextBox.Text = ""
            Case True
                Select Case UsernameTextBox.Text = "Administrator"
                    Case True
                        Select Case UsernameTextBox.Text = My.Settings.AdminPassword
                            Case True
                                MsgBox("LOGGED IN AS ADMIN")
                            Case False
                                MsgBox("Wrong Admin pass")
                        End Select
                    Case False
                        MsgBox("Een van de velden is incorrect ingevoerd." & vbNewLine & vbNewLine & "Controleer uw gegevens en probeer het opnieuw.", vbOKOnly)
                End Select
            Case False
                Select Case AdminCheckBox.Checked
                    Case True
                        Select Case PasswordTextBox.Text = My.Settings.AdminPassword
                            Case True
                                MsgBox("LOGGED IN AS ADMIN")
                            Case False
                                MsgBox("Wrong Admin pass")
                        End Select
                    Case False
                        Select Case UsernameTextBox.Text = "Administrator"
                            Case True
                                Select Case PasswordTextBox.Text = My.Settings.AdminPassword
                                    Case True
                                        MsgBox("LOGGED IN AS ADMIN")
                                    Case False
                                        MsgBox("Wrong Admin pass")
                                End Select
                            Case False
                                'Login procedure
                                Select Case UserListTableAdapter1.Login(UsernameTextBox.Text, PasswordTextBox.Text) = Nothing
                                    Case False
                                        MsgBox("Normal USER Correct Logged in!")
                                    Case True
                                        MsgBox("Een van de velden is incorrect ingevoerd." & vbNewLine & vbNewLine & "Controleer uw gegevens en probeer het opnieuw.", vbOKOnly)
                                End Select
                        End Select
                End Select
        End Select

    End Sub

Waarschijnlijk heel ingewikkeld, maar ik wil altijd dat de gebruiker weet wat er fout is, daarom die onderschijdingen van:
Code:
MsgBox("Wrong Admin pass")
en
Code:
MsgBox("Een van de velden is incorrect ingevoerd." & vbNewLine & vbNewLine & "Controleer uw gegevens en probeer het opnieuw.", vbOKOnly)
 
Oefff. Dat is wel een hele slecht leesbare code.
En ik zie hier het punt van 'Select Case' ook niet.

Kun je niet zoiets doen:

[cpp]If UsernameTextBox.Text = "xx" And PasswordTextBox.Text = "xx" Then
MsgBox("User")
ElseIf UsernameTextBox.text = "aa" And PaswordTextBox.Text = "aa" Then
MsgBox("Admin")
Else
MsgBox("Verkeerde wachtwoord en/of gebruikersnaam.")
End If[/cpp]

Gelijk een stuk overzichtelijker en makkelijker.
Waarom moet de gebruiker weten wat er fout is?
 
Code:
PasswordTextBox.Text = My.Settings.AdminPassword

Oei, Ik kan hier uit halen dat je het admin wachtwoord niet encrypted opslaat, ik weet niet hoe veilig je het wilt hebben maar dit is niet echt veilig op deze mannier
 
Sowieso is het in .NET niet veilig.
 
Dat .NET makkelijk te decompileren is (ondanks obfuscating).
Natuurlijk kun je het moeilijker maken met geëncrypteerde wachtwoorden.
 
Klopt, maar als je iets gaat opslaan via de settings komt het volgens mij in een xml bestand te staan en die kun je gewoon uitlezen.
 
Laatst bewerkt:
@stefanz: Ben ik met je eens.
 
Ik heb een gebruikerslijst in een DataBase staan, dat Adminpassword mag makkelijk leesbaarzijn, want is opzich niet zo heel belangrijk. Dus Wachtwoorden en/of gebruikersnamen kun je daar volgens mij niet in de code van het programma aflezen. Misschien is het inderdaad niet zo belangrijk dat de gebruiker weet wat hij fout doet. Dit is alleen een inlog programa'tje. De app waar het om gaat is een ander project. Ik will ook eigenlijk wel .NET af, maar C++ is met ieeets te moeilijk
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan