Inhalt einer .wtf Datei ändern

11/21/2014 16:18 Vespula#1
Hallo zusammen,
ich schreibe momentan an einem Programm für das es Notwendig ist den Inhalt einer .wtf Datei zu ändern.

Mein Code:
Code:
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim objWriter As New System.IO.StreamWriter(realm, False)
        If System.IO.File.Exists(realm) Then
            If ComboBox1.SelectedIndex = 0 Then
                objWriter.WriteLine(realmlist(0))
                objWriter.Close()
            ElseIf ComboBox1.SelectedIndex = 1 Then
                objWriter.WriteLine(realmlist(1))
                objWriter.Close()
            ElseIf ComboBox1.SelectedIndex = 2 Then
                objWriter.WriteLine(realmlist(2))
                objWriter.Close()
            ElseIf ComboBox1.SelectedIndex = 3 Then
                objWriter.WriteLine(realmlist(3))
                objWriter.Close()
            ElseIf ComboBox1.SelectedIndex = 4 Then
                objWriter.WriteLine(realmlist(4))
                objWriter.Close()
            ElseIf ComboBox1.SelectedIndex = 5 Then
                objWriter.WriteLine(realmlist(5))
                objWriter.Close()
            End If
        End If
        Shell(wotlk)
    End Sub
Allerdings scheint er den Inhalt nicht zu ändern nur ich bin mir nicht sicher warum.
Sieht einer den Fehler?
11/21/2014 17:24 Logtetsch#2
Kriegst du eine Exception?
Was ist realmlist? Welcher Datentyp? Was hat realmlist für einen Inhalt?
11/21/2014 18:31 Terreox#3
Ich hätte da ein paar Verbesserungsvorschläge zu deinem Code:
  1. Schau dir mal das [Only registered and activated users can see links. Click Here To Register...] an. Es ist nicht dramatisch, wenn du kein using benutzt, allerdings sollte es zu einer Angewohnheit werden, um teils schwer zu findende Fehler zu vermeiden.
  2. Du brauchst nicht zu prüfen, ob eine Datei vorhanden ist, wenn du einen StreamWriter benutzt. StreamWriter erstellt eine Datei, sofern diese nicht existiert, und überschreibt eine Datei, wenn diese existiert und nicht explizit angegeben wird, dass sie nicht überschrieben werden soll.
    [Only registered and activated users can see links. Click Here To Register...]

Ansonsten kann ich mich weitestgehend meinem Vorposter anschließen.
11/21/2014 18:49 Vespula#4
Danke erstmal für eure antworten.
realmlist ist vom Datentyp String und enthält entsprechend eine verkettung von Zeichen. Z.b.: "set realmlist xxx"

Ich fange gerade erst an VB zu lernen, habe aber schon mal was von Using gehört. Werde mir das dann bei Gelegenheit mal anschauen :)
11/21/2014 20:10 Logtetsch#5
Ich bin leider mit der VB .Net Syntax nicht vertraut, daher nur (schlechter) "Pseudocode". Mit dieser Variante ersparst du Dir ganz viele IfElse- Verzweigungen.
Code:
FileWriter hWriter
For i = 0 To 5 Step +1
    If Combo.Index = i Then
         hWriter.WriteLine(realmlist(i))
    EndIf
Next
11/21/2014 20:45 Shawak#6
Wieso for wenn if reicht?
11/21/2014 21:41 Logtetsch#7
Wieso 5 Zeilen schreiben, wenn man auch gleich 1000 Zeilen schreiben kann? Seems legit...
11/21/2014 21:59 Jeoni#8
Ich glaube, Shawak meinte, dass die for-schleife extrem unnötig ist:
Code:
...
If ComboBox1.SelectedIndex >= 0 And ComboBox1.SelectedIndex <= 5 Then
  objWriter.WriteLine(realmlist(ComboBox1.SelectedIndex))
End If
objWriter.Close()
...
MfG
11/21/2014 22:06 Logtetsch#9
[Only registered and activated users can see links. Click Here To Register...]
11/22/2014 11:15 Terreox#10
Quote:
Originally Posted by Vespula View Post
realmlist ist vom Datentyp String und enthält entsprechend eine verkettung von Zeichen. Z.b.: "set realmlist xxx"

Ich fange gerade erst an VB zu lernen, habe aber schon mal was von Using gehört. Werde mir das dann bei Gelegenheit mal anschauen :)
Die Gelegenheit hast du jetzt :D

Wenn realmlist tatsächlich vom Typ String ist, dann hast du hier auf jedenfall auch einen Fehler.
Ein String ist nur eine Zeichenkette, wie du bereits erwähnt hast (bsp.: "Hello World").
Was du haben willst ist aber wohl eher eine List(Of String), sprich einer Liste von Strings.