Avatar billede mega-hawk Nybegynder
17. oktober 2010 - 15:44 Der er 18 kommentarer og
1 løsning

konvetering fra tal til streng og streng til tal.

Jeg har dette ekspempel fra min bog (som iøvrigt ikke virker)

Module Module1

    Sub Main()

        Dim dato As DateTime
        dato = Convert.ToDateTime("2002-12-24")

        Dim streng As String
        streng = dato.ToLongDateString
        WriteLine(streng)

    End Sub

End Module


Men jeg har brug for at få konveteret en streng til tal og tilbage igen vil jeg tro.

Det er til et points system.

eks:

dim tal as integer

if player > computer then
  tal = tal + 1
    lblPoints.tekst="tal"
  else
  lblPoints ="0"
end if

Men det virker ikke.

Mener da det var sådan man gjorde i vb6 i de gode gamle dage ;o)
Avatar billede arne_v Ekspert
17. oktober 2010 - 15:50 #1
Dim v As Integer = 123
Dim S As String = v.ToString

----

Dim s As String = "123"
Dim v As Integer = Integer.Parse(s)
Avatar billede arne_v Ekspert
17. oktober 2010 - 15:51 #2
Den her er fra 2004:

http://www.eksperten.dk/guide/278

men kan måske stadig give lidt ideer!
Avatar billede arne_v Ekspert
18. oktober 2010 - 03:49 #3
og et svar
Avatar billede mega-hawk Nybegynder
18. oktober 2010 - 17:49 #4
Du Arne...

Jeg er jo lige igang med mit game her og æh... da har jeg så det her problem + kode

Dim comp As String
comp = Integer.Parse(computerPoints)

Resultat
Option strict on disallow  implicit conversions  from integer to string

Også selvom jeg tager den som dim comp as integer

og den her giver samme resultat
comp = Cstr(Convert.ToInt32(computerPoints))
Men så er jeg jo ikke meget hjulpet.
Og de er taget fra din artikel så nogen ide?

Den vil altså have jeg laver det sådan her
comp = Convert.ToInt32(computerPoints)
Avatar billede arne_v Ekspert
18. oktober 2010 - 17:53 #5
comp = Integer.Parse(computerPoints)

antager at:
  comp er en Integer
  computerPoints er en String
Avatar billede mega-hawk Nybegynder
18. oktober 2010 - 18:11 #6
ah ok.

Hvordan fortæller jeg så at ComputerPoints er en string som jeg vil have til at blive en Integer?

Som jeg forstår det skal jeg bruge dette eksempel

Eksempel:

String -> Byte/Short/Integer/Long
Brug Parse metoden eller Convert.ToXxxx.

Eksempel:

Dim sv As String = "123" 
Dim iv As Integer 
iv = Integer.Parse(sv)
eller 
iv = Convert.ToInt32(sv)

Men det virker ikke helt for mig...

"Der blev et par skridt mere til kina her"
Avatar billede arne_v Ekspert
18. oktober 2010 - 19:03 #7
Dim comp As Integer
comp = Integer.Parse(computerPoints)

vil jeg tro
Avatar billede mega-hawk Nybegynder
18. oktober 2010 - 19:23 #8
Ked af at sige det, men det har jeg også prøvet og det virker ikke, men jeg har også en teori om problemet er et helt andet sted, men er ikke sikker og ved ikke hvad problemet er.
Men tjek lige denne kode:

If computer > player Then
  Form1.lblwinner.Text = "Computeren vandt denne runde"

  MsgBox(computerPoints)

  computerPoints = computerPoints + 15

  MsgBox(computerPoints)

Den første Msgbox: 0
Den næste Msgbox : 15

Men når jeg så kører koden igen så så får jeg samme resultat
Så den gemmer altså ikke lige værdien af variablen ComputerPoints

Det er ihvertfald min teori ind til videre.
Avatar billede mega-hawk Nybegynder
18. oktober 2010 - 19:26 #9
MsgBox(computerPoints)

            computerPoints = computerPoints + 15

            MsgBox(computerPoints)

            computerPoints = computerPoints + 5

            MsgBox(computerPoints)

Så lander vi på 20 det er jo en start.
Men trykker jeg på knappen igen og min sub rutine køres starter vi igen på 0.

Er det fordi jeg har lavet det i en class eller?
Avatar billede mega-hawk Nybegynder
18. oktober 2010 - 19:53 #10
Ok her kommer så endnu en udvikling jeg håber det kan hjælpe dig mere end det hjælper mig.

        Dim computer, player, computerPoints As Integer
        Dim com, com1 As String

        Randomize()
        computer = CInt(90 * Rnd())
        player = CInt(9 * Rnd())

        If computer > player Then
            Form1.lblwinner.Text = "Computeren vandt denne runde"

            com = Form1.lblComputerPoints.Text
            MsgBox("Din label på form1 er " & com)

            com1 = CStr(Convert.ToInt32(com))

            MsgBox("Dette er værdien af computer points " & computerPoints)

            com = CStr(computerPoints)

            computerPoints = computerPoints + 10

            MsgBox("Dette er værdien efter computerPoints er lagt sammen med computerPoints " & computerPoints)

Ideen bag det var at tage værdien fra min label, convertere den til en int og så bruge den, men det virker ikke helt.

Som du kan se får jeg 3 msgboxe og de giver følgende resultater:

0
0
10

Så kører jeg den igen

10
0
10

Og derfra er det lige meget hvor mange gange jeg kører den igennem så bliver mine tal det samme. 10,0,10

Jeg håber at det evt kan gøre dig klogere.
For jeg synes jeg er midlertidlig løbet tør for ide'er
Avatar billede arne_v Ekspert
19. oktober 2010 - 03:05 #11
Jeg forstår slet ikke koden.

computerPoints opdateres ikke med computer

com1 = CStr(Convert.ToInt32(com))

kan forkortes til

com1 = com
Avatar billede mega-hawk Nybegynder
19. oktober 2010 - 16:57 #12
Du må undskylde arne, men så er det noget jeg har misforstået.

Meningen med denne kode som jeg så har misforstået var følgende:

' Her sætter jeg com til at være teksten på den label
com = Form1.lblComputerPoints.Text

'Her troede jeg så jeg fik den konveteret til en Int
og gemt i variablen com1
com1 = CStr(Convert.ToInt32(com))

men hvordan skal jeg så løse denne opgave?
Mener da ikke det var så svært i vb6 at konvetere en streng til int og så lægge et par tal til.....
Avatar billede arne_v Ekspert
19. oktober 2010 - 18:53 #13
com1 = CStr(Convert.ToInt32(com))

konverterer com til en integer og saa konverterer du den tilbage til en string

det er ganske nemt at konvertere men jeg kan ikke se pointen med at konvertere string->integer->string
Avatar billede mega-hawk Nybegynder
19. oktober 2010 - 19:14 #14
det er heller ikke sikker det er en pointe i det ;o)

I bund og grund søger jeg blot en kode som gider tage min ComputerPoints og plus dem med 1 når den vinder og det er det som jeg arbejder på.
Og synes det er lige meget hvad jeg gør så vil den ikke lægge et tal til min ComputerPoints...
Avatar billede arne_v Ekspert
19. oktober 2010 - 19:18 #15
Hvis du skal ligge 1 til en label saa:

minlabel.Text = (Integer.Parse(minlabel.Text) + 1).ToString
Avatar billede mega-hawk Nybegynder
19. oktober 2010 - 19:54 #16
Ville det undre dig hvis jeg siger at din kode virker ;o)

1000 Tak Arne

men en helt kort forklaring:

minlabel.Text = (Integer.Parse(minlabel.Text) + 1).ToString

Koden betyder at din label er lig med "integer.parse" som konveterer din txt til tal og så + 1 og så tilbage til en streng rigtig?
Avatar billede mega-hawk Nybegynder
19. oktober 2010 - 19:56 #17
kan man ALTID konvetere med .parse?
altså minLabel.text=(integer.parse(minLabel.text).toString
og    minLabel.text=(string.parse(minLabel.text).toInt
osv osv eller?
Avatar billede arne_v Ekspert
19. oktober 2010 - 20:00 #18
minlabel.Text er en String
Integer.Parse(minlabel.Text) er en Integer
(Integer.Parse(minlabel.Text) + 1) er stadig en Integer (bare 1 stoerre)
(Integer.Parse(minlabel.Text) + 1).ToString er en String
Avatar billede arne_v Ekspert
19. oktober 2010 - 20:02 #19
Ikke helt.

taltype.Parse(enstringvar) giver et tal

hvadsomhelst.ToString giver en string
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester