Text öffter speichern

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von kevin89.

    Text öffter speichern

    hallo kann mir jemand helfen unzwar möchte ich wenn ich auf button 1 klick soll der in der text datei ein text speicher un denn ich auf button 2 klicke soll der ein anderen text speichern bei in der gleichen datei ich hab das jetzt so

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim sys As New System.IO.StreamWriter("C:\Server1.html", True)
    3. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    4. sys.Write("text1")
    5. sys.Close()
    6. end sub
    7. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    8. sys.Write("text2")
    9. sys.Close()
    10. end sub


    aber wenn ich das mache dan kommt
    In einen geschlossenen TextWriter kann nicht geschrieben werden.
    kann mir jemand helfen
    ja aber wenn ich kein "close" habe dann speichert der denn text nicht
    _______

    weil den text will ich geunau danach auf einen ftp server hochladen dann zeigt der mit denn fehler an
    Ausnahmefehler während einer WebClient-Anforderung.

    Edit by Agent: Keine Doppelposts! Es gibt eine Bearbeitenfunktion!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Was auch wieder logisch ist, da erst nach einem close physikalisch in eine Datei geschrieben wird.

    Entweder schließt man die Datei bei Programmende oder aber man muss sie für jeden
    Schreibvorgang im Append-Modus öffnet, damit Änderungen angehängt werden und nach
    dem Schreiben wieder schließen.
    Benutze ein .flush() zum rausschreiben der Daten. Überdies:
    Du soltest den writer aber unbedingt sofort nach der Verwendung wieder schließen! Daher solltest du nicht auf Klassenebene eine Instanz eines Streamwriters erstellen für zwei verschiedene Ereignisprozeduren. Erstell für jeden Button ein eigenes Writer-Objekt daß du dann auch wieder freigibst.
    wie jetzt check ich grad nicht also ich hab das jetzt genau so

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim sys As New System.IO.StreamWriter("C:\Server1.html")
    3. Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
    4. sys.Write("text1")
    5. sys.Close()
    6. Dim pfad As String = "C:\Server1.html"
    7. Dim v As Object
    8. v = Split(pfad, "\")
    9. My.Computer.Network.UploadFile("C:\Server1.html", "ftp://zerofix.ze.funpic.de/" & v(UBound(v)), "bn", "pw")
    10. End Sub
    11. Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
    12. sys.Write("text2")
    13. sys.Close()
    14. Dim pfad As String = "C:\Server1.html"
    15. Dim v As Object
    16. v = Split(pfad, "\")
    17. My.Computer.Network.UploadFile("C:\Server1.html", "ftp://zerofix.ze.funpic.de/" & v(UBound(v)), "bn", "pw")
    18. End Sub

    _______

    doch nicht wenn ich flush() nehme dann lädt er die datei nicht hoch und wenn ich close() nehme dann kann ich nur 1 mal auf den button klicken

    Edit by Agent: Keine Doppelposts! Es gibt eine Bearbeitenfunktion!

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Agent“ ()

    Hallo!

    Jetzt stellen wir uns einmal ganz dumm und driften ins Reich der Bilder.
    Stelle dir vor, du hast einen Karton. Den öffnest du und legst einen
    Apfel hinein. Danach schließt du ihn wieder. Was passiert, wenn du einen
    weiteren Apfel hineinlegen willst? Richtig, es funktioniert nicht, da der Karton
    nicht geöffnet ist. Wenn du etwas weiteres hinein legen möchtest, dann muss
    der Deckel wieder gehoben werden. Jedoch ist es ratsam, wenn man den
    Karton transportiert, ihn nicht die gesamte Zeit geöffnet zu halten, da sonst
    die Äpfel herausfallen könnten. Deshalb sollte, wie dir bereits mehrere netten
    Menschen erklärt haben, der Karton geöffnet-, der Apfel reingelegt- und der
    Deckel geschlossen werden.
    Flush() schreib die im Writer gepufferten aber noch nicht durchgesetzen Änderungen raus. Das ist eine Nebenerscheinung wenn du Close() machst. Wenn Close() ausgeführt wird, wird intern vorher nochal ein Flush() gemacht. Der Close() ist aber trotzdem wichtig, weil nur so die Ressource wieder freigegeben wird. Nochmal: Kapsle dir das in einer Klasse oder Funktion oder mach zwei StreamWriter-Objekte, für jede Ereignisprozedur eines.

    foxm2k schrieb:

    Flush() schreib die im Writer gepufferten aber noch nicht durchgesetzen Änderungen raus. Das ist eine Nebenerscheinung wenn du Close() machst. Wenn Close() ausgeführt wird, wird intern vorher nochal ein Flush() gemacht. Der Close() ist aber trotzdem wichtig, weil nur so die Ressource wieder freigegeben wird. Nochmal: Kapsle dir das in einer Klasse oder Funktion oder mach zwei StreamWriter-Objekte, für jede Ereignisprozedur eines.


    foxm2k meint quasi das Selbe wie ich - nur mit anderen Worten :)

    vanitas-mundi schrieb:

    Hallo!

    Jetzt stellen wir uns einmal ganz dumm und driften ins Reich der Bilder.
    Stelle dir vor, du hast einen Karton. Den öffnest du und legst einen
    Apfel hinein. Danach schließt du ihn wieder. Was passiert, wenn du einen
    weiteren Apfel hineinlegen willst? Richtig, es funktioniert nicht, da der Karton
    nicht geöffnet ist. Wenn du etwas weiteres hinein legen möchtest, dann muss
    der Deckel wieder gehoben werden. Jedoch ist es ratsam, wenn man den
    Karton transportiert, ihn nicht die gesamte Zeit geöffnet zu halten, da sonst
    die Äpfel herausfallen könnten. Deshalb sollte, wie dir bereits mehrere netten
    Menschen erklärt haben, der Karton geöffnet-, der Apfel reingelegt- und der
    Deckel geschlossen werden.
    OFFTOPIC:
    thaha ^^
    das is mal ne geile Erklärung.
    Das haben glaube ich sogar die Dümmsten (z.b. ich) unter uns verstandn =)

    vanitas-mundi schrieb:

    Hallo!

    Jetzt stellen wir uns einmal ganz dumm und driften ins Reich der Bilder.
    Stelle dir vor, du hast einen Karton. Den öffnest du und legst einen
    Apfel hinein. Danach schließt du ihn wieder. Was passiert, wenn du einen
    weiteren Apfel hineinlegen willst? Richtig, es funktioniert nicht, da der Karton
    nicht geöffnet ist. Wenn du etwas weiteres hinein legen möchtest, dann muss
    der Deckel wieder gehoben werden. Jedoch ist es ratsam, wenn man den
    Karton transportiert, ihn nicht die gesamte Zeit geöffnet zu halten, da sonst
    die Äpfel herausfallen könnten. Deshalb sollte, wie dir bereits mehrere netten
    Menschen erklärt haben, der Karton geöffnet-, der Apfel reingelegt- und der
    Deckel geschlossen werden.

    lol..
    Man sollte vielleicht noch ergänzen... in den Karton darf auch wenn er offen ist nur der was reinlegen, der ihn aufgemacht hat. Ein schlauer Karton sozusagen. Und deswegen sollte man ihn immer wieder zumachen, damit auch andere da mal nen Blick reinwerfen können oder was dazulegen können.