TCP "NUL" Senden

  • Hi,
    die Strings in AutoIt erlauben sehr wohl ein Chr(0). Allerdings wird, wie auch schon von einigen angemerkt, ein String bei der AUSGABE (d.h. MsgBox, Console und bei einigen Stringbearbeitungsfunktionen ) nur bis zu diesem Nul-Zeichen ANGEZEIGT!
    Nulzeichen lassen sich natürlich auch in (Text)-Dateien schreiben, allerdings besteht dann wieder das Problem der ANZEIGE der Datei.

    [autoit]

    $string="ABC"&chr(0)&"DEF"
    ;testen, wird nur bis zur NUL dargestellt
    ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $string = ' & $string & @crlf & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
    MsgBox(262144,$string, stringlen($string));3 Zeichen angezeit, stringlänge 7 Zeichen

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

    ;scite
    filewrite("testabc.dat",$string)
    shellexecute("scite.exe"," testabc.dat",@ScriptDir )

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

    Scite stellt die NUL problemlos dar....

    TCP überträgt die NUL natürlich auch, lässt man sich den übertragenen String mit einer MsgBox() anzeigen, dann geht das natürlich in die Hose....s.o.

  • Ich denke deine Strings sollen nicht im ASCII-Format übertragen werden, sondern als UTF-16:

    [autoit]

    $string = "Ein Test"
    $packet = StringToBinary($string, 2)
    MsgBox(0, "", $packet)
    TCPSend($socket, $packet)

    [/autoit]