| |
VB.NET - Ein- und UmsteigerDateiinhalt 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. | |
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. | |
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 | |
| 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 |
|
|
Neu! sevCommand 4.0
Professionelle Schaltflächen im modernen Design!
Mit nur wenigen Mausklicks statten auch Sie Ihre Anwendungen ab sofort mit grafischen Schaltflächen im modernen Look & Feel aus (WinXP, Office, Vista oder auch Windows 8), inkl. große Symbolbibliothek. Weitere InfosTipp des Monats TOP Entwickler-Paket
TOP-Preis!!
Mit der Developer CD erhalten Sie insgesamt 24 Entwickler- komponenten und Windows-DLLs. Die Einzelkomponenten haben einen Gesamtwert von 1605.50 EUR...
Jetzt nur 599,00 EURWeitere Infos
|