Thema Datum  Von Nutzer Rating
Antwort
Rot Mit TextStreamObject erstellte Binärdatei kann nicht geöffnet werden
22.10.2022 16:13:04 xlKing
NotSolved
22.10.2022 16:27:15 xlKing
NotSolved
22.10.2022 16:46:35 Mase
NotSolved
24.10.2022 11:11:10 Der Steuerfuzzi
NotSolved
25.10.2022 22:04:49 xlKing
NotSolved
26.10.2022 01:43:51 Gast19268
NotSolved

Ansicht des Beitrags:
Von:
xlKing
Datum:
22.10.2022 16:13:04
Views:
230
Rating: Antwort:
  Ja
Thema:
Mit TextStreamObject erstellte Binärdatei kann nicht geöffnet werden

Hallo Kollegen,

Jetzt hab ich auch mal eine Frage. Ich mach grade ein paar Tests mit dem TextStream-Objekt (Ein Unterobjekt vom FileSystemObjekt). Konkret versuche ich, Binärdaten aus einem String in eine neue Datei (hier z.B. JPG) zu schreiben. Die Daten hole ich zuvor aus einer Original-Datei in den String. Am Ende des Makros öffne ich nochmal die neue Datei und prüfe jedes Byte, ob es auch korrekt angekommen ist.

Und genau da ist mein Problem: Die Größe der neuen Datei entspricht exakt der Größe von der Originalen. Und die Byte-Prüfung ergibt keine Fehler, das heißt: Alle Bytes sind genauso, wie sie sollen. Auch Sonderzeichen wie Chr(0) oder Chr(13) usw. werden korrekt geschrieben.

Trotzdem kann ich die neue JPG-Datei nicht öffnen. Ich erhalten sowohl mit der Windows-FotoAnzeige als auch z.B. mit Paint, die Meldung, dass die Datei beschädigt sei. Wie kann das sein, wenn es sich doch um eine exakte Kopie handelt? Was übersehe ich hier?

PS: Auch eine Dateierstellung über Open For Binary bringt leider nicht den gewünschten Erfolg.

Windows 11, Excel 2019.

Sub ReadTextFileTest()
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f, g, s As String, t As String, Datei1 As String, Datei2 As String
    Set fs = CreateObject("Scripting.FileSystemObject")
    
    
    Datei1 = "D:\Pfad\Testbild.JPG"
    Datei2 = "D:\Pfad\Testbild2.JPG"
    
    Set f = fs.OpenTextFile(Datei1, ForReading, False, TristateFalse)
    s = f.readall
    f.Close
    
    WriteToFile Datei2, s
    'Schreibtest2 Datei2, s
    
    
    'Prüfen ob alles angekommen ist.
    Set g = fs.OpenTextFile(Datei2, ForReading, False, TristateFalse)
    t = g.readall
    g.Close
    
    For i = 1 To Len(s)
      If Asc(Mid(s, i, 1)) <> Asc(Mid(t, i, 1)) Then
        Debug.Print "Stelle " & i & ": " & Asc(Mid(s, i, 1)) & " <> " & Asc(Mid(t, i, 1))
      End If
    Next i
    
    MsgBox "Fertig"
    
End Sub
Sub WriteToFile(Datei As String, s As String)
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Const TristateUseDefault = -2, TristateTrue = -1, TristateFalse = 0
    Dim fs, f
    Set fs = CreateObject("Scripting.FileSystemObject")
    Set f = fs.OpenTextFile(Datei, ForWriting, True, TristateUseDefault)
    f.Write s
    f.Close
End Sub

Sub Schreibtest2(Datei As String, s As String)

    Open Datei For Binary Access Write As #1
      Put #1, , s
    Close #1

End Sub

Gruß Mr. K.


Ihre Antwort
  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen
Thema: Name: Email:

 
 

  • Bitte beschreiben Sie Ihr Problem möglichst ausführlich. (Wichtige Info z.B.: Office Version, Betriebssystem, Wo genau kommen Sie nicht weiter)
  • Bitte helfen Sie ebenfalls wenn Ihnen geholfen werden konnte und markieren Sie Ihre Anfrage als erledigt (Klick auf Häckchen)
  • Bei Crossposting, entsprechende Links auf andere Forenbeiträge beifügen / nachtragen
  • Codeschnipsel am besten über den Code-Button im Text-Editor einfügen
  • Die Angabe der Emailadresse ist freiwillig und wird nur verwendet, um Sie bei Antworten auf Ihren Beitrag zu benachrichtigen

Thema Datum  Von Nutzer Rating
Antwort
Rot Mit TextStreamObject erstellte Binärdatei kann nicht geöffnet werden
22.10.2022 16:13:04 xlKing
NotSolved
22.10.2022 16:27:15 xlKing
NotSolved
22.10.2022 16:46:35 Mase
NotSolved
24.10.2022 11:11:10 Der Steuerfuzzi
NotSolved
25.10.2022 22:04:49 xlKing
NotSolved
26.10.2022 01:43:51 Gast19268
NotSolved