Hi,
ich kann Dateien (MP3) binär öffnen und lesen. Allerdings kann ich nicht die letzten 128 Bytes (1Zeichen = 8 Bit= 1 Byte) korrekt auslesen, noch sie neu beschreiben wie das Demoskript aufzeigt. Tag ID V1 steckt in diesem Abschnitt. Mit StringMid, StringLeft ist dem Ganzen anscheinend nicht beizukommen. Wer weiss eine Lösung? Danke Jan
#include <File.au3>
Opt("TrayIconDebug", 1)
;Preparation
$sSciTEPath = RegRead('HKEY_CLASSES_ROOT\AutoIt3Script\Shell\Edit\Command','')
$sMP3Search = FileFindFirstFile(StringReplace(@ScriptDir & '\*.mp3', '\\', '\'))
$sMP3 = FileFindNextFile($sMP3Search)
If $sMP3Search = -1 Then
$sMP3Source = $sFileOpenDialog('Search for a .mp3 File','','MP3(*.mp3)', 1)
$aMP3Path = StringSplit($sMP3Source, '\')
$sMP3 = $aMP3Path[$aMP3Path[0]]
FileCopy ($sMP3Source, @ScriptDir & $sMP3)
EndIf
MsgBox(4096,'MP3 found:','Take this one for reading:' & @CRLF & $sMP3, 1)
;start of the experiment
$iMP3 = FileGetSize ($sMP3) ; for each Chr one Byte FileGetSize = whole number of Chr in file
$hMP3 = FileOpen ($sMP3, 16) ; read in binary mode. This works
$hControl = FileOpen ('control.txt', 2)
$h1Write128 = FileOpen ('1Write128.txt', 2)
$h2Write128 = FileOpen ('2Write128.txt', 22)
$h3Write128 = FileOpen ('3Write128.txt', 22)
$h4Write128 = FileOpen ('4Write128.txt', 2)
$sSec128 = ''
$sAllChrInMP3 = FileRead ($hMP3)
[/autoit][autoit][/autoit][autoit]FileWrite ($hControl, $sAllChrInMP3) ; this is for your control. It works
MsgBox(4096, 'Info0', 'Controlfile finished',1)
;First try with StringLeft
FileWrite ($h1Write128, StringRight ($sAllChrInMP3, 128)) ; try to get last 128 Chr - doesn't work
MsgBox(4096, 'Info', 'First try finished',1)
#cs
;Second try to read each Chr
For $i = 1 to $iMP3
$sChr = FileRead($hMP3, 1)
If $i > $iMP3 -128 then $sSec128 = $sSec128 & $sChr
Next
FileWrite ($h2Write128, $sSec128)
MsgBox(4096, 'Info2', 'Second try finished',1)
#ce
FileWrite ($h1Write128, StringRight ($sAllChrInMP3, 128)) ; try to get last 128 Chr - doesn't work
MsgBox(4096, 'Info', 'Second try finished',1)
;Third try with StringMid
FileWrite ($h2Write128, StringMid($sAllChrInMP3, StringLen($sAllChrInMP3) - 127, 128))
MsgBox(4096, 'Info3', 'Third try finished',1)
;Fourth try
$CountLines = _FileCountLines($sMP3)
$sLastLine= FileReadLine($hMP3, $CountLines)
FileWrite ($h4Write128, $sLastLine)
$sAllChrInMP3 = StringRight(FileRead ($hMP3), 128)
FileWrite ($h4Write128, $sAllChrInMP3)
MsgBox(4096, 'Info3', 'Fourth try finished',1)
;Show the results
FileClose($hControl)
FileClose($h1Write128)
FileClose($h2Write128)
FileClose($h3Write128)
FileClose($h4Write128)
$sAllF =' "' & @ScriptDir & '\1Write128.txt" "' & @ScriptDir & '\2Write128.txt" "' & @ScriptDir & '\3Write128.txt" "' & @ScriptDir & '\4Write128.txt"';@ScriptDir & '\' & $sMP3 & '" "' & @ScriptDir & '\control.txt" "' &
[/autoit][autoit][/autoit][autoit]Run ( $sSciTEPath & $sAllF, '')
[/autoit]