vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
Top-Preis! AP-Access-Tools-CD Volume 1  
 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
Dateiinhalt in verschiedene Listviews einlesen 
Autor: Sebi90
Datum: 18.11.22 20:45

Hallo Forum,

ich habe folgendes Problem. Ich möchte den Inhalt einer Datei in verschiedene Listviews einlesen.
Beispieldatei: https://www.mediafire.com/file/z1xf2tj3j5cpywn/Daten.txt/file

In meiner Form sind die Listviews 1-7 vorhanden (lv1,lv2 ..... lv7)
In Listview1 sollen die Werte des Typs
"PGD_BOHRKLASSE", "PGD_DURCHMESSER", "PGD_X", "PGD_Y", "PGD_Z", "PGD_TIEFE", _
  "PGD_RICHTUNG", "PGD_BEDINGUNGSTR", "PGD_MESSKORR_TYP"
Das einlesen der einzelnen Werte funktioniert schon einwandfrei, mein Problem ist aber das ich die Werte in Listview1 nur haben möchte, wenn der Wert von PGD_Durchmesser nicht 0 ist.

Public Class Form1
Dim col1() As String = {"PGD_BOHRKLASSE", "PGD_DURCHMESSER", "PGD_X", "PGD_Y", _
  "PGD_Z", "PGD_TIEFE", "PGD_RICHTUNG", "PGD_BEDINGUNGSTR", "PGD_MESSKORR_TYP"}
 
Dim flines1() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
        Dim lvi1 As ListViewItem = Nothing
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
 
 
            If flines(i).Trim.StartsWith(col1(0)) Then
                lvi = lveinzel.Items.Add(parts(1))
                For k1 As Integer = 1 To col1.Length - 1
                    lvi.SubItems.Add("")
                Next k1
            End If
 
 
            Dim id1 As Integer = Array.IndexOf(col1, parts(0))
 
 
            If lvi IsNot Nothing AndAlso id1 > 0 Then
                lvi.SubItems(id1).Text = parts(1)
            End If
 
        Next (i)
Ich hoffe ihr versteht was ich meine. Wie muss ich die Abfrage für den Durchmesser einbauen ?
Für eine kleines Beispiel wäre ich sehr dankbar.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateiinhalt in verschiedene Listviews einlesen 
Autor: Manfred X
Datum: 19.11.22 14:24

Hallo!


Die Datei sieht nach dem Format einer INI-Datei aus.
https://www.vbarchiv.net/workshop/details.php?id=21
Die Ini-APIs lassen sich entsprechend auch in Net nutzen.
https://www.vbarchiv.net/forum/id2_i142658t142651_ini-bei-programmstart-durchsuchen.html

Warum verwendest Du keine Datatable, um die Daten zu lesen und filterst die
Datensätze, die du jeweils brauchst (Dataviews)?

Beitrag wurde zuletzt am 19.11.22 um 14:32:46 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateiinhalt in verschiedene Listviews einlesen 
Autor: Sebi90
Datum: 19.11.22 19:02

Hallo Manfred !

das mit den Datatable hört sich gut an. Leider bin ich nach all den Jahren wo ich hier mitlese, immer noch Anfänger.

Wäre froh wenn ich hilfe in meinem Beispiel bekommen würde.

Hier mein heutiger Ansatz:

Leider Filtert er nur die Hälfte heraus.

Private Sub ÖffnenToolStripMenuItem_Click(sender As Object, e As EventArgs) _
  Handles ÖffnenToolStripMenuItem.Click
        lveinzel.Items.Clear()
        lvUnterprogramme.Items.Clear()
 
        If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.Cancel Then _
          Exit Sub
 
        Dim flines() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
 
        Dim lvi As ListViewItem = Nothing
 
        '------------------------------------
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
 
            If parts(0) = "[HAUPTPROGRAMM]" Then TextBox1.Text = parts(1)
            If parts(0) = "PG_BEZEICHNUNG" Then TextBox2.Text = parts(1)
            If parts(0) = "PG_LAENGE" Then TextBox3.Text = parts(1)
            If parts(0) = "PG_BREITE" Then TextBox4.Text = parts(1)
            If parts(0) = "PG_DICKE" Then TextBox5.Text = parts(1)
            If parts(0) = "PG_LAENGENOFFSET" Then TextBox6.Text = parts(1)
            If parts(0) = "PG_BREITENOFFSET" Then TextBox7.Text = parts(1)
 
        Next
 
        ' --- alles ---
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts() As String = flines(i).Split("="c)
 
            If flines(i).Trim.StartsWith(col(0)) Then
                lvi = alles.Items.Add(parts(1))
                For k As Integer = 1 To col.Length - 1
                    lvi.SubItems.Add("")
                Next k
            End If
 
            Dim id As Integer = Array.IndexOf(col, parts(0))
 
            If lvi IsNot Nothing AndAlso id > 0 Then
                lvi.SubItems(id).Text = parts(1)
            End If
 
        Next
 
        ' --- einzel ---
 
        Dim flines1() As String = IO.File.ReadAllLines(OpenFileDialog1.FileName)
        Dim lvi1 As ListViewItem = Nothing
 
        For i As Integer = 0 To flines.Count - 1
            Dim parts1() As String = flines1(i).Split("="c)
 
            If flines1(i).Trim.StartsWith(col1(0)) And parts1(1) > 0 Then
                If parts1(1) > 0 Then
                    lvi1 = lveinzel.Items.Add(parts1(1))
                    For k As Integer = 1 To col1.Length - 1
                        lvi1.SubItems.Add("")
                    Next k
                End If
            End If
 
 
            Dim id1 As Integer = Array.IndexOf(col1, parts1(0))
 
            If lvi1 IsNot Nothing AndAlso id1 > 0 Then
                lvi1.SubItems(id1).Text = parts1(1)
            End If
 
        Next
 
 
    End Sub


Beitrag wurde zuletzt am 19.11.22 um 19:06:50 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: Dateiinhalt in verschiedene Listviews einlesen 
Autor: Manfred X
Datum: 19.11.22 21:04

Beispiel für ein Winforms-Formular

    'Formular-ebene
    Dim IniFilePath As String = "G:\downloads\daten.txt"
 
    Dim dt As New DataTable
    Dim bs As New BindingSource
    Dim dgv As New DataGridView With 
                {.Parent = Me, .Top = 10, .Left = 10, .Size = New Drawing.Size( _
                  400, 400),
                 .DataSource = bs}
 
 
 
    Private Sub frmInifileToDataTable_Load(sender As Object, e As EventArgs) _
      Handles MyBase.Load
 
 
        Dim cols() As String = {"PGD_BOHRKLASSE", "PGD_DURCHMESSER", "PGD_X", _
          "PGD_Y", "PGD_Z", 
                                "PGD_TIEFE",
                                "PGD_RICHTUNG", "PGD_BEDINGUNGSTR", _
                                  "PGD_MESSKORR_TYP"}
 
        'Spalten in der Table erstellen / Datentypen beachten 
        For i As Integer = 0 To cols.Length - 1
            If i = 2 Or i = 5 Then
                dt.Columns.Add(cols(i), GetType(String))
            Else
                dt.Columns.Add(cols(i), GetType(Double))
            End If
        Next i
 
        Dim lines() As String = IO.File.ReadAllLines(IniFilePath)
 
 
        Dim row As DataRow, key As String, vl As Double
        For i As Integer = 0 To lines.Length - 1
            lines(i) = lines(i).ToUpper
            If lines(i).StartsWith("[ROW_") Then
                If row IsNot Nothing Then dt.Rows.Add(row)
                row = dt.NewRow
            Else
                Dim parts() As String = lines(i).Split("="c, 
                StringSplitOptions.RemoveEmptyEntries Or _
                  StringSplitOptions.TrimEntries)
 
                If parts.Length = 2 Then
                    key = parts(0)
                    Dim ind As Integer = Array.IndexOf(cols, key)
                    If ind >= 0 Then
                        If ind = 2 Or ind = 5 Then
                            row(key) = parts(1)
                        Else
                            row(key) = CDbl(parts(1))
                        End If
                    End If
                End If
            End If
        Next i
        dt.Rows.Add(row)
 
        bs.DataSource = dt
 
        'Filter setzen
        bs.Filter = dt.Columns(cols(1)).ColumnName & " > 0"
    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