Spenzer Skrevet 26. november 2007 Del Skrevet 26. november 2007 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 ? Takker Lenke til kommentar
GeirGrusom Skrevet 26. november 2007 Del Skrevet 26. november 2007 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
Spenzer Skrevet 26. november 2007 Forfatter Del Skrevet 26. november 2007 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
GeirGrusom Skrevet 26. november 2007 Del Skrevet 26. november 2007 (endret) 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 26. november 2007 av GeirGrusom Lenke til kommentar
Spenzer Skrevet 26. november 2007 Forfatter Del Skrevet 26. november 2007 (endret) 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 26. november 2007 av Spenzer Lenke til kommentar
aadnk Skrevet 26. november 2007 Del Skrevet 26. november 2007 Fjern parantesene rundt funksjonskallet: If optReise1.Value Then ReisTil optReise1.Caption, CSng(lblReisePris1.Caption) End If For øvrig vil jeg anbefale bruk av innskudd! Dette gjør koden langt mer oversiktlig og enklere å håndtere. Lenke til kommentar
Spenzer Skrevet 26. november 2007 Forfatter Del Skrevet 26. november 2007 Takk skal dere ha xD nå funker programmet fett =D samt jeg følgte jeg lærte mer Lenke til kommentar
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå