Gå til innhold

trekke fra sum i 1 caption fra en annen caption :P eks i topic.


Anbefalte innlegg

Prøver og lage et program, og når de reiser til en annen by (det er et spill) så vil de bli trekt fra det på hånd, med det reisen koster.

 

Her ser dere hele den koden:

Reise1:

If lblPenger.Caption >= lblReisePris1.Caption Then

lblPenger.Caption - lblReisePris1.Caption

DoEvents

lblBy.Caption = optReise1.Caption

DoEvents

MsgBox "Du er nå i " & optReise1.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

Det som blir feil er den linja her:

lblPenger.Caption - lblReisePris1.Caption

 

Den skal trekke i fra det prisen er, med antall penger en har på hånd.

 

Noen som vet hva som må gjøres :p ?

 

Takker :)

Lenke til kommentar
Videoannonse
Annonse

Du burde lese litt om variabler, datatyper og konvertering.

 

lblBy.Caption er av typen "string" selvom Visual Basic konverterer disse for deg automatisk, men det er dårlig skikk å ikke gjøre det eksplisitt.

 

I VB6 bruker du CSng(lblReisePris1.Caption) eller Val(lblReisePris1.Caption) for å gjøre om en string til et flyttall.

 

Men det lønner seg ikke å bruke GUI elementer for å lagre informasjon i, dette fordi det gjør det mye vanskeligere hvis du f.eks. vil lagre verdiene, hente verdiene, eller bruke flere vinduer.

Lenke til kommentar

Får en feil om at jeg aldri har nok penger, uansett om jeg har 10 ganger mer enn det beløpet jeg trenger, her ser dere hele koden for Reise funksjonen.

 

Private Sub cmdReis_Click()

If optReise1.Value = True Then

GoTo Reise1

ElseIf optReise2.Value = True Then

GoTo Reise2

ElseIf optReise3.Value = True Then

GoTo Reise3

ElseIf optReise4.Value = True Then

GoTo Reise4

ElseIf optReise5.Value = True Then

GoTo Reise5

Else

MsgBox "Du må velge en by!", vbExclamation, "Feil"

End If

 

Reise1:

If lblPenger.Caption >= lblReisePris1.Caption Then

Val (lblReisePris1.Caption) - lblReisePris1.Caption

DoEvents

lblBy.Caption = optReise1.Caption

DoEvents

MsgBox "Du er nå i " & optReise1.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

Reise2:

If lblPenger.Caption >= lblReisePris2.Caption Then

Val (lblReisePris1.Caption) - lblReisePris2.Caption

DoEvents

lblBy.Caption = optReise2.Caption

DoEvents

MsgBox "Du er nå i " & optReise2.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

Reise3:

If lblPenger.Caption >= lblReisePris3.Caption Then

Val (lblReisePris1.Caption) - lblReisePris3.Caption

DoEvents

lblBy.Caption = optReise3.Caption

DoEvents

MsgBox "Du er nå i " & optReise3.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

Reise4:

If lblPenger.Caption >= lblReisePris4.Caption Then

Val (lblReisePris1.Caption) - lblReisePris4.Caption

DoEvents

lblBy.Caption = optReise4.Caption

DoEvents

MsgBox "Du er nå i " & optReise4.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

Reise5:

If lblPenger.Caption >= lblReisePris5.Caption Then

Val (lblReisePris1.Caption) - lblReisePris5.Caption

DoEvents

lblBy.Caption = optReise5.Caption

DoEvents

MsgBox "Du er nå i " & optReise5.Caption & ", velkommen!", vbOKOnly, "By informasjon"

Else

MsgBox "Du har ikke nok penger!", vbCritical, "Feil"

End If

 

End Sub

Lenke til kommentar

Lag en funksjon istedet

 

Public Sub ReisTil(sted As String, pris As Single)
 Dim penger As Single
penger = Val(lblPenger.Caption)

 If penger >= pris Then
penger = penger - pris
lblBy.Caption = sted
lblPenger.Caption = Str(penger)
MsgBox "Du er nå i " & sted & ", velkommen!", vbOkOnly, "By informasjon"
 Else
MsgBox "Du har ikke nok penger!", vbCritical, "Feil"
 End If
End Sub

Private Sub cmdReis_Click()
 If optReise1.Value Then ReisTil(optReise1.Caption, CSng(lblReisePris1.Caption))
 If optReise2.Value Then ReisTil(optReise2.Caption, CSng(lblReisePris2.Caption))
 If optReise3.Value Then ReisTil(optReise1.Caption, CSng(lblReisePris3.Caption))
 If optReise4.Value Then ReisTil(optReise1.Caption, CSng(lblReisePris4.Caption))
 If optReise5.Value Then ReisTil(optReise1.Caption, CSng(lblReisePris5.Caption))
End Sub

 

Egentlig så kunne dette blitt gjort mye bedre i utgangspunktet, men det er noe du kommer til å lære etterhvert.

 

edit: vil også anbefale deg å ta en titt på VB.NET eller C#

VB6 er ikke lenger støttet av Microsoft, og jeg vedder for at du har en piratkopiert versjon.

VB.NET og C# er gratis også, noe VB6 ikke er.

http://www.microsoft.com/express/

Endret av GeirGrusom
Lenke til kommentar

Prøvde noe slik som du sa, men fikk feil.

 

Er kun den reise funksjonen jeg sliter med og, så skal alt funke.

 

If optReise1.Value Then

ReisTil(optReise1.Caption, CSng(lblReisePris1.Caption))

Else

End If

 

Expected: =

Endret av Spenzer
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...