_HextoString vs. FileRead

  • Mahlzeit
    Ich hab da was gefunden was seltsam ist und zwar :

    Spoiler anzeigen
    [autoit]


    #include <String.au3>
    $file = FileOpen('c:\b.txt', 0)
    $read = FileRead($file)
    MsgBox(0, "File", $read)
    ;$read = "0x44696573206973742065696E205465737420537472696E67"
    $re = _HexToString($read)
    MsgBox(0, "Ergebnis", $re)

    [/autoit]


    In beiden MsgBox kommt das selbe Ergebniss obwohl doch die untere nach dem _HextoString ist.
    In dem b.txt File ist nur die auskommentierte Zeile, die wenn ich das Semikolon entferne dann ein richtiges Ergebnis liefert.
    Aber beide Boxen sind so gleichen Inhalts. Somit ist kein Fehler zu sehen und es funktioniert trotzdem nicht.

    Einmal editiert, zuletzt von YayYo (23. November 2010 um 15:23)

  • also wenn ich dein bsp ausprobiere bekomme ich bei der ersten msg wie es sein soll die hexwerte und nach der 2. bekomm ihc den richtigen string...

    ich hab in der textdatei folgendes drinn

    Spoiler anzeigen

    0x44696573206973742065696E205465737420537472696E67

    damit geht es wunderbar...

  • Ja das hab ich auch in der .txt aber beide MsgBox'en geben das auch wieder aus so.
    _HextoString tuts einfach nicht konvertieren

  • Es ist so wie oben im Spoiler.
    Auch wenn ich direkt
    $x = "Hex Code" mache
    ist es Ok, nur halt nicht aus dem File herraus X(

  • StringtoBinary ergibt in der unteren Box eine noch längere Zeichenkette die aber nicht Binär ist.
    Auch mit 0x beginnend und Hex

    Ist es möglich das ich eine alte/falsche String.au3 habe ?
    meine hat 20 kB.
    Wenn jemand eine andere hat, könnt der mir die bitte als Anhang bei tun
    Das ist meine Func aus der String.au3

    [autoit]


    Func _HexToString($strHex)
    If StringLeft($strHex, 2) = "0x" Then Return BinaryToString($strHex)
    Return BinaryToString("0x" & $strHex)
    EndFunc ;==>_HexToString

    [/autoit]

    2 Mal editiert, zuletzt von YayYo (23. November 2010 um 14:36)

  • Wieso jetzt _StringToHex?

    [autoit]

    #include <String.au3>

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

    ;$read = "0x44696573206973742065696E205465737420537472696E67"

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

    $file = FileOpen('c:\b.txt', 0)
    $read = FileRead($file)
    fileclose($file)
    MsgBox(0, "test", vargettype($read)) ;was kommt hier raus? "String" oder?
    $re = _HexToString($read) ;bzw. binarytostring($read)
    MsgBox(0, "Ergebnis", $re)

    [/autoit]
  • Nicht ganz.
    Leerzeichen sind auch noch da.

    [autoit]


    #include <String.au3>

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

    ;$read = "0x44696573206973742065696E205465737420537472696E67"

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

    $file = FileOpen(@ScriptDir&'\b.txt', 0)
    $read = FileRead($file)
    fileclose($file)
    MsgBox(0, "test", vargettype($read)) ;was kommt hier raus? "String" oder?
    $re = _HexToString(StringStripWS($read,8)) ;bzw. binarytostring($read)
    MsgBox(0, "Ergebnis", $re)

    [/autoit]
  • Das versteh ich jetzt nicht
    mit der Zeile gehts
    $re = _HexToString(StringStripWS($read,8))
    Du meinst die Leerzeichen im String selber ?
    Aber die werden doch auch bei
    $x = "Hex Code" mitgelesen
    so das das Ergebnis richtig ist. Also ohne aus dem File.

  • Mit Fileread wird dein ganzes Textfile gelesen (inkl. Leerzeichen, Zeilenumbrüche usw.).

    Das entspricht mit deiner .txt Datei so ungefähr:

    [autoit]

    "0x44696573206973742065696E205465737420537472696E67"& @crlf

    [/autoit]
  • omg
    Ich hatte schon voll Panik das was kaputt ist oder ne Virus usw.
    Nun funkt. b.txt. Das konnt ich nicht ahnen
    Dabei hat ich auch die Hilfe "gewälzt"

    Vielen Dank für deine Mühe und Geduld. :P