-
AutoIt
(
http://forum.oszone.net/forumdisplay.php?f=103)
.:TimoXa:. |
24-03-2009 22:04 1073714 |
редактирование файла
Подскажите есть ли возможность редактирование файла в бинарном режиме не в текствой (допустим exe файл какойнибудь, а в нем изменить с смещением какойто байт)?
Подскажите пожалуйста!
|
Цитата:
FileOpen ( "filename", mode )
mode=16 - принудительное бинарное (по байтам) чтение и запись с помощью FileRead и FileWrite
|
это?
Код:
#region: - Option
Opt('MustDeclareVars', 1)
Opt('TrayIconHide', 0)
Opt('TrayIconDebug', 1)
#endregion
#region: - Global
Global $sNotepadRealPath = 'c:\WINDOWS\NOTEPAD.EXE'
Global $hFile
Global $sBinaryText
#endregion
$hFile = FileOpen($sNotepadRealPath, 16)
$sBinaryText = FileRead($hFile)
MsgBox(0, '', $sBinaryText)
|
.:TimoXa:. |
26-03-2009 09:07 1075036 |
proxy, спсибо большое, а не подскажешь как делать так чтоб файл полностью читался, а то у меня в файле 290 тысяч символов а autoit открывает только 10 тысяч (
|
Код:
#region: - Option
Opt('MustDeclareVars', 1)
Opt('TrayIconHide', 0)
Opt('TrayIconDebug', 1)
#endregion
#region: - Include
#endregion
#region: - Global, Local
Global $iCountReadChar = 9000
Local $sFilePath = @SystemDir & '\tapi.dll'
Local $aBinaryText
#endregion
$aBinaryText = _File_Read_Binary($sFilePath)
If $aBinaryText <> -1 Then _
MsgBox(0, 'Последний результат чтения: ' & $aBinaryText[0], $aBinaryText[$aBinaryText[0]])
Func _File_Read_Binary($sFilePath)
Local $hFile, $sString, $aBinaryText[1], $i
$aBinaryText[0] = 0
$i = 1
$hFile = FileOpen($sFilePath, 16)
If $hFile == -1 Then
MsgBox(32, 'Внимание', 'Невозможно открыть файл:' & @CRLF & $sFilePath & @CRLF & 'Ошибка:' & $hFile)
Return -1
EndIf
While 1
$sString = FileRead($hFile, $iCountReadChar)
If @error == -1 Then ExitLoop
$aBinaryText[0] += 1
ReDim $aBinaryText[$aBinaryText[0]+1]
$aBinaryText[$i] = $sString
;~ MsgBox(0, 'Результат чтения: ' & $i, $aBinaryText[$i])
$i += 1
Wend
FileClose($hFile)
;~ MsgBox(0, 'Последний результат чтения: ' & $aBinaryText[0], $aBinaryText[$aBinaryText[0]])
Return $aBinaryText
EndFunc
|
Цитата:
Цитата .:TimoXa:.
как делать так чтоб файл полностью читался, а то у меня в файле 290 тысяч символов а autoit открывает только 10 тысяч »
|
чего-то не то говорите - согласно справки размер строки ограничен аж 2Gb = 2147483648 байт
Код:
$sFile = @SystemDir &"\oembios.bin"
$hFile = FileOpen($sFile, 16)
$bin = FileRead($hFile, FileGetSize($sFile))
ConsoleWrite(BinaryLen($bin) &@CRLF)
к сожалению, штатными средствами поддерживается только поседовательный доступ к файлам - чтобы прочитать байт в любом месте большого файла, приходится полностью прочитывать его от начала файла до нужного места
|
Время: 02:47.
© OSzone.net 2001-