og i øvrigt: hvad betyder "Men det virker jo ikke når der ikke er noget i arrTest(0)"? Hvis du laver en split, så vil der vel altid være mindst et element (altså element 0)...?
Åh ja, det er jo et 2D-array - det havde jeg ikke lige lagt mærke til... :(
Nå, men humlen må vel være (uanset hvormange dimensioner der er i dit array) at når du vil vide hvormange elementer der er i det, så kan du finde ud af det med .Length-egenskaben... kan det ikke bruges til noget...? Har jeg stadig ikke fattet hvad det er du har problemer med? Jeg famler lidt efter noget mere information om hvad det er du arbejder på (kode) og hvad det er du rent faktisk vil opnå. Håber du kan hjælpe mig med at hjælpe dig :)
Såvidt jeg kan se, så vil du enten få en fejl i denne linie
arrTest = Split(dv(0)("Test"), ";")
hvis der ikke er noget element der hedder dv(0)("Test"). Hvis der er noget, men det er en tom streng vil du få et array ud af linien og dermed vil testen
If arrTest(0) = "" Then
være ok, da selv en tom streng der splittes vil give en tom streng i element 0 af det resulterende array... Derfor forstår jeg ikke hvori dit problem består ud fra det du siger :)
arne_v >> jeg mener det is nothing istedet for <> nothing, men jeg får stadig fejlen uanset hvilken jeg bruger og det er jo fordi der ikke er et arrTest(0) eller 1,2 for den sags skyld.
softspot >> Forfra, jeg vil ganske enkelt trække et ; sepperet tal fra mit dataview og smide det i et array for at kunne bruge det til visning i et tekstfelt. nogle gange er der ikke noget at vise andre gange 1, 2 el. 3 tal som jo så ligger i mit array, men jeg bliver nød til at tjekke op på om de enkelte indeholder noget, altså om f.eks arrTest(1) holder på et tal
Vil den streng du skal separere altid indeholde det samme antal semikoloner (f.eks. "1;2;3;" eller "1;;;"), eller vil der kun være semikolon efter behov (f.eks. "1" eller "1;2"). Hvis det sidste er tilfældet (hvilket jeg ville synes var mest naturligt, men hey - der kan jo være andre grunde til at det er anderledes :)), så skulle du kunne benytte den test jeg har fablet om tidligere, nemlig .Length på arrTest. Altså noget i stil med:
if arrTest.Length >= 1 and arrTest(0) <> "" then bla bla blah end if if arrTest.Length >= 2 and arrTest(1) then mere bla blah end if if arrTest.Length >= 3 and arrTest(2) then endnu mere bla blah end if
if arrTest.Length >= 1 and arrTest(0) = "" then bla bla blah end if if arrTest.Length >= 2 and arrTest(1) = "" then mere bla blah end if if arrTest.Length >= 3 and arrTest(2) = "" then endnu mere bla blah end if
Public Class TestClass Public Shared Sub Main(ByVal args As String()) Dim a(3) As String a(0) = "ABC" a(1) = "XYZ" Dim i As Integer For i = 0 To 2 If a(i) <> Nothing Then Console.WriteLine("a(" & i & ") = " & a(i)) Else Console.WriteLine("a(" & i & ") = Nothing") End If Next End Sub End Class
når du skal teste på arrayets længde er det selvfølgelig .Length du skal bruge
må jeg iøvrigt foreslå at du holder dig lang væk fra Microsoft.VisualBasic namespacet
så Split bruges som:
Imports System
Module Main Sub Main() Dim s As String = "a;b;;d" Dim parts() As String = s.Split(";".ToCharArray) Dim i As Integer For i = 0 To parts.Length - 1 If parts(i) <> "" Then Console.WriteLine(parts(i)) Else Console.WriteLine("mangler") End If Next End Sub End Module
arne_v >> Cool med nogle eksempler, men hvad mener du med at jeg ikke skal benytte namespacet ?
Grunden til at jeg benytter mig af if sætninger er fordi jeg har 3 textboxe med hvert deres id hvor så de 3 tal skal smides i hver deres, men det kunne da være sjovt at høre om jeg kunne komme om ved det på en anden måde end med if sætninger ?
Microsoft.VisualBasic namespacet indeholder alle de VB6/VBS kompatible funktioner: Split, Mid etc.
Men jeg vil klart anbefale at bruge de ægte .NET metoder (String .Split og String .Substring) fremfor dem
Synes godt om
Ny brugerNybegynder
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.