Streamwriter

achsoo ja okay danke :)
aber nun hab ich wohl noch ein Fehler und zwar bekomme ich diese Meldung womit ich gar nichts anfangen kann.

und die Datei ist nicht offen oder benutzt...
 

Anhänge

  • fehler.JPG
    fehler.JPG
    31,2 KB · Aufrufe: 15
Ne geschlossen ist alles und neu gestartet auch also wird die Datei defenetiv nicht verwendet.

oder kann es daran liegen weil ich sr.StreamReader und wr.StreamWriter beides in dem programm aus führe?
Code:
Dim wr As StreamWriter = New StreamWriter("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
Dim sr As StreamReader = New StreamReader("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")

Sie werden aber nicht gleichzeitig ausgeführt!!
 
Wenn du den Reader oder Writer, welcher zuvor verwendet wird, nicht schließt, dann ja.

Benutz einfach einen Using-Block, und es kann nichts schiefgehen.

Code:
Using wr as new StreamWriter("C:...")
    wr..WriteLine("...")
End Using

Hinweis: wr ist nur bis "End Using" verfügbar, alle Schreiboperationen also in diesen Block rein. Nach "End Using" ist der Writer korrekt geschlossen. Das selbe Konstrukt kannst auch für den Reader verwenden.
 
Jau da kommen wir der Sache schon näher jetzt habe ich folgendes:


Das Schreiben:

Code:
Using wr As New StreamWriter("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
            wr.WriteLine(lable.Text)
        End Using

Das Lesen:

Code:
Dim line As String
        Using sr As New StreamReader("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
            Dim i As Integer
            For i = 1 To 2
                line = sr.ReadLine()
            Next
        End Using
        lable.Text = line

wobei meine frage ist, wie bekomme ich das jetzt hin das er nur in der 2ten Zeile schreibt.. ?.

Aber das lesen funktiniert immer noch nicht. Da steht bei "lable.Text = line"
Code:
	Die line-Variable wird verwendet, bevor ihr ein Wert zugewiesen wird. Zur Laufzeit kann eine Nullverweisausnahme auftreten.

ich muss jetzt wohl den Lesevorgang beenden aber wie mache ich das? ich dachte mit End Using habe ich das?


*Edit: aso sorry das ist also kein fehler sondern nur ne Warnung... kann ich das denn so lassen oder führt das zu wirklichen Problemen?


*Edit2: also ich habs jetzt geschaft das er nur in der 2ten Zeile schreibt
Code:
Using wr As New StreamWriter("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
            Dim i As Integer
            For i = 1 To 2
                wr.WriteLine()
            Next
            If i > 1 Then wr.WriteLine(dollar_lable.Text)
        End Using

aber leider überschreibt er dabei Zeile 1 was muss ich denn da einsetzen das er das nicht anfasst?
 
Zuletzt bearbeitet:
Damit du immer nur die 2. Zeile änderst, müsstest du zuerst die ganze Datei zeilenweise Einlesen, 2. Zeile ändern, und dann wieder alle Zeilen rausschreiben.

Zur Variable line: Unter Umständen kanns passieren, dass du nichts einliest, und deswegen nichts in der Variablen gespeichert ist.

Code:
Dim line As String
line = String.Empty
Using sr As New StreamReader("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
    Dim i As Integer
        For i = 1 To 2
            line = sr.ReadLine()
        Next
End Using
lable.Text = line

Aber sag mal, wozu hast du denn da eine For-Schleife?
 
der Code den du gerade gepostet hast war ja der zum Lesen und ich habe mir gedacht der soll erst die erste Zeile lesen und nichts machen und dann die 2te ...

nun hab ich mir das so auch beim streamwrite gedacht er soll die erste Zeile erst lesen dann wieder rein schreiben und dann die nächste lesen bis er zur gwünschten zeile kommt...
den code werde ich wohl heute nachmittag posten, wenn ich vonner Arbeit wieder da bin ;)


Edit:::


ohhh jaahahaha :)

okay ich habe das mit dem String.Empty eingefügt funktioniert, schonmal Danke dafür.

jetzt mit dem schreiben hab ich mir das zusammen gehauen

Code:
Dim srreader As Integer
        Dim t As Integer
        For t = 1 To 15
            Using sr As New StreamReader("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
                srreader = sr.ReadLine()
            End Using
            Using wr As New StreamWriter("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
                wr.WriteLine(srreader)
                If t = 15 Then wr.WriteLine(dollar_lable.Text)
            End Using
        Next

aber was ist da falsch? der schreibt immer nur in die 2te Zeile. Will aber das er in die 15te schreibt
 
Zuletzt bearbeitet:
ich habe es mir jetzt so zs geschrieben ist zwar sehr primitiv aber es funktioniert

Code:
Dim line1 = String.Empty
        Dim line2 = String.Empty
        Dim line3 = String.Empty
        Dim line4 = String.Empty
        Dim line5 = String.Empty
        Dim line6 = String.Empty
        Dim line7 = String.Empty
        Dim line8 = String.Empty
        Dim line9 = String.Empty
        Dim line10 = String.Empty
        Dim line11 = String.Empty
        Dim line12 = String.Empty
        Dim line13 = String.Empty
        Dim line14 = String.Empty
        Dim line15 = String.Empty


        Using sr As New StreamReader("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
            line1 = sr.ReadLine()
            line2 = sr.ReadLine()
            line3 = sr.ReadLine()
            line4 = sr.ReadLine()
            line5 = sr.ReadLine()
            line6 = sr.ReadLine()
            line7 = sr.ReadLine()
            line8 = sr.ReadLine()
            line9 = sr.ReadLine()
            line10 = sr.ReadLine()
            line11 = sr.ReadLine
            line12 = sr.ReadLine()
            line13 = sr.ReadLine()
            line14 = sr.ReadLine()
            line15 = sr.ReadLine()

        End Using
        Using wr As New StreamWriter("C:\Dokumente und Einstellungen\All Users\Dokumente\My Casino\Profil.txt")
            wr.WriteLine(line1)
            wr.WriteLine(line2)
            wr.WriteLine(line3)
            wr.WriteLine(line4)
            wr.WriteLine(line5)
            wr.WriteLine(line6)
            wr.WriteLine(line7)
            wr.WriteLine(line8)
            wr.WriteLine(line9)
            wr.WriteLine(line10)
            wr.WriteLine(dollar_lable.Text)
            wr.WriteLine(line12)
            wr.WriteLine(line13)
            wr.WriteLine(line14)
            wr.WriteLine(line15)
        End Using

Danke für die hilfe Alex ;)
 
Eieieie.. :D

Wenns nur um diesen Zweck geht, könntest dir File.ReadAllLines ansehen.

Liest die alle Zeilen in ein Array, dann brauchst nur die gewünsche Zeile über den Index ansprechen und ersetzen, und dann in einer Schleife alles wieder rausschreiben. :)


lg,..
 

Neue Beiträge

Zurück