vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Schützen Sie Ihre Software vor Software-Piraterie - mit sevLock 1.0 DLL!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
txt Datei einlesen und Inhalt übergeben 
Autor: Nico05
Datum: 26.03.20 06:26

Hallo Forum,

ich versuche gerade den Inhalt einer txt Datei auszulesen und den Inhalt an eine txtBox und an Labels zu übergeben.

Hier mal mein Ansatz:

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles _
  Button1.Click
 
        With OpenFileDialog1
            .InitialDirectory = "C:\Test\"
            .CheckFileExists = True
            .Filter = "Datendatei |*.txt"
 
        End With
 
        If OpenFileDialog1.ShowDialog = _
           Windows.Forms.DialogResult.Cancel Then Exit Sub
 
        Dim flines() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
 
            If parts(0) = "Zeile1" Then TextBox1.Text = parts(1)
            If parts(0) = "Zeile2" Then TextBox2.Text = parts(1)
            If parts(0) = "Zeile3" Then TextBox3.Text = parts(1)
            If parts(0) = "Zeile4" Then TextBox4.Text = parts(1)
 
        Next i
 
 
    End Sub
Wie kann ich das Suchwort Zeile1 .... noch in ein Label übergeben ?

Bzw. wie ist es möglich ohne Suchwort automatisch den Inhalt der Zeilen zu übergeben ?
Beispiel
1 Zeile Otto=rot
Otto = Label1.text Textbox1.Text = rot

Schönen Tag noch
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Datei einlesen und Inhalt übergeben 
Autor: minimalist
Datum: 26.03.20 08:35

Du musst 2 mal splitten:
Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
Dim str As String = "Zeile1 Otto=rot"
Dim parts() As String = str.Split("="c)
Dim nstr As String = parts(0)
Dim parts1() As String = nstr.Split(" "c)
TextBox1.Text = parts1(1)
Label1.Text = parts(1)
End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Datei einlesen und Inhalt übergeben 
Autor: Manfred X
Datum: 26.03.20 15:42

Hallo!

Du benötigst eine Routine, die den Inhalt und Aufbau der geladenen Datei prüft,
ehe mit Zuweisungen an Controls begonnen werden kann.
- Zahl der Zeilen
- Aufbau der einzelnen Zeile (Anzahl der Split-Abschnitte)
- Vorhandensein des 'Suchwortes' in jeder Zeile
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Datei einlesen und Inhalt übergeben 
Autor: Nico05
Datum: 26.03.20 19:54

Hallo Manfred,

kannst du da ein kleines Beispiel mit der Routine geben ?

Das mit Zahl der Zeilen habe ich so gelöst.
Dim zeilen() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
        Label5.Text = UBound(zeilen) + 1
Der Aufbau der einzelnen Zeilen ist immer gleich:
Beschreibung=Zustand

Beispiel:
Blau=Ja

Die Beschreibung soll in ein Label, der Zustand in eine Textbox.
Das größte Problem ist für mich das die Anzahl der Zeilen unterschiedlich sein kann.
Ich aber auch nur soviel Label und Textboxen haben möchte, wie nötig sind.

Festes Suchwort gibt es eigentlich nicht.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: txt Datei einlesen und Inhalt übergeben 
Autor: Manfred X
Datum: 26.03.20 22:35

Irgend so etwas.
Vorausgesetzter Datei-Aufbau:
ost = grün
west = gelb
nord = schwarz
süd = ocker

    Dim ofd As New OpenFileDialog
 
    Dim labels() As Label
    Dim textboxes() As TextBox
 
    Dim WithEvents btnLoad As New Button With 
        {.Parent = Me, .Width = 100, .Text = "Laden"}
 
 
    Private Sub CreateControls(ByVal count As Integer)
        ClearControls()
        Array.Resize(labels, count)
        Array.Resize(textboxes, count)
        Dim top_pos As Integer = 50
 
        Me.Height = count * 30 + top_pos + 30
 
        For i As Integer = 0 To labels.Length - 1
            If labels(i) Is Nothing Then
                labels(i) = New Label With
                    {.Parent = Me,
                    .Top = i * 30 + top_pos, 
                    .Left = 10, .Width = 100}
                textboxes(i) = New TextBox With
                    {.Parent = Me,
                    .Top = i * 30 + top_pos, 
                    .Left = 10 + labels(i).Width, .Width = 150}
            End If
        Next i
    End Sub
 
 
    Private Sub ClearControls()
        If labels Is Nothing Then Exit Sub
        For i As Integer = 0 To labels.Length - 1
            labels(i).Dispose()
            labels(i) = Nothing
            textboxes(i).Dispose()
            textboxes(i) = Nothing
        Next i
    End Sub
 
 
    Private Function CheckFile(file As String) As Boolean
 
        Const MaxLines As Integer = 10
 
        Try
            Dim lines() As String = IO.File.ReadAllLines(file)
            If lines.Length > MaxLines Then Return False
            For i As Integer = 0 To lines.Length - 1
                Dim parts() As String = lines(i).Split("="c)
                If parts.Length <> 2 Then Return False
                For k As Integer = 0 To 1
                    If String.IsNullOrWhiteSpace(parts(k).Trim) Then 
                       Return False
                    End If 
                Next k
            Next i
 
            Return True
        Catch ex As Exception
            Return False
        End Try
 
    End Function
 
 
    Private Sub btnLoad_Click(sender As Object, 
                              e As EventArgs) Handles btnLoad.Click
        Dim flines() As String
 
        With ofd
            .InitialDirectory = "C:\Test\"
            .CheckFileExists = True
            .Filter = "Datendatei |*.txt"
 
 
            If .ShowDialog =
           Windows.Forms.DialogResult.Cancel Then Exit Sub
 
            If Not CheckFile(.FileName) Then
                MsgBox("Ungeeignete Datei") : Exit Sub
            Else
                flines = IO.File.ReadAllLines(.FileName)
            End If
        End With
 
 
        CreateControls(flines.Length)
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
            textboxes(i).Text = parts(1)
            labels(i).Text = parts(0)
        Next i
 
    End Sub
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel