Listview, text, splitten, einfügen

05/18/2012 00:04 SuperOwnBash#1
hey, ich habe folgendes problem:

In einem listview wird eine textdatei geladen, gelesen, nach jedem ":" getrennt und in die listview eingefügt.
Jetzt würde ich gern das ganze nur etwas andersrum machen, also von der textbox lesen, splitten und eintragen.

mein code um die textdatei zulesen und einzufügen:
Code:
 Try
            Dim srReader As StreamReader
            Dim bla As String
            Dim split() As String
            Dim X As Integer = 0
            Try
                srReader = New StreamReader(pfadZuDatei.Text)
                Do Until srReader.EndOfStream             
                    bla = srReader.ReadLine                 ' eine zeile lesen
                    split = bla.Split(":")        ' nach jedem ":" splitten
                    Listview1.Items.Add(split(0)) ' und einfügen
                    Listview1.Items(X).SubItems.Add(split(1))
                    Listview1.Items(X).SubItems.Add(split(2))
                    Listview1.Items(X).SubItems.Add(split(3))
                    Listview1.Items(X).SubItems.Add(split(4))
                    X = X + 1 'das ganze durchlaufen bis es am ende ist
                Loop
                srReader.Close()
                srReader.Dispose()
             
            Catch
        
            End Try
        Catch ex As Exception
        End Try
für eurer unbestechliches fachwissen bin ich jetzt schon dankbar :)


so ein format soll es in der textbox haben, damit ich es in die listview hinein bekomme -.- ichbinSpalte0:ichbinSpalte1:ichbinSpalte2:ichbinSpalte3
05/18/2012 10:12 nkkk#2
hier, ist c# code aber im netz gibt es C# - VB übersetzter.
PHP Code:
            String[] entries 
            
listView1.Items
                
.OfType<ListViewItem>()
                .
Select(item => 
                    
item.SubItems
                    
.OfType<ListViewItem.ListViewSubItem>()
                    .
Aggregate<ListViewItem.ListViewSubItemString>("", (accelem) => (acc ":" elem.Text)).Remove(0,1)).ToArray();
            
StreamWriter sw = new StreamWriter("asdfasdf.txt");
            foreach (
string s in entries)
                
sw.WriteLine(s); 
05/18/2012 10:28 SuperOwnBash#3
danke aber wirft mir nen fehler auf
05/18/2012 10:39 nkkk#4
da kann ich nicht helfen wenn ich nicht weis welcher.
05/18/2012 10:46 SuperOwnBash#5
Quote:
Originally Posted by nkkk View Post
da kann ich nicht helfen wenn ich nicht weis welcher.
Code:
[COLOR="Red"]Dim entries As [String]() = listView1.Items.OfType(Of ListViewItem)().[Select](Function(item) item.SubItems.OfType(Of ListViewItem.ListViewSubItem)().Aggregate(Of ListViewItem.ListViewSubItem, [String])("", Function(acc, elem) (Convert.ToString(acc) & ":" & Convert.ToString(elem.Text))).Remove(0, 1)).ToArray()[/COLOR]

        Dim sw As New StreamWriter(TextBox1.Text)
        For Each s As String In entries
            sw.WriteLine(s)
        Next
[Only registered and activated users can see links. Click Here To Register...]
05/18/2012 10:51 nkkk#6
ja das da irgendwo der der fehler ist, ist klar aber was ist die fehlermeldung?


hmm merkwürdiger fehler, liegt glaube ich daran das der C# - VB überetzter nicht alles üverstzen kann.

naja bei diesem code sollte es klappen:
PHP Code:
            String[] entries =
            
listView1.Items
                
.OfType<System.Windows.Forms.ListViewItem>()
                .
Select((System.Windows.Forms.ListViewItem item) =>
                    
item.SubItems
                    
.OfType<System.Windows.Forms.ListViewItem.ListViewSubItem>()
                    .
Aggregate("", (String accSystem.Windows.Forms.ListViewItem.ListViewSubItem elem) => (acc ":" elem.Text)).Remove(01)).ToArray();
            
StreamWriter sw = new StreamWriter("asdfasdf.txt");
            foreach (
string s in entries)
                
sw.WriteLine(s); 
05/18/2012 21:19 SuperOwnBash#7
Quote:
Originally Posted by nkkk View Post
ja das da irgendwo der der fehler ist, ist klar aber was ist die fehlermeldung?


hmm merkwürdiger fehler, liegt glaube ich daran das der C# - VB überetzter nicht alles üverstzen kann.

naja bei diesem code sollte es klappen:
PHP Code:
            String[] entries =
            
listView1.Items
                
.OfType<System.Windows.Forms.ListViewItem>()
                .
Select((System.Windows.Forms.ListViewItem item) =>
                    
item.SubItems
                    
.OfType<System.Windows.Forms.ListViewItem.ListViewSubItem>()
                    .
Aggregate("", (String accSystem.Windows.Forms.ListViewItem.ListViewSubItem elem) => (acc ":" elem.Text)).Remove(01)).ToArray();
            
StreamWriter sw = new StreamWriter("asdfasdf.txt");
            foreach (
string s in entries)
                
sw.WriteLine(s); 

danke doch dies funktioniert auch nicht:
Code:
 Dim entries As [String]() = listView1.Items.OfType(Of System.Windows.Forms.ListViewItem)().[Select](Function(item As System.Windows.Forms.ListViewItem) item.SubItems.OfType(Of System.Windows.Forms.ListViewItem.ListViewSubItem)().Aggregate("", Function(acc As [String], elem As System.Windows.Forms.ListViewItem.ListViewSubItem) (acc & ":" & elem.Text)).Remove(0, 1)).ToArray()
Dim sw As New StreamWriter("asdfasdf.txt")
For Each s As String In entries
	sw.WriteLine(s)
Next
ich denke ich sollte mal klartext reden damit auch du weisst was ich vor habe :S
Also, meine Tool ladet einen verschlüsselten text (AES-128), übergibt dies in textbox1, entschlüsselt dies wiederum in textbox2 und dan erst wird gesplitet und eingefügt.
Code:
Dim entries As [String]() = listView1.Items.OfType(Of System.Windows.Forms.ListViewItem)().[Select](Function(item As System.Windows.Forms.ListViewItem) item.SubItems.OfType(Of System.Windows.Forms.ListViewItem.ListViewSubItem)().Aggregate("", Function(acc As [String], elem As System.Windows.Forms.ListViewItem.ListViewSubItem) (acc & ":" & elem.Text)).Remove(0, 1)).ToArray()
Dim sw As New StreamWriter(textbox2.text) '' <-wird aufjedenfall geändert :P
For Each s As String In entries
	sw.WriteLine(s)
Next
so ein stieres problem hatte ich noch nie...
05/18/2012 22:18 nkkk#8
Quote:
Originally Posted by SuperOwnBash View Post
danke doch dies funktioniert auch nicht:
Code:
 Dim entries As [String]() = listView1.Items.OfType(Of System.Windows.Forms.ListViewItem)().[Select](Function(item As System.Windows.Forms.ListViewItem) item.SubItems.OfType(Of System.Windows.Forms.ListViewItem.ListViewSubItem)().Aggregate("", Function(acc As [String], elem As System.Windows.Forms.ListViewItem.ListViewSubItem) (acc & ":" & elem.Text)).Remove(0, 1)).ToArray()
Dim sw As New StreamWriter("asdfasdf.txt")
For Each s As String In entries
	sw.WriteLine(s)
Next
ich denke ich sollte mal klartext reden damit auch du weisst was ich vor habe :S
Also, meine Tool ladet einen verschlüsselten text (AES-128), übergibt dies in textbox1, entschlüsselt dies wiederum in textbox2 und dan erst wird gesplitet und eingefügt.
Code:
Dim entries As [String]() = listView1.Items.OfType(Of System.Windows.Forms.ListViewItem)().[Select](Function(item As System.Windows.Forms.ListViewItem) item.SubItems.OfType(Of System.Windows.Forms.ListViewItem.ListViewSubItem)().Aggregate("", Function(acc As [String], elem As System.Windows.Forms.ListViewItem.ListViewSubItem) (acc & ":" & elem.Text)).Remove(0, 1)).ToArray()
Dim sw As New StreamWriter(textbox2.text) '' <-wird aufjedenfall geändert :P
For Each s As String In entries
	sw.WriteLine(s)
Next
so ein stieres problem hatte ich noch nie...
was ist denn das problem ?
wenn es das ist das am Ende die datei leer ist, liegt das daran dass man am Ende noch ein sw.Close() einfügen muss.
05/18/2012 22:54 SuperOwnBash#9
Quote:
Originally Posted by nkkk View Post
was ist denn das problem ?
wenn es das ist das am Ende die datei leer ist, liegt das daran dass man am Ende noch ein sw.Close() einfügen muss.
das problem wird bei textbox1.text ausgegeben, "illegales Zeichen im pfad"
aber ich möchte doch kein Pfad zur datei angeben, denn dan hab ich bereits. kein code kann direkt von textbox1.text spliten
05/18/2012 23:20 nkkk#10
achso ich dachte du wolltest einen code der die sachen aus der listbox liest und dann wieder in eine datei schreibt, weil das macht der code.

naja die sachen aus der textbox in die listwiew zu packen ist sehr einfach:

PHP Code:
            listView1.Items.Clear();//um die vohherigen einträge zu löschen
            
foreach (String line in textBox1.Lines)
                
listView1.Items.Add(new ListViewItem(line.Split(':'))); 
05/18/2012 23:23 SuperOwnBash#11
Quote:
Originally Posted by nkkk View Post
achso ich dachte du wolltest einen code der die sachen aus der listbox liest und dann wieder in eine datei schreibt, weil das macht der code.

naja die sachen aus der textbox in die listwiew zu packen ist sehr einfach:

PHP Code:
            listView1.Items.Clear();//um die vohherigen einträge zu löschen
            
foreach (String line in textBox1.Lines)
                
listView1.Items.Add(new ListViewItem(line.Split(':'))); 


oh man ich bin dir sehr dankbar :)
vb code:
HTML Code:
listView1.Items.Clear()
'um die vohherigen einträge zu löschen
For Each line As [String] In textBox1.Lines
	listView1.Items.Add(New ListViewItem(line.Split(":"C)))
Next
05/19/2012 01:32 MrSm!th#12
#moved