none
Aus Listbox Verzeichnis , mehrereTextdatei in 3 textboxs gesplitet anzeigen RRS feed

  • Frage

  • ausgewählte textdatei aus der listbox soll gesplitet angezeigt werden
    Imports System.IO
    Imports System.Text
    
    Public Class Form2
        Dim filesdirectory As String = String.Empty
    
    
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            ReadToTextbox({TextBox1, TextBox2, TextBox3, TextBox4}, "C:\Temp\test\eins.txt")
    
        End Sub
    
        Public Sub ReadFilesInListbox(ByVal listbox As ListBox, path As String)
            Dim directory As New IO.DirectoryInfo(path)
            Dim files As IO.FileInfo() = directory.GetFiles()
            filesdirectory = path
    
            listbox.Items.Clear()
            For i = 0 To files.Count - 1
                listbox.Items.Add(files(i).ToString)
            Next
        End Sub
    
        Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    
    
    
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles speichern.Click
            SaveToFile({TextBox2, TextBox3, TextBox4}, "C:\Temp\test\")
        End Sub
    
        Public Sub ReadToTextbox(ByVal controls() As TextBox, file As String)
            Dim st As String() = IO.File.ReadAllText(file).Split({"$"}, StringSplitOptions.RemoveEmptyEntries)
            For i = 0 To st.Count - 1
                If controls.Count - 1 >= i Then
                    controls(i).Text = st(i).Remove(0, st(i).IndexOf(Environment.NewLine))
                End If
            Next
        End Sub
        Public Sub SaveToFile(ByVal controls() As TextBox, file As String)
            Using sw As New IO.StreamWriter(file)
                For i = 0 To controls.Count - 1
                    sw.WriteLine("$" & controls(i).Name)
                    sw.WriteLine(controls(i).Text)
                Next
            End Using
        End Sub
    End Class
    komme nicht weiter!!!!!
    Samstag, 18. Januar 2014 04:28

Antworten

  • Hi

    Ersetze mal

    Dim text = File.ReadAllText(ListBox1.SelectedItem.toString)

    durch

    Dim pfad ="C:\Temp\test\" + ListBox1.SelectedItem.toString()

    Dim text = File.ReadAllText(pfad)

    Wenn du jetzt in der Zeile mit Dim text einen Brakepoint setzt (Links neben die Zeile im auf den rand des Editor  klicken, es sollte dann eine Roter Punkt erscheien) wird der Code an der Stelle angehalten. Wenn du nun mit der Maus über die Variable pfad gehst, sollte dir angezeigt werden welchen Wert sie hat. Was sowas wie "C:\Temp\test\DATEINAME" sein sollte. Wenn da was anderes steht, poste bitte mal den Wert.

    MFG
    Björn

    • Als Antwort markiert guccini Mittwoch, 22. Januar 2014 21:47
    Mittwoch, 22. Januar 2014 11:46

Alle Antworten

  • Hallo,
    sag uns doch bitte im einzelnen was nicht funktioniert und was es für Fehler gibt.
    Außerdem ist es wichtig zu wissen, wie die Textdatei gesplittet werden soll. Am besten mit Beispiel.

    Ich habe mal angefangen deinen Code in ein neues Projekt einzubauen. Dabei sind mir natürlich einige Fehler begegnet. Ich verwendete eine Datei mit folgendem Inhalt:
    $TextBox2
    tb2
    $TextBox3
    tb3
    $TextBox4
    tb4

    Beim speichern musst du noch prüfen ob das Verzeichnis auch existiert:
        Public Sub SaveToFile(ByVal controls() As TextBox, file As String)
            Dim folder = New FileInfo(file).DirectoryName
            If Not Directory.Exists(folder) Then Directory.CreateDirectory(folder)'Verzeichnis erstellen'
    Außerdem muss beim Aufruf von SaveToFile auch eine Datei- und kein Ordnername übergeben werden:
    SaveToFile({TextBox2, TextBox3, TextBox4}, "C:\Temp\test\test.txt")
    Bei 4 TextBoxen solltest du auch 4 übergeben, oder?
    SaveToFile({TextBox1, TextBox2, TextBox3, TextBox4}
    Wenn du nun den Dateinamen aus der ListBox verwenden möchtest, musst du eifnach nur
    ListBox1.SelectedItem.ToString ()
    als Pfad benutzen. Im Load-Eventhandler musst du dafür noch das erste Item auswählen, wenn mindestens eins da ist:
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            If ListBox1.Items.Count > 0 Then
                ListBox1.SelectedIndex = 0
                ReadToTextbox({TextBox1, TextBox2, TextBox3, TextBox4}, ListBox1.SelectedItem.ToString())
            End If
        End Sub
    Das wirft der Code zumindest nicht bei der ersten Gelegenheit eine Exception. Fehler abfangen musst du natürlich trotzdem noch. Falls du keine Schreibberechtigungen für das Verzeichnis hast o.ä.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 18. Januar 2014 10:53
    Moderator
  • hallo und danke für die schnelle antwort, folgendes:

    im verzeichnis(ListBox) sollen die textdatei aufgelistet werden, beim selektieren in der listbox soll die gesamte textdatei angezeigt werden unter "Label1"  und weiter daneben soll es gesplitet  dagestellt werden, sollte in einer der drei boxen, $1,$2,$3 eine änderung statt finden wird mit den button "speichern" die vorhandene textdatei durch abfragen "ja" oder "nein" überschrieben.

    die textdatei sieht so aus z.B.:

    eins

    $1

    test1

    $2

    test2

    §3

    test3

    Samstag, 18. Januar 2014 11:47
  • http://imageshack.com/a/img811/1201/tiam.jpg
    Samstag, 18. Januar 2014 11:50
  • Zum neu laden beim neu auswählen eines ListBox-Eintrags, kannst du das SelectedIndexChanged-Event abfangen. Dort lädst du dann den Text der Datei und gibst ihn einfach im Label aus:
    Dim text = File.ReadAllText(ListBox1.SelectedItem.ToString) 'Einlesen
    Label1.Text = text 'Ausgabe im Label
    Nun splittest du wieder den Inhalt und gibst alles einzeln aus:
    Dim tbs As Control() = {TextBox1, TextBox2, TextBox3, TextBox4} 'Liste von Textboxen'
    Dim txts As String() = text.Split({"$"c}, StringSplitOptions.RemoveEmptyEntries) 'Stringteile einlesen
    For i = 0 To tbs.Length - 1 'TextBoxen durchgehen'
        tbs(i).Text = txts(i).Substring(txts(i).IndexOf(Environment.NewLine)).Trim({CChar(vbCr), CChar(vbLf)}) 'Zuweisen, Trim entfernt die Zeilenumbrüche am Anfang und am Ende'
    Next
    Sobald du den Button drückst, fragst du den Benutzer mit einer MessageBox. Wenn er ja auswählt, schreibst du wieder die Datei:
        Private Sub speichern_Click(sender As Object, e As EventArgs) Handles speichern.Click
            If MessageBox.Show("Möchten Sie die Datei überschreiben?", "Überschrteiben?", MessageBoxButtons.YesNoCancel) = Windows.Forms.DialogResult.Yes Then
                Using sw As New StreamWriter(ListBox1.SelectedItem.ToString())
                    sw.WriteLine("$1")
                    sw.WriteLine(TextBox1.Text)
                    sw.WriteLine("$2")
                    sw.WriteLine(TextBox2.Text)
                    sw.WriteLine("$3")
                    sw.WriteLine(TextBox3.Text)
                    sw.WriteLine("$4")
                    sw.WriteLine(TextBox4.Text)
                End Using
            End If
        End Sub

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 18. Januar 2014 15:47
    Moderator
  • vielen,vielen dank....genauso hab ich mir das vorgestellt.......da ist mir aufgefallen das die blöcke um ein textbox weiter versetzt werden und das laden der textdatei erfolgt über debug ordner, statt (C:\Temp\test)

    habe noch ein screen gemacht ganz unten.

    habe das so eingefügt:

    Imports System.IO
    Imports System.Text
    
    Public Class Form2
        Dim filesdirectory As String = String.Empty
    
    
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            
            ReadFilesInListbox(ListBox1, "C:\Temp\test")
            If ListBox1.Items.Count > 0 Then
                ListBox1.SelectedIndex = 0
                ReadToTextbox({TextBox2, TextBox3, TextBox4}, ListBox1.SelectedItem.ToString())
            End If
        End Sub
    
        Public Sub ReadFilesInListbox(ByVal listbox As ListBox, path As String)
            Dim directory As New IO.DirectoryInfo(path)
            Dim files As IO.FileInfo() = directory.GetFiles()
            filesdirectory = path
    
            listbox.Items.Clear()
            For i = 0 To files.Count - 1
                listbox.Items.Add(files(i).ToString)
            Next
        End Sub
    
        Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    
            Dim text = File.ReadAllText(ListBox1.SelectedItem.ToString) 'Einlesen
            TextBox1.Text = text 'Ausgabe im TextBox1
            Dim tbs As Control() = {TextBox2, TextBox3, TextBox4} 'Liste von Textboxen'
            Dim txts As String() = text.Split({"$"c}, StringSplitOptions.RemoveEmptyEntries) 'Stringteile einlesen
            For i = 0 To tbs.Length - 1 'TextBoxen durchgehen'
                tbs(i).Text = txts(i).Substring(txts(i).IndexOf(Environment.NewLine)).Trim({CChar(vbCr), CChar(vbLf)}) 'Zuweisen, Trim entfernt die Zeilenumbrüche am Anfang und am Ende'
            Next
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles speichern.Click
            If MessageBox.Show("Möchten Sie die Datei überschreiben?", "Überschrteiben?", MessageBoxButtons.YesNoCancel) = Windows.Forms.DialogResult.Yes Then
                Using sw As New StreamWriter(ListBox1.SelectedItem.ToString())
                    sw.WriteLine(TextBox2.Text)
                    sw.WriteLine("$1")
                    sw.WriteLine(TextBox2.Text)
                    sw.WriteLine("$2")
                    sw.WriteLine(TextBox3.Text)
                    sw.WriteLine("$3")
                    sw.WriteLine(TextBox4.Text)
           
                End Using
            End If
        End Sub
    
        Public Sub ReadToTextbox(ByVal controls() As TextBox, file As String)
            Dim st As String() = IO.File.ReadAllText(file).Split({"$"}, StringSplitOptions.RemoveEmptyEntries)
            For i = 0 To st.Count - 1
                If controls.Count - 1 >= i Then
                    controls(i).Text = st(i).Remove(0, st(i).IndexOf(Environment.NewLine))
                End If
            Next
        End Sub
        Public Sub SaveToFile(ByVal controls() As TextBox, file As String)
            Using sw As New IO.StreamWriter(file)
                For i = 0 To controls.Count - 1
                    sw.WriteLine("$" & controls(i).Name)
                    sw.WriteLine(controls(i).Text)
                Next
            End Using
        End Sub
    End Class

    http://imageshack.com/a/img844/9366/dwl4.jpg


    • Bearbeitet guccini Samstag, 18. Januar 2014 17:11 verschrieben
    Samstag, 18. Januar 2014 17:09
  • Wie sieht denn der Inhalt der geladenen Datei aus? Ist dort ein Zeilenumbruch am Anfgang enthalten?

    Notfalls kannst du

    TextBox1.Text = text.Trim({CChar(vbCr), CChar(vbLf)})

    aufrufen um den Umbruch weg zu bekommen.

    PS: Wenn du unter Verify Yout Account 11 postest kannst du deinen Acccount freischalten lassen und somit direkt in der Frage Bilder einfügen.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.


    Samstag, 18. Januar 2014 17:43
    Moderator
  • inhalt der text datei:

    eins
    
    $1
    test1
    
    $2
    test2
    
    $3
    test3

    Samstag, 18. Januar 2014 18:32
  • Steht "eins" wirklich mit in der Datei? Wenn ich nichts übersehen habe, muss die Datei einen Zeilenumbruch enthalten. Anders kann der nicht in die TextBox kommen.

    Wenn dem so ist, verwende meine Ausweichlösung:

    TextBox1.Text = text.Trim({CChar(vbCr), CChar(vbLf)})

    Damit bist du vor diesem "Fehler" sicher.

    Hinweis: Der Zeilenumbruch besteht unter Windows aus 2 Zeichen: Cr und Lf. Einige Dateien benutzen aber nur eines der beiden. Darum entfernen wir beide vom Inhalt der Datei.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 18. Januar 2014 18:48
    Moderator
  • wo soll ich den code einfügen?
    Samstag, 18. Januar 2014 19:18
  • Beim laden der Datei hast du momentan noch folgendes stehen:
    TextBox1.Text = text
    tausche das gegen folgendes aus:
    TextBox1.Text = text.Trim({CChar(vbCr), CChar(vbLf)})
    Dadurch werden wie gesagt die Zeilenumbrüche an den Enden entfernt.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Samstag, 18. Januar 2014 19:57
    Moderator
  • hoffe das ich nicht nerve.

    habe noch probleme, die kopfzeile der textdatei wird nicht angezeigt "eins".......beim speichern ist sie komplett weg.....weiss nicht was ich falsch mache.

    Imports System.IO
    Imports System.Text
    
    Public Class Form2
        Dim filesdirectory As String = String.Empty
    
    
        Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            
            ReadFilesInListbox(ListBox1, "C:\Temp\test")
            If ListBox1.Items.Count > 0 Then
                ListBox1.SelectedIndex = 0
                ReadToTextbox({TextBox2, TextBox3, TextBox4}, ListBox1.SelectedItem.ToString())
            End If
        End Sub
    
        Public Sub ReadFilesInListbox(ByVal listbox As ListBox, path As String)
            Dim directory As New IO.DirectoryInfo(path)
            Dim files As IO.FileInfo() = directory.GetFiles()
            filesdirectory = path
    
            listbox.Items.Clear()
            For i = 0 To files.Count - 1
                listbox.Items.Add(files(i).ToString)
            Next
        End Sub
    
        Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
    
            Dim text = File.ReadAllText(ListBox1.SelectedItem.ToString) 'Einlesen
            TextBox1.Text = text.Trim({CChar(vbCr), CChar(vbLf)}) 'Ausgabe im TextBox1
            Dim tbs As Control() = {TextBox2, TextBox3, TextBox4} 'Liste von Textboxen'
            Dim txts As String() = text.Split({"$"c}, StringSplitOptions.RemoveEmptyEntries) 'Stringteile einlesen
            For i = 0 To tbs.Length - 1 'TextBoxen durchgehen'
                tbs(i).Text = txts(i).Substring(txts(i).IndexOf(Environment.NewLine)).Trim({CChar(vbNewLine), CChar(vbLf)}) 'Zuweisen, Trim entfernt die Zeilenumbrüche am Anfang und am Ende'
            Next
        End Sub
    
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles speichern.Click
            If MessageBox.Show("Möchten Sie die Datei überschreiben?", "Überschrteiben?", MessageBoxButtons.YesNoCancel) = Windows.Forms.DialogResult.Yes Then
                Using sw As New StreamWriter(ListBox1.SelectedItem.ToString())
    
    
                    sw.WriteLine("$1")
                    sw.WriteLine(TextBox2.Text)
                    sw.WriteLine("$2")
                    sw.WriteLine(TextBox3.Text)
                    sw.WriteLine("$3")
                    sw.WriteLine(TextBox4.Text)
    
                End Using
            End If
        End Sub
    
        Public Sub ReadToTextbox(ByVal controls() As TextBox, file As String)
    
            Dim st As String() = IO.File.ReadAllText(file).Split({"$"}, StringSplitOptions.RemoveEmptyEntries)
            For i = 0 To st.Count - 1
                If controls.Count - 1 >= i Then
                    controls(i).Text = st(i).Remove(0, st(i).IndexOf(Environment.NewLine))
                End If
            Next
        End Sub
        Public Sub SaveToFile(ByVal controls() As TextBox, file As String)
    
            Using sw As New IO.StreamWriter(file)
                For i = 0 To controls.Count - 1
                    sw.WriteLine("$" & controls(i).Name)
                    sw.WriteLine(controls(i).Text)
                Next
            End Using
        End Sub
    End Class

    Sonntag, 19. Januar 2014 10:51
  • Hallo,
    überleg mal kurz ;) Wo wird gespeichert und was fehlt für eine Kopfzeile? Die erste sw.WriteLine-Anweisung:

       Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles speichern.Click
            If MessageBox.Show("Möchten Sie die Datei überschreiben?", "Überschrteiben?", MessageBoxButtons.YesNoCancel) = Windows.Forms.DialogResult.Yes Then
                Using sw As New StreamWriter(ListBox1.SelectedItem.ToString())
                    sw.WriteLine("Deine kopfzeile")
                    sw.WriteLine("$1")
                    sw.WriteLine(TextBox2.Text)

    Da die Kopfzeile wahrscheinlich nur eine Zeile lang ist, würde ich diese beim laden abspeichern:

    Dim headLine As String = ""'Kopfzeile'
    Private Sub ListBox1_SelectedIndexChanged(sender As Object, e As System.EventArgs) Handles ListBox1.SelectedIndexChanged
            Dim text = File.ReadAllText(ListBox1.SelectedItem.ToString) 'Einlesen'
            headLine = text.Split({CChar(vbCr),CChar(vbLf)}).First()'Am Zeilenumbruch trnnen und erstes Element benutzen.

    Dann kanst du entsprechend headLine statt "Deine Kopfzeile" einsetzen.

    hoffe das ich nicht nerve.

    Das würde ich noch nicht sagen, aber es ist schon schwierig zu helfen, wenn ich erst jetzt sicher sagen kann: "Es gibt eine Kopfzeile in der Datei"


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 11:21
    Moderator
  • super...das abspeichern funktioniert perfekt.....die position $1 wird unter der $2 (TextBox3 statt TextBox2), woran kann das liegen?
    Sonntag, 19. Januar 2014 11:38
  • Steht denn irgend ein anderer Text in TextBox1? Vielleicht auch nur ein Zeilenumbruch?

    Ich vermute mal, das dort die Kopfzeile eingetragen wird und durch das Weg kürzen der Zeilenumbrüche nichts mehr übrig bleibt. Darum solltest du beim ausgeben der einzelnen Texte den ersten Text überspringen:

    For i = 0 To tbs.Length - 1 'TextBoxen durchgehen'
        tbs(i).Text = txts(i + 1).Substring(txts(i + 1).IndexOf(Environment.NewLine)).Trim({CChar(vbCr), CChar(vbLf)}) 'Zuweisen
    Next
    Das +1 sorgt dafür, dass das erste Element ausgelassen wird.

    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Sonntag, 19. Januar 2014 11:53
    Moderator
  • jetzt versteh ich......erstmal vielen,vielen dank für deine mühe und hut ab.......funktionert alles super....!!!
    Sonntag, 19. Januar 2014 12:04
  • das laden der textdatei erfolgt nur über debug ordner statt C:\Temp\test

    was mache ich falsch?


    • Bearbeitet guccini Montag, 20. Januar 2014 08:12
    Sonntag, 19. Januar 2014 12:10
  • Hat keiner  eine Idee woran das liegen könnte?
    Montag, 20. Januar 2014 20:13
  • Ich weiß nicht was du falsch machst, aber die Datei existiert nicht. Mehr kann ich dazu nicht sagen.

    Überprüfe mal ob der Pfad auch wirklich richtig geschrieben ist.


    Koopakiller [kuːpakɪllɐ] (Tom Lambert)
    Webseite | Code Beispiele | Facebook | Twitter | Snippets   C# ↔ VB.NET Konverter
    Markiert bitte beantwortende Posts als Antwort und bewertet Beiträge. Danke.

    Montag, 20. Januar 2014 20:25
    Moderator
  • Pfad stimmt 100%

    ReadFilesInListbox(ListBox1, "C:\Temp\test")

    aber es versucht sich datei von diesen ordner zu holen :

    C:\Users\guccini\Documents\Visual Studio 2010\Projects\JB Manager\JB Manager\bin\Debug

    blicke nicht ganz durch , an den code habe ich nichts verändert.

    Montag, 20. Januar 2014 23:22
  • Hi,

    grundlegend solltest du für deine Funktionalität eine eigene Klasse anlegen und nicht alles in der Oberfläche machen. So z.B. nicht den Pfad direkt aus der Listbox abfragen.

    Für mich sieht es so aus als ob du den Pfad falsch setzt. Schau mal an der stelle an der du die Listbox bestückst.

    MFG

    Björn

    Montag, 20. Januar 2014 23:43
  • hi...!!

    habe im Form2_Load folgendes eingefügt:

    ListBox1.Items.AddRange(System.IO.Directory.GetFiles(ListBox1.Text & "C:\Temp\test", "*.txt"))

    klappt soweit ganz gut, leider wird in der listbox der gesamte Pfad angezeigt statt nur die datei, wo müsste ich was ändern?

    Dienstag, 21. Januar 2014 08:14
  • Hi lass dir vorher eine Liste der Strings geben, lauf in einer Schleife drüber und entferne den Pfad mit remove.
    • Bearbeitet Palin Dienstag, 21. Januar 2014 09:48
    Dienstag, 21. Januar 2014 08:51
  • kannst du ein beispiel zusammensetzen......sorry neuling in der vb.net welt......habe bis jetzt versucht durch lesen,lesen und nochmal lesen, aber trotzdem verliert man den überblick.
    Dienstag, 21. Januar 2014 09:27
  • Hi ein bisschen Eigenleistung muss schon sein ;)

    Probiere es bitte erstmal selbest. Mit Remove oder Replace, wenn du einen String hast wird es dir über die Punktsyntax angeboten und über eine Liste mit foreach (2xTab nach den Word egänzt die Schleife) zu laufen sollte auch kein. 

    Wenn du dann noch fragen hast, poste bitte den Code dann schau ich mir auch gerne an wo das Problem liegt.

    MFG

    Björn

    Dienstag, 21. Januar 2014 09:52
  • leider komme ich nicht weiter
    Dienstag, 21. Januar 2014 12:23
  • Am 21.01.2014 schrieb guccini:

    leider komme ich nicht weiter

    Hier gibt es ein Beispiel: http://www.vb-magazin.de/forums/forums/t/3056.aspx

    Imports System.IO
    ....
    DateiNameMitErweiterung =
    Path.GetFileName(KompletterPfadInclusiveDateinameMitErweiterung)
    
    Beispiel:
    
    Path.GetFileName("C:\Doks\MeineDateien\bla.txt") ergibt bla.txt

    Servus
    Winfried

    Gruppenrichtlinien
    WSUS Package Publisher
    HowTos zum WSUS Package Publisher
    NNTP-Bridge für MS-Foren

    Dienstag, 21. Januar 2014 19:11
  • Dienstag, 21. Januar 2014 19:13
  • hallo zusammen....danke für die tips ,folgendes habe ich getestet:

       Private Sub Form2_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
            Dim directoryInfo As New System.IO.DirectoryInfo("C:\Temp\test")
            Dim fileInfos() As System.IO.FileInfo
            fileInfos = directoryInfo.GetFiles()
            For Each fileInfo As System.IO.FileInfo In fileInfos
                ListBox1.Items.Add(fileInfo.Name)
            Next 
        End Sub

    egal was ich mache es versucht immer wieder aus den debug ordner sich was zu holen, obwohl nur der pfad beim anzeigen in der listbox weg muss.

    Mittwoch, 22. Januar 2014 08:22
  • Hi wie schon an anderer Stelle geschrieben.

    Trenne die unterschiedlichen Anforderungen und schau das du korrekte Werte übergibst und welche Werte. Wenn du den Wert aus ListBox1.SelectedItem.ToString vorher an eine Variable übergibst kannst du mit dem Debugger schauen welcher Wert drin steht. (Ich denke mal momentan nur der Dateiname.)

    Wenn du weist welchen Wert du hast, kannst du schauen welchen Wert die Methode braucht die du aufrufst. (Ohne jetzt nachzu schauen denke ich ReadAllText, brauch eigendlich einen kompletten Pfad, oder geht per default auf denn Ausführungsort der Anwendung).

    Du wirst also warscheinlich die Übergabe noch um den Pfad ergänzen müssen, aus dem du Lesen willst.

    Ein Tip noch löse ein Problem nach dem anderen und schau das es dann erstmal so läuft wie du es dir Vorstellst. Sonst hast du nachher X Probleme die voneinander abhängen und wenn du an der einen Stelle ein Problem löste (z.B. nur den Dateinamen zu nehmen) tritt an der anderen Stelle wider ein Problem auf (z.B. dasa man den ganzen Pfad braucht).

    MFG
    Björn

    Mittwoch, 22. Januar 2014 08:50
  • Hi Björn , nach knapp 2 stunden probieren und probieren bin ich nicht fundig geworden, da sind mehr fehler entstanden wie alles andere.

    ich weiss das man aus eigenen leistung was bringen sollte ist ja auch richtig, da bringe ich mir aber nur falsches bei, ich möchte das richtig lernen.

    Mittwoch, 22. Januar 2014 11:00
  • Hi

    Ersetze mal

    Dim text = File.ReadAllText(ListBox1.SelectedItem.toString)

    durch

    Dim pfad ="C:\Temp\test\" + ListBox1.SelectedItem.toString()

    Dim text = File.ReadAllText(pfad)

    Wenn du jetzt in der Zeile mit Dim text einen Brakepoint setzt (Links neben die Zeile im auf den rand des Editor  klicken, es sollte dann eine Roter Punkt erscheien) wird der Code an der Stelle angehalten. Wenn du nun mit der Maus über die Variable pfad gehst, sollte dir angezeigt werden welchen Wert sie hat. Was sowas wie "C:\Temp\test\DATEINAME" sein sollte. Wenn da was anderes steht, poste bitte mal den Wert.

    MFG
    Björn

    • Als Antwort markiert guccini Mittwoch, 22. Januar 2014 21:47
    Mittwoch, 22. Januar 2014 11:46
  • aha mit den roten punkt kann man schritt für schritt vorgehn,

    pfad ist vorhanden.!



    • Bearbeitet guccini Mittwoch, 22. Januar 2014 21:32
    Mittwoch, 22. Januar 2014 12:02