---
title: "problem i VB.Net"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/114225-problem-i-vb-net"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "sorensson"
published: "2004-10-23T17:31:15.000Z"
updated: "2004-10-23T21:07:20.000Z"
replies: 22
views: 515
page: 1
pages: 2
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/114225-problem-i-vb-net"
---

# problem i VB.Net

_Sida 1 av 2._

## #1 — sorensson, 2004-10-23T17:31Z

Hej! Jag har ett problem.

Jag har läst in text i en array från en fil.
Texten är följande:
Daniel, 25,5
Peter, 35,6
jonas, 45,5

nu vill jag skriva ut de tal som är större än 30 (samt namnet) i en textbox när jag klickar på en knapp.

Hur går jag tillväga då? hur skall jag göra för att hitta talen som är större än 30 i arrayen? hur skall jag dela upp arrayen då?

Väldigt tacksam för svar // Daniel

Permalänk: https://www.webforum.nu/p/114225

## #2 — Mc Fetto, 2004-10-23T17:34Z

Vet inte om detta är det mest effektiva sättet men, du kan som du säger spara all data i en array, sedan loopar du igenom arrayen tar ut värdet genom att parsa den delen som är efter komma-tecknet (plus ett tecken), gör om det till en double och gör en jämförelse. Om talet är större än trettio så får du parsa ut namnet ur strängen och appenda den till din textbox!

Permalänk: https://www.webforum.nu/p/1467316

## #3 — sorensson, 2004-10-23T17:41Z

Tack för svaret.

du vill inte ge lite kodexempel på hur du menar jag skall lösa det med en array?

på vilket sätt skulle du lösa det, om du inte skulle använda en array?

Permalänk: https://www.webforum.nu/p/1467319

## #4 — Mc Fetto, 2004-10-23T17:47Z

Har ingen möjlighet att skapa kod nu, men du får använda de funktioner som finns till klassen string för att först ta ut var det första kommat är. Sedan ta ut delsträngen med talet i genom indexet på kommat plus ett tecken. Använda dig av Convert.Double( "delsträngen" ) för att få ut strängen i form av en double. Sedan är det bara att jämföra talet med 30! :)

Permalänk: https://www.webforum.nu/p/1467323

## #5 — clarkbones, 2004-10-23T19:03Z

Nu antar jag att du fått in värdena i din array som jag kallar oArrNames...

```

For i=0 to oArrNames.length-1

If convert.ToDouble(oArrNames(1,i))>30 then
TextBox1.Text=Textbox1.text & oArrNames(0,i) & " " & oArrNames(1,i)
End If

Next
```

Otestad kod, men det är i a f en utgångspunkt. Koden lägger du i knappens clickevent eller på något annat lämpligt ställe.

Permalänk: https://www.webforum.nu/p/1467361

## #6 — sorensson, 2004-10-23T19:19Z

tackar clarkbones

VB gillar inte oArrNames(0,i), det som kommer efter oArrNames.

Permalänk: https://www.webforum.nu/p/1467365

## #7 — Mc Fetto, 2004-10-23T19:20Z

felmeddelande?

Permalänk: https://www.webforum.nu/p/1467367

## #8 — sorensson, 2004-10-23T19:22Z

Number of indices exceeds the number of dimensions of the indexed array.

Permalänk: https://www.webforum.nu/p/1467369

## #9 — PDahlen, 2004-10-23T19:49Z

Hur ser raden ut som felet kommer på?
Det låter som att du dimensionerar din array och sen stoppar in mer än du dimensionerat.

Permalänk: https://www.webforum.nu/p/1467380

## #10 — sorensson, 2004-10-23T19:54Z

Hej

så här ser det ut

For i = 0 To arr.Length - 1

            If Convert.ToDouble(arr(1, i)) \> 30 Then
                TBSave.Text = arr(0, i) & " " & arr(1, i)

            End If

        Next

blir fel i detta uttrycken arr(1, i)

Permalänk: https://www.webforum.nu/p/1467385

## #11 — Dino, 2004-10-23T19:58Z

Kan du visa koden för när du fyller din array.

Permalänk: https://www.webforum.nu/p/1467386

## #12 — sorensson, 2004-10-23T20:07Z

sr = File.OpenText("test.txt") 
              arr = Split(sr.ReadLine, ",")     
          
        For i = 0 To arr.GetUpperBound(0)
            arr(i) = sr.ReadLine
        Next
        sr.Close()

Permalänk: https://www.webforum.nu/p/1467390

## #13 — Dino, 2004-10-23T20:19Z

Och hur ser textfilen ut?

Permalänk: https://www.webforum.nu/p/1467393

## #14 — sorensson, 2004-10-23T20:23Z

Texten är följande:
Daniel, 25,5
Peter, 35,6
jonas, 45,5

Permalänk: https://www.webforum.nu/p/1467399

## #15 — Dino, 2004-10-23T20:30Z

```
Dim sr As StreamReader = New StreamReader("TestFile.txt")
Dim line As String
Do
   line = sr.ReadLine()
   dim s() as string = line.Split(',')
   if double.Parse(s(1])) > 30 then
      TBSave.Text &= " " & line 
   end if
Loop Until line Is Nothing
sr.Close()
```

Permalänk: https://www.webforum.nu/p/1467404

## #16 — sorensson, 2004-10-23T20:40Z

tackar

den klagar på den här raden: dim s() as string = line.Split(',')

felmedelande: Additional information: Object reference not set to an instance of an object.

Permalänk: https://www.webforum.nu/p/1467408

## #17 — Dino, 2004-10-23T20:46Z

Nu då.

```
Dim sr As StreamReader = New StreamReader("TestFile.txt")
Dim line As String
Do While line Not Is Nothing
   line = sr.ReadLine()
   dim s() as string = line.Split(',')
   if double.Parse(s(1])) > 30 then
      TBSave.Text &= " " & line 
   end if
Loop
sr.Close()
```

Kanske får byta plats på line och Not.

Permalänk: https://www.webforum.nu/p/1467412

## #18 — sorensson, 2004-10-23T20:54Z

inga felmedelanden nu.
 bara att inget kommer ut i textboxen. line är nothing när jag kör

Permalänk: https://www.webforum.nu/p/1467414

## #19 — PDahlen, 2004-10-23T20:56Z

Du måste lägga antingen line = "nånting" eller line = sr.ReadLine() innan Do loopen annars kommer du aldrig in i den.

Permalänk: https://www.webforum.nu/p/1467417

## #20 — sorensson, 2004-10-23T21:01Z

ok nu ligger line = sr.ReadLine() före loopen.
men då kommer kommer samma fel upp igen. dim s() as string = line.Split(',')

felmedelande: Additional information: Object reference not set to an instance of an object.

Permalänk: https://www.webforum.nu/p/1467418

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/114225-problem-i-vb-net  
Nästa sida: https://www.webforum.nu/amne/dotnet/114225-problem-i-vb-net/page2.md
