Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

Visual Basic hulp gezocht. :)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey, ik moet voor school wat opdrachten maken in Visual Basic. Nu loop ik vast bij de volgende opdracht:
Schrijf een programma, dat twee getallen van plaats laat wisselen. Dus bijv:

33 & 117 wordt dan 117 & 33

Gebruik de volgende schermindeling
Afbeeldingslocatie: http://i.imgur.com/KAe2a.png
Ik heb de volgende code gebruikt om dit te doen, maar om een of andere reden wordt getal 2 hetzelfde als getal 1 en verandert getal 1 verder niet. Ik neem aan dat de string dynamisch meeverandert en dus daarom geen juist getal plaatst in de textbox. Ik heb echter geen idee hoe ik een string maak die een textbox maar 1 keer leest en daarna niet meer verandert van waarde. Een constant string kon ik helaas niet 'koppelen' aan een textbox. :(

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Class Form1

    Dim getal1string As String

    Private Sub G1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles G1.TextChanged

        getal1string = G1.Text
    End Sub

    Private Sub G2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles G2.TextChanged


    End Sub

    Private Sub BtnDnE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDnE.Click

        G2.Text = getal1string
        G1.Text = G2.Text

    End Sub
End Class

[ Voor 0% gewijzigd door Woy op 21-11-2012 17:38 ]


  • Ryan_
  • Registratie: Februari 2009
  • Laatst online: 11:39
Hier stond onzin :X . Zie Phyxion in "Visual Basic hulp gezocht. :)"

[ Voor 86% gewijzigd door Ryan_ op 21-11-2012 17:40 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Probeer eens stap voor stap te begrijpen wat er nu gebeurt ( Ryan_ ook want die zal op dezelfde manier fout gaan ;) )

Welke waarde heeft G2.Text initieel?
Welke waarde heeft G2.Text nadat je getal1string daar aan toe kent?
Welke waarde ken je dan toe aan G1.Text?

Welke waardes zitten er nu in G2.Text en G1.Text?

Op zich ben je al een stukje op weg door gebruik te maken van een tijdelijke variabele ( Al hoef je die niet bij elke wijziging aan te passen, dat kan ook gewoon op het moment dat je de waardes wil verwisselen ), alleen doe je nu nog wat in de verkeerde volgorde.

ps:
Je kan code duidelijker leesbaar maken door gebruik te maken van de [code=taal][/] tag zoals Ryan_ ook al laat zien.

[ Voor 12% gewijzigd door Woy op 21-11-2012 17:36 ]

“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.”


  • Phyxion
  • Registratie: April 2004
  • Niet online

Phyxion

_/-\o_

Ryan_ schreef op woensdag 21 november 2012 @ 17:31:
Visual Basic:
1
2
3
4
5
6
Private Sub BtnDnE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDnE.Click

G1.Text = G2.Text
G2.Text = G1.Text

End Sub
Dat gaat natuurlijk nooit werken, nu krijg je twee keer hetzelfde (de tekst die in G2 staat). Men lost dat op met een variabele.

Visual Basic:
1
2
3
4
Dim tmpText As String
tmpText = G2.Text
G2.Text = G1.Text
G1.Text = tmpText       


Geen idee of de syntax 100% is, nooit VB aangeraakt :+

[ Voor 5% gewijzigd door Phyxion op 21-11-2012 17:38 ]

'You like a gay cowboy and you look like a gay terrorist.' - James May


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
:/ als je gewoon direct een compleet uitgewerkt antwoord geeft leert de TS er natuurlijk nooit wat van.

“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.”


Verwijderd

Topicstarter
Woy schreef op woensdag 21 november 2012 @ 17:35:
Probeer eens stap voor stap te begrijpen wat er nu gebeurt ( Ryan_ ook want die zal op dezelfde manier fout gaan ;) )

Welke waarde heeft G2.Text initieel?
Welke waarde heeft G2.Text nadat je getal1string daar aan toe kent?
Welke waarde ken je dan toe aan G1.Text?

Welke waardes zitten er nu in G2.Text en G1.Text?

Op zich ben je al een stukje op weg door gebruik te maken van een tijdelijke variabele ( Al hoef je die niet bij elke wijziging aan te passen, dat kan ook gewoon op het moment dat je de waardes wil verwisselen ), alleen doe je nu nog wat in de verkeerde volgorde.

ps:
Je kan code duidelijker leesbaar maken door gebruik te maken van de [code=taal][/] tag zoals Ryan_ ook al laat zien.
Voortaan zal ik de code tags gebruiken. ^^

Nuja, laten we stellen dat G1 de waarde 4 heeft en G2 de waarde 8 heeft. Als ik dan een string aanmaak
code:
1
2
3
4
Dim variabele as string
variabele = G2.Text
G2.Text = G1.Text
G1.Text = variabele

G2.Text = G1.Text <--- Hier gaat het fout denk ik, want als G2.Text de waarde van G1.Text krijgt, gebeurt dan niet hetzelfde met de string?

En natuurlijk bedankt voor jullie tijd en reacties. =P

  • xh3adshotx
  • Registratie: Oktober 2011
  • Laatst online: 28-02-2023
Verwijderd schreef op woensdag 21 november 2012 @ 18:06:
[...]

Voortaan zal ik de code tags gebruiken. ^^

Nuja, laten we stellen dat G1 de waarde 4 heeft en G2 de waarde 8 heeft. Als ik dan een string aanmaak
code:
1
2
3
4
Dim variabele as string
variabele = G2.Text
G2.Text = G1.Text
G1.Text = variabele

G2.Text = G1.Text <--- Hier gaat het fout denk ik, want als G2.Text de waarde van G1.Text krijgt, gebeurt dan niet hetzelfde met de string?

En natuurlijk bedankt voor jullie tijd en reacties. =P
Zoals Woy het zegt moet het goed gaan. Waar het mis ging bij jou was:


Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
Public Class Form1

    Dim getal1string As String

    Private Sub G1_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles G1.TextChanged

        getal1string = G1.Text 
    End Sub

    Private Sub G2_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles G2.TextChanged


    End Sub

    Private Sub BtnDnE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDnE.Click

        G2.Text = getal1string
        G1.Text = G2.Text

    End Sub
End Class


Je kopieert de inhoud van 1 textbox naar een string [goed]
Je geeft G2 de inhoud van de string [goed]
Je maakt G1 de inhoud van G2 en dus de string [fout]

DIt moet goed gaan

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
Public Class Form1

    Dim getal1string As String


    Private Sub BtnDnE_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BtnDnE.Click
        getal1string = G1.Text
        G1.Text = G2.Text        
        G2.Text = getal1string

    End Sub
End Class


Dit gaat goed omdat je bij getal1string de waarde van G1 opsla waarna je G1 in je 2de getal (G2) verander. Pas daarna verander je G2 in je eerste getal vanuit getal1string.

Tevens is een variable niks meer dan een kopie van een waarde van iets op een bepaald moment. Die waarde verandert dus niet mee als je de inhoud van je textbox kopieer.

[ Voor 4% gewijzigd door xh3adshotx op 21-11-2012 18:13 ]


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Verwijderd schreef op woensdag 21 november 2012 @ 18:06:
[...]

G2.Text = G1.Text <--- Hier gaat het fout denk ik, want als G2.Text de waarde van G1.Text krijgt, gebeurt dan niet hetzelfde met de string?
Het zijn allemaal strings. ;)

Het grappige is dat de code in deze post wél klopt maar niet overeenkomt me de code uit je topicstart.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Caelorum
  • Registratie: April 2005
  • Laatst online: 00:38
Verwijderd schreef op woensdag 21 november 2012 @ 18:06:
[...] G2.Text = G1.Text <--- Hier gaat het fout denk ik, want als G2.Text de waarde van G1.Text krijgt, gebeurt dan niet hetzelfde met de string? [...]
Ik denk dat je jezelf ook even goed moet inlezen over het verschil tussen value types en reference types: MSDN: 7.1 Value Types and Reference Types
Hoewel de informatie op deze pagina wat kan verschillen met jouw situatie (vb.net vs. vb) zal het idee zeer waarschijnlijk hetzelfde zijn.
Pagina: 1