lesen eines textdokumentes geht nicht und das kopieren geht nicht

  • VB6

Es gibt 47 Antworten in diesem Thema. Der letzte Beitrag () ist von husi012.

    lesen eines textdokumentes geht nicht und das kopieren geht nicht

    hi alle zusammen
    ich habe einen komischen fehler den ich mir nicht erklären kann:

    Quellcode

    1. Private Sub TextBox2_TextChanged_1(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TextBox2.TextChanged
    2. If (System.IO.File.Exists(TextBox2.Text & ".file.txt")) = False And (System.IO.File.Exists(TextBox2.Text & ".txt")) Then
    3. System.IO.File.Create(TextBox2.Text & ".file.txt")
    4. My.Computer.FileSystem.WriteAllText(TextBox2.Text & ".file.txt", TextBox2.Text, False)
    5. My.Computer.FileSystem.CopyFile(TextBox2.Text & ".file.txt", Pfad)
    6. End If
    7. End Sub

    und zwar wird:

    Quellcode

    1. My.Computer.FileSystem.WriteAllText(TextBox2.Text & ".file.txt", TextBox2.Text, False)

    immer gelb unterlegt
    obwohl es den pfad ja eigentlich geben müsste denn Pfad ist so deklariert(sorry wenns falsch geschrieben ist):

    Quellcode

    1. Public Pfad As String = Application.StartupPath

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „husi012“ ()

    Irgendwie ergibt dein Code auch nicht wirklich Sinn.
    Diese Zeile

    Visual Basic-Quellcode

    1. My.Computer.FileSystem.WriteAllText(TextBox2.Text & ".file.txt", TextBox2.Text, False)

    sorgt dafür, dass in die Datei, die in TextBox2 angegeben ist, ihr eigener Dateiname eingetragen wird.

    Vielleicht erklärst du mal mit Worten, was du vor hast.

    Quellcode

    1. If (System.IO.File.Exists(TextBox2.Text & ".file.txt")) = False And (System.IO.File.Exists(TextBox2.Text & ".txt")) Then

    ist dafür da das überprüft wird ob es den angegebenen Pfad (siehe TextBox2.Text)mit der endung ".file.txt" noch nicht gibt (sonst würde man ja die datei immer wieder duplizieren und ob es aber den angegebenen Pfad überhaupt gibt

    Quellcode

    1. System.IO.File.Create(TextBox2.Text & ".file.txt")

    weil es den file ja nicht gibt erstelle ihn

    Quellcode

    1. My.Computer.FileSystem.WriteAllText(TextBox2.Text & ".file.txt", TextBox2.Text, False)

    schreibe den Pfad in einem textdokument des angegebenen Pfades


    Quellcode

    1. My.Computer.FileSystem.CopyFile(TextBox2.Text & ".file.txt", Pfad)

    kopiere ihn zur (sicherheit) in den .exe ordner
    doch ich kann besser mit batch umgehen und wo ich schon mal so einen code gemacht habe aber gemerkt habe es ist umständlich
    wollte ich visual basic als editor zu benutzten
    und um nicht bei der batch datei nochmal den Pfad herein zu schreiben soll
    es eine textdatei lesen
    wo der Pfad drinne steht
    Also so sieht dein Code mal sauber aus:

    Visual Basic-Quellcode

    1. If File.Exists(Path.Combine(TextBox2.Text, ".txt")) Then
    2. Dim fi As New FileInfo(Path.Combine(TextBox2.Text, ".file.txt"))
    3. Using fs = fi.Open(FileMode.OpenOrCreate)
    4. Using sw As New StreamWriter(fs)
    5. sw.Write(TextBox2.Text)
    6. End Using
    7. End Using
    8. fi.CopyTo(Application.StartupPath)
    9. End If
    Dann probiers mal so, offensichtlich funktioniert Path.Combine hier nicht.

    Visual Basic-Quellcode

    1. If File.Exists(TextBox2.Text & ".txt") Then
    2. Dim fi As New FileInfo(TextBox2.Text & ".file.txt")
    3. Using fs = fi.Open(FileMode.OpenOrCreate)
    4. Using sw As New StreamWriter(fs)
    5. sw.Write(TextBox2.Text)
    6. End Using
    7. End Using
    8. fi.CopyTo(Path.Combine(Application.StartupPath, fi.Name))
    9. End If
    komisch jetzt wird

    Quellcode

    1. fi.CopyTo(Path.Combine(Application.StartupPath, fi.Name))

    gelb unterlegt

    error:
    Der Prozess kann nicht auf die Datei "C:\Dokumente und Einstellungen\Gerrit\Desktop\textdateien\ersetzter\test\hi.file.txt" zugreifen, da sie von einem anderen Prozess verwendet wird.

    das kommt fast immer ohne der benutzung der datei
    Es ist gut möglich, dass das dein eigenes Programm ist. Ich habe in dem Code mit Using darauf geachtet, dass alle Streams wieder geschlossen werden. Wenn du die Datei aber an anderer Stelle ebenfalls verwendest und du dieses Zugriff nicht wieder schließt, dann passiert so was.
    ich habe das so:

    Quellcode

    1. If File.Exists(TextBox2.Text & ".txt") And File.Exists(TextBox2.Text & ".file.txt") = False Then
    2. Dim fi As New FileInfo(TextBox2.Text & ".file.txt")
    3. Using fs = fi.Open(FileMode.OpenOrCreate)
    4. Using sw As New StreamWriter(fs)
    5. sw.Write(TextBox2.Text)
    6. fi.CopyTo(Path.Combine(Application.StartupPath, fi.Name))
    7. End Using
    8. End Using
    9. End If
    10. If File.Exists(TextBox2.Text & ".txt") Then
    11. Process.Start(Pfad & "\ersetzten 0.3.bat")
    12. End If

    und frage nicht was das für ein programm ist