![]() |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
![]() |
Unconnected |
![]()
Сообщение
#1
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Привет всем.
Нужно написать программу, которая заменяла бы в другом файле одну строку на другую, в смысле именно внутри файла. Нашёл код, который это делает, но там условие, чтобы заменяемая и заменяющая строки были одной длины, а мне надо, чтобы заменяющая строка могла быть больше... В принципе, можно сделать, чтобы заменяемая строка была дополнена сторонними символами, пробелами, например, а при замещении при надобности их удалять. Но, может быть, можно при замещении большей строкой "сдвигать" оставшуюся часть файла? -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
amega |
![]()
Сообщение
#2
|
![]() ? ![]() ![]() ![]() Группа: Пользователи Сообщений: 283 Пол: Мужской Репутация: ![]() ![]() ![]() |
а такой вариант не подойдет что б, скопировать сожрежимое файла в память, заменить нужно и перезаписать файл?
|
Unconnected |
![]()
Сообщение
#3
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ну так и будет, или почти так. Вопрос в соответствии длин строк. Попробуй открыть какую нибудь программа HEX-редактором, чтобы нагляднее было, что там внутри:)
-------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#4
|
Гость ![]() |
Это смотря какой файл (в смысле, формат файла). Может случиться, что даже при замене строк равной длины ты получишь проблемы (скажем, если считается CRC, или что-нибудь еще).
|
Unconnected |
![]()
Сообщение
#5
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Это смотря какой файл (в смысле, формат файла). Может случиться, что даже при замене строк равной длины ты получишь проблемы (скажем, если считается CRC, или что-нибудь еще). А, ну EXE, ничем не упакованный, без проверки контрольной суммы.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#6
|
Гость ![]() |
А ты попробуй заменить строку на другую через какой-нибудь Resource Editor, или ResHacker, что-то в этом роде. Я к тому, что строка в EXE-файле она ведь тоже по-разному может представляться. Если с помощью вышеперечисленных программ удалось, то можно попробовать и вручную сделать то же самое. Программа, в которой надо что-то менять, твоя или чужая? (я к тому, что если чужая - то почему ты уверен, что она неупакована, и всегда будет таковой?)
Еще один вопрос: Может, проще менять не в файле, а после запуска найти нужный контрол и там поменять текст? ![]() |
Unconnected |
![]()
Сообщение
#7
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Ну, с помощью WinHEX'а получилось. Программа моя, поэтому искомый заменяемый текст будет жёстко задан.
И надо, чтобы именно создавался с определённой строкой. Создать можно с помощью ресурса, а как так заменить, я не знаю.. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#8
|
Гость ![]() |
Цитата Создать можно с помощью ресурса, а как так заменить, я не знаю.. См. здесь: Sources.RU -> Добавление ресурса |
Unconnected |
![]()
Сообщение
#9
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
Цитата Создать можно с помощью ресурса, а как так заменить, я не знаю.. См. здесь: Sources.RU -> Добавление ресурса Я, наверное, не так выразился.. Как добавить ресурс, и извлечь его, я знаю, мне надо программно заменить в другом файле строку. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
volvo |
![]()
Сообщение
#10
|
Гость ![]() |
Ты по ссылке-то пройди (то, что ты не был там, я вижу, ты говоришь, ориентируясь на НАЗВАНИЕ, а не на СОДЕРЖАНИЕ
![]() |
Unconnected |
![]()
Сообщение
#11
|
![]() mea culpa ![]() ![]() ![]() ![]() ![]() Группа: Пользователи Сообщений: 1 372 Пол: Мужской Реальное имя: Николай Репутация: ![]() ![]() ![]() |
В итоге получилось следующее:) Через HEX-редактор я нашёл в файле адрес нужной строки(в изменяемой программе эта строка предварительно была дополнена пробелами, чтобы был запас длины) и в "билдере" патчил файл побайтно.
Хорошо, что оказался возможным инкремент DWord'а. -------------------- "Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
|
![]() ![]() |
![]() |
Текстовая версия | 8.07.2025 13:34 |