Hallöchen Allerseits,
ich hab in meinem Programm, dessen Funktion es ist "Sprite"-Dateien in einer Konsole anzuzeigen, zu laden und zu speichern.
Dabei sieht so eine "Sprite-Datei" so aus:
So wird das ganze geladen und gespeichert:
Bei "normalen" Chars wie z.B. A, B,C... geht das auch super! (Siehe Im anhang Bild Soos.png)
Aber bei fremdzeichen wie bsp. ¬ bringt er immer Fehler! Ganz komisch! Hat jemand eine Idee, wo der Fehler liegt?
ich hab in meinem Programm, dessen Funktion es ist "Sprite"-Dateien in einer Konsole anzuzeigen, zu laden und zu speichern.
Dabei sieht so eine "Sprite-Datei" so aus:
So wird das ganze geladen und gespeichert:
VB.NET-Quellcode
- Shared Function FromFile(filename As String) As BatchRenderSprite
- Dim endresult As New BatchRenderSprite
- Try
- Dim filecontent As String = IO.File.ReadAllText(filename) 'Datei einlesen
- If Not filecontent.StartsWith("BatchRenderSprite│") Then 'BatchRenderSprite-Datei prüfen
- MsgBox("Keine BatchRender-Datei!")
- End If
- filecontent = filecontent.Replace("BatchRenderSprite|", "") 'Header entfernen
- Dim listofchars As String() = filecontent.Split("|") 'Datei in einzelne "Pixel"/einzelne Zeichen zerlegen
- Dim tempBatchRenderStack As New BatchRenderCharStack
- For Each element In listofchars
- Dim relive As String = System.Text.Encoding.Default.GetString(System.Convert.FromBase64String(element)) 'Das ganze Base64 dekodieren
- Dim tempnewchar As New BatchRenderChar
- tempnewchar.DrawChar = CChar(relive.Substring(0, 1)) 'Char auslesen
- relive = relive.Remove(0, 1) 'Char entfernen
- Dim Splitter As String() = relive.Split("|") 'restlicher Text zerlegen
- tempnewchar.Number = Splitter(0) 'X-Koordinate auslesen
- tempnewchar.Row = Splitter(1) 'X-Koordinate auslesen
- tempnewchar.BgColor = [Enum].Parse(GetType(ConsoleColor), Splitter(2)) 'Hintergrundfarbe auslesen
- tempnewchar.FrColor = [Enum].Parse(GetType(ConsoleColor), Splitter(3)) 'Vordergrundfarbe auslesen
- tempBatchRenderStack.Add(tempnewchar)
- Next
- endresult.Content = tempBatchRenderStack
- endresult.X = 0
- endresult.Y = 0
- Catch ex As Exception
- MsgBox("Keine BatchRender-Datei!")
- End Try
- Return endresult
- End Function
- Public Sub SaveFile(filename As String)
- Dim sb As New System.Text.StringBuilder
- sb.Append("BatchRenderSprite") 'Header, der angibt, dass es sich um ein BatchRenderSPrite handelt
- For Each element In Me.Content 'Für jeden "Pixel"/jedes Zeichen
- sb.Append("|")
- Dim tmpsb As New System.Text.StringBuilder
- tmpsb.Append(element.DrawChar) 'Char anhängen
- tmpsb.Append(element.Number.ToString & "|") 'X-Koordinate mit Seperator anhängen
- tmpsb.Append(element.Row.ToString & "|") 'Y-Koordinate mit Seperator anhängen
- tmpsb.Append(CInt(element.BgColor).ToString & "|") 'Hintergrundfarbe mit Seperator anhängen
- tmpsb.Append(CInt(element.FrColor).ToString) 'Vordergrundfarbe mit Seperator anhängen
- Dim encoded As String = System.Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(tmpsb.ToString)) 'Das ganze Base64-Kodieren
- sb.Append(encoded) 'Das ganze an die Datei anhängen
- Next
- If IO.File.Exists(filename) Then IO.File.Delete(filename) 'Datei Speichern
- Dim streamw As New IO.StreamWriter(filename)
- streamw.Write(sb.ToString)
- streamw.Flush()
- streamw.Close()
- streamw.Dispose()
- End Sub
Bei "normalen" Chars wie z.B. A, B,C... geht das auch super! (Siehe Im anhang Bild Soos.png)
Aber bei fremdzeichen wie bsp. ¬ bringt er immer Fehler! Ganz komisch! Hat jemand eine Idee, wo der Fehler liegt?