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
Mc FettoMedlem sedan nov. 20022 355 inlägg 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!
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?
Mc FettoMedlem sedan nov. 20022 355 inlägg 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! :)
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.
tackar clarkbones
VB gillar inte oArrNames(0,i), det som kommer efter oArrNames.
Number of indices exceeds the number of dimensions of the indexed array.
PDahlenMedlem sedan apr. 2004778 inlägg 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.
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)
DinoMedlem sedan sep. 20011 914 inlägg Kan du visa koden för när du fyller din array.
sr = File.OpenText("test.txt")
arr = Split(sr.ReadLine, ",")
For i = 0 To arr.GetUpperBound(0)
arr(i) = sr.ReadLine
Next
sr.Close()
DinoMedlem sedan sep. 20011 914 inlägg Och hur ser textfilen ut?
Texten är följande:
Daniel, 25,5
Peter, 35,6
jonas, 45,5
DinoMedlem sedan sep. 20011 914 inlägg 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()
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.
DinoMedlem sedan sep. 20011 914 inlägg 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.
inga felmedelanden nu.
bara att inget kommer ut i textboxen. line är nothing när jag kör
PDahlenMedlem sedan apr. 2004778 inlägg Du måste lägga antingen line = "nånting" eller line = sr.ReadLine() innan Do loopen annars kommer du aldrig in i den.
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.