Что нового

Не получае скопировать строки в файл.

DmitriyM

Новичок
Сообщения
10
Репутация
1
Добрый день.
Не копирует по одной строке,а не весь файл.И меняет кодировку.


Код:
#include <File.au3>;
#include <Array.au3>
#include <FileConstants.au3>

$strok=_FileCountLines("firefox.exe");
$t2 = 1;
While $t2 <= $strok;
$sLine20 = FileReadLine("firefox.exe",  $t2);
FileWriteLine ( '1\firefox.exe', $sLine20);
$t2 = $t2 + 1
WEnd

Как построчно скопировать с первоначальной кодировкой ANSI?Если FileOpen("firefox.exe") не ставить,то по умолчанию в анси должен открывать.
 

Вложения

  • firefox.zip
    316 КБ · Просмотры: 8
Последнее редактирование:

Oki

Продвинутый
Сообщения
452
Репутация
62
Построчно из exe-файла? Это как и для чего? Искать текстовую разметку там, где она не предусмотрена, да ещё и с надеждой на читаемую кодировку, занятие бесперспективное. С целями для начала следует определиться.
 
Автор
D

DmitriyM

Новичок
Сообщения
10
Репутация
1
При изменении одного символа,файл становится нерабочим.Если вручную изменять,то нормально сохраняется.
Код:
$hWrite = FileOpen("firefox.exe", 512);
$sLine20 = FileReadLine($hWrite, 704);   строка 704,символ  89
$sText = StringReplace($sLine20, 89, '8');104
_FileWriteToLine('firefox.exe', 704, $sText, 1);
FileClose($hWrite)

Как это можно исправить?
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Я так же не совсем понимаю чего вы пытаетесь добиться, а особенно изменяя exe файл, который банального от удаления символа ломается. Но если вам нужно его модифицировать, то работайте уже с HEX, а не текстом.

Код:
;sInFile файл с которым работаем
;sFind кусок который будем заменять (указывается соотствестенно в байтах
;sReplace ну и собственно на что меняем
;_BinaryReplace("gw_cheonmyunggung_raid_ppv.umap", "536B795F303031", "00000000000000")

Func _BinaryReplace($sInFile, $sFind, $sReplace)
    Local $FO, $FR
    $FO = FileOpen($sInFile, 16)
    $FR = StringReplace(FileRead($FO), $sFind, $sReplace, 0)
    $FO = FileOpen($sInFile, 18)
    FileWrite($FO, $FR)
    FileClose($FO)
EndFunc
 
Автор
D

DmitriyM

Новичок
Сообщения
10
Репутация
1
Этот код не меняет ничего
Код:
$sInFile = 'firefox.exe';
$sFind = '6';
$sReplace = '62.0.2';  
_BinaryReplace("firefox.exe", "62.0.2", "61.0.4")

Func _BinaryReplace($sInFile, $sFind, $sReplace)
    Local $FO, $FR
    $FO = FileOpen($sInFile, 16)
    $FR = StringReplace(FileRead($FO), $sFind, $sReplace, 0)
    $FO = FileOpen($sInFile, 18)
    FileWrite($FO, $FR)
    FileClose($FO)
EndFunc


Попробывал замену символа на С#, с кодировкой ANSI,тоже ломается файл.Нашёл в ответах ru.stackoverflow такой же вопрос на С#.
Ответ такой: с кодировкой ANSI надо загрузить в массив,там сделать замену,и потом выгрузить.
Пока не получается.
 

SealAlbinos

Продвинутый
Сообщения
154
Репутация
57
Видимо не совсем правильно пояснил, я писал про Hex, что нужно искать и менять собственно в нем, а не в тексте
Код:
#include <String.au3>

_BinaryReplace(@ScriptDir & "\firefox.exe", _StringToHex('62.0.2'), _StringToHex('61.0.4'))

Func _BinaryReplace($sInFile, $sFind, $sReplace)
    Local $FO, $FR
    $FO = FileOpen($sInFile, 16)
    $FR = StringReplace(FileRead($FO), $sFind, $sReplace, 0)
    $FO = FileOpen($sInFile, 18)
    FileWrite($FO, $FR)
    FileClose($FO)
EndFunc
 
Последнее редактирование:
Верх