Hallo libe Gemeinde,
ich werd noch kirre! Ich möchte einfach ein text file (sieht wie folgt aus)
:200100001D0080470C800000009000000000000000000000000000000000000000000000DF
:200120000040036D0022286D000C006D00AE086D0080006D00C21E6D00C0251D0026004D
:20014000911000FDDA00D9FF28D834FF911000FD8200D9FF7C5A820189F04009911000FD6B
:200160008200D9FF506A820189F04009911000FD8200D9FF446A820189F04009911000FD9D
:20018000D9FF4C6A34FF00906D00141C6D003200911000FDD9FF4C6ADA0134FF3C246D00CB
usw.
auslesen, den orange markierten Teil extrahieren und dann diesen extrahierten String in ein temp file im binär Format speichern. Dies würde dann in einem Hex-Editor für die erste Zeile in etwa so aussehen.
00000000h: 1D 00 80 47 0C 80 00 00 00 90 00 00 00 00 00 00
00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
Ich bekomm's auch so einigermaßen hin aber die Nullen im String stellen ein Problem dar. Hier mein Skript:
Spoiler anzeigen
;Sourcefile öffnen
$hFile = FileOpen(@ScriptDir & "\test.hex", 0)
If $hFile = -1 Then
MsgBox(4096,"ERROR","Reading sourcefile failed!!!")
Exit
EndIf
; temp file
$temp_file = FileOpen(@ScriptDir & "\test.tmp",2 + 16)
If $temp_file = -1 Then
MsgBox(4096,"ERROR","Opening temp file failed!!!")
Exit
EndIf
; index der aktuell gelesenen Zeile
$i = 1
; File einlesen
While 1
; Lese Zeile fuer Zeile
$string = FileReadLine($hFile, $i)
If @error = -1 Then ExitLoop
$sString = ""
; Extrahiere Datensatz
$StringLength = StringLen(StringMid($string, 10, StringLen($string)- 1 - 10))
; wandle jedes byte in ein ASCII Zeichen
for $j = 1 to $StringLength Step 2
$char = Chr("0x" & StringMid(StringMid($string, 10, StringLen($string)- 1 - 10), $j, 2))
$sString = $sString & $char
Next
; schreibe Zeile fuer zeile in temp file
If Not FileWrite($temp_file, $sString) Then
MsgBox(0, "Error", "Unable to write File")
Exit
EndIf
$i = $i + 1
[/autoit] [autoit][/autoit] [autoit]Wend
FileClose($hFile)
FileClose($temp_file)
Das Ergbenis dieses Skripts sieht im Hex Editor betrachtet, wie folgt aus:
00000000h: FF FE 47 00 0C 00 80 00 00 00 00 00 00 00 90 00
00000010h: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
1.) Das FF FE bedeutet wohl UTF-16 Little Endian. Aber woher kommt das? ich sag doch bei FileOpen, dass ich das File im binary Mode schreiben will.
2.) Wo sind die ersten 3 Zeichen (1D0080) hin???
Hoffe Ihr könnt mir weiterhelfen.
Danke im voraus!!!