Avatar billede kapedersen Nybegynder
25. februar 2010 - 01:17 Der er 6 kommentarer og
1 løsning

læs komma fil?

Hej

Jeg har en kommafil som følger :

10;sko;1234,22
20;buks;2354,40
30;sokker;32,90
osv.

og jeg ønsker at søge efter et bestemt værdi i første felt i hver linje og så skrive hvert felt i den fundne linje ind i hver sin text box 

jeg har prøvet med følgene code, men dur kun med den første række

Public Sub readfile()


        Dim strfilename As String
        Dim num_rows As Long
        Dim num_cols As Long
        Dim x As Integer
        Dim y As Integer
        Dim strarray(1, 1) As String

        strfilename = Form1.optionfile

        ' Load the file.
        'strfilename = "test.csv"
        'strfilename = "C:\Documents and Settings\Kim Almind Pedersen\Skrivebord\Tekst.txt"
        'Check if file exist
        If File.Exists(strfilename) Then
            Dim tmpstream As StreamReader = File.OpenText(strfilename)
            Dim strlines() As String
            Dim strline() As String

            'Load content of file to strLines array
            strlines = tmpstream.ReadToEnd().Split(Environment.NewLine)

            ' Redimension the array.
            num_rows = UBound(strlines)
            strline = strlines(0).Split(";")
            num_cols = UBound(strline)
            ReDim strarray(num_rows, num_cols)

            ' Copy the data into the array.
            For x = 0 To num_rows
                strline = strlines(x).Split(";")
                For y = 0 To num_cols
                    strarray(x, y) = strline(y)
                    If strline(y) = Form1.TextBox1.Text Then
                        Form1.TextBox2.Text = Form1.TextBox2.Text & vbCrLf & strline(0) & "," & strline(1) & "," & strline(2)

                    End If
                Next

            Next


        End If

    End Sub
Avatar billede arne_v Ekspert
25. februar 2010 - 01:43 #1
Jeg ville omorganisere koden en del.

Til inspiration:

Imports System
Imports System.IO
Imports System.Collections.Generic

Namespace E
    Public Class Data
        Public Property V1() As String
            Get
                Return m_V1
            End Get
            Set
                m_V1 = Value
            End Set
        End Property
        Private m_V1 As String
        Public Property V2() As Decimal
            Get
                Return m_V2
            End Get
            Set
                m_V2 = Value
            End Set
        End Property
        Private m_V2 As Decimal
    End Class
    Public Class Program
        Public Shared Function Find(fnm As String, v0 As String) As List(Of Data)
            Dim res As New List(Of Data)()
            Using sr As New StreamReader(fnm)
                Dim line As String
                line = sr.ReadLine()
                While line IsNot Nothing
                    Dim flds As String() = line.Split(";"C)
                    If flds.Length = 3 AndAlso flds(0) = v0 Then
                        res.Add(New Data() With { .V1 = flds(1), .V2 = Decimal.Parse(flds(2)) })
                    End If
                    line = sr.ReadLine()
                End While
            End Using
            Return res
        End Function
        Public Shared Sub Main(args As String())
            For Each d As Data In Find("C:\test.csv", "20")
                Console.WriteLine(d.V1 & " " & d.V2)
            Next
            Console.ReadKey()
        End Sub
    End Class
End Namespace
Avatar billede kapedersen Nybegynder
26. februar 2010 - 13:14 #2
Tak arne_v

hvordan gør jeg lige med din code hvis jeg skal kalde det med en knap?

jeg har en form med to text boxe en hvor jeg taste det ind jeg vil søge på og en hvor jeg printer linien
Avatar billede arne_v Ekspert
26. februar 2010 - 17:24 #3
Console.WriteLine(d.V1 & " " & d.V2)

skal vel aendres til:

tb.Text = d.V1 & " " & d.V2
Avatar billede kapedersen Nybegynder
27. februar 2010 - 19:22 #4
Hvis jeg gerne vil ha hver værdi mellem kommaer ind i en variabel
er det så også måden at gører det på?
Jeg kan ikke rigtigt få det til at kører, jeg har ikke arbejdet med namespace før, kan du lave et screenprint af hvordan du laver det i vb?
Avatar billede arne_v Ekspert
28. februar 2010 - 00:15 #5
d.V1 & "," & d.V2

o.s.v.
Avatar billede arne_v Ekspert
28. februar 2010 - 00:16 #6
Namespaces gør hverken fra eller til i denne sammenhæng.
Avatar billede arne_v Ekspert
26. april 2010 - 03:50 #7
all set ?
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

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