Binärdaten werden nicht richtig in Datei geschrieben

  • Hi,

    ich habe per Fileread im binarymode eine Datei ausgelesen und 0x5465737 (auch wenn das hex und nicht binary ist 8| ) erhalten. Diesen String habe ich an einen anderen Computer gesendet, der wiederum daraus die Datei erstellen soll. In meinen bisherigen Versuchen wurde der String aber immer übernommen wie er binär angekommen ist und nicht in die Datei umgewandelt (Fileopen(..., 17) und dann reingeschrieben).

    Könnt ihr mir weiterhelfen?

    Vielen Dank,
    Aquaplant

    //habs hinbekommen danke

    Einmal editiert, zuletzt von Aquaplant (14. Februar 2011 um 18:36)

  • Moin Aquaplant.

    Könntest Du bitte ein Beispielscript (bzw. das betreffende Script) posten, damit man schauen kann, wo evtl. der Fehler ist.

    Vielen Dank.

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Sender:

    [autoit]

    $FilePfad = FileOpenDialog("Datei", @ScriptDir, "all(*.*)", 3)
    $File = FileOpen($FilePfad, 16)
    $Fileinhalt = FileRead($File)
    FileClose($File)
    $String = StringLeft($Fileinhalt, $count) ;$count = 99999
    FileWrite(@TempDir & "\snd\" & $filenumber & ".tmp", $String)
    $2Send = FileRead(@TempDir & "\snd\" & $AktDatei & ".tmp");die selbe Datei
    ;TCPSend($Main_Socket_Connect, _chiffre("%iFt%" & $Name_Eigen & "þ" & $2Send & "þ" & $SumFiles))

    [/autoit]

    Empfänger:

    [autoit]

    $array = StringSplit($sMSG, "þ")
    If $array[0] = 3 Then
    $eman = $array[1]
    $Dateinummer = $array[2]
    $Dateiname = IniRead(@TempDir & "\" & $eman & "\session.ini", "file", "name", "")
    MsgBox(0, "", $array[3])
    If $Dateiname <> "" Then
    FileWrite(@TempDir & "\" & $eman & "\" & $Dateiname & ".tmp", StringTrimRight($array[3], 1))
    FileMove(@TempDir & "\" & $eman & "\" & $Dateiname & ".tmp", @DesktopDir & "\" & $Dateiname)
    DirRemove(@TempDir & "\" & $eman, 1)
    Endif
    Endif

    [/autoit]

    So ganz grob, im Grunde im binarymode öffnen, in eine neue Datei zwischenspeichern (falls die Datei etwas größer ist) dann wieder normal auslesen (binary ist ja reingeschrieben) und senden. Empfänger hat den Binärstring und soll damit die Datei schreiben.

  • Hallo Aquaplant,

    hier ein Beispiel, dass die Daten einliest in einem TmpFile binär speichert und danach aus diesem Tmpfile wieder das Original herstellelt:

    [autoit]


    $TMPDatei = @ScriptDir & "\test.tst"
    $DestDatei = @ScriptDir & "\test.jpg"

    [/autoit][autoit][/autoit][autoit]

    $FilePfad = FileOpenDialog("Datei", @ScriptDir, "all(*.*)", 3)
    $File = FileOpen($FilePfad, 16)
    $Fileinhalt = StringToBinary(FileRead($File,FileGetSize($FilePfad)))
    FileClose($File)
    $File = FileOpen($TMPDatei, 2)
    FileWrite($File, $Fileinhalt)
    FileClose($File)
    $File = FileOpen($TMPDatei)
    $Fileinhalt = BinaryToString(FileRead($File))
    FileClose($File)
    $File = FileOpen($DestDatei, 18)
    FileWrite($File, $Fileinhalt)
    FileClose($File)

    [/autoit]

    mfg autoBert