Hi, ich habe mir eine Sub geschrieben das ich per Offset angabe Unicode in eine Binärdatei schreibe. Der Code sieht momentan so aus.
Private _Encoding As System.Text.Encoding = System.Text.Encoding.Unicode
Public Sub WriteStringUNICODE(ByRef FileName As String, ByRef InText As _
String, ByRef Offset As Integer)
Dim writeStream As FileStream
Try
writeStream = New FileStream(FileName, IO.FileMode.Open, _
FileAccess.Write, IO.FileShare.Write)
Dim writeBinay As New BinaryWriter(writeStream, _Encoding)
writeBinay.BaseStream.Position = Offset
writeBinay.Seek(Offset, System.IO.SeekOrigin.Begin)
writeBinay.Write(InText, 0, InText.Length)
writeBinay.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub Soweit funktioniert zumteil alles jedoch ist das problem, das wenn ich vorher einen Langen Text geschrieben habe und dann einen neuen Text schreibe der kürzer ist, sind am ende noch die alten Buchstaben bzw Bytes da vom langen Text. Wie kann ich diese mit "Nullen" ersetzen je nach länge des Textes?
Ich habe folgendes versucht...
Public Sub WriteStringUNICODE(ByRef FileName As String, ByRef InText As _
String, ByRef Offset As Integer)
Dim writeStream As FileStream
Try
writeStream = New FileStream(FileName, IO.FileMode.Open, _
FileAccess.Write, IO.FileShare.Write)
Dim writeBinay As New BinaryWriter(writeStream, _Encoding)
writeBinay.BaseStream.Position = Offset
writeBinay.Seek(Offset, System.IO.SeekOrigin.Begin)
writeBinay.Write(InText, 0, InText.Length)
writeBinay.Write(0)
writeBinay.Write(0)
writeBinay.Write(0)
writeBinay.Write(0)
writeBinay.Write(0)
writeBinay.Write(0)
writeBinay.Close()
Catch ex As Exception
MsgBox(ex.ToString)
End Try
End Sub Funktioniert zwar auch ABER ich müsste immer writeBinary.write(0) schreiben und das wäre umständlich zumal der Text eventuell verschiedene länge haben kann.
Gruß Micha |