Genri
Advanced Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору MihailM Цитата: что я неправильно задал то ? | -- хм, по большому счету все неправильно. Изначально не был указан формат файла. До сих пор не указано что именно в нем надо менять. Не приведен пример изначального файла и что хотим видеть после изменений. Нет информации в какой момент инсталлятор должен произвести замену и т.д. Т.е. по большому счету, известно лишь: что-то где-то когда-то надо заменить на что-то Хотя вру: "где-то" частично известно - файл формата XML. Правда неизвестно где именно он находится по отношению к инсталлятору. В честь наступающего праздника, я поясню, для чего я задаю дополнительные вопросы (хотя обычно я этого не делаю - если человек не хочет отвечать на доп.вопросы, это его проблемы. Пусть ищет решение сам). Дело в том, что замену подстроки можно сделать самыми разными способами. У каждого способа есть свои недостатки и свои преимущества. Чтобы предложить оптимальное решение, необходимо точно представлять как начальные условия задачи, так и результат, которого хотят добиться. Например, если заменяемая подстрока является полной одной строкой текста, можно использовать TStringList. Иногда, удобней штатная StringChangeEx. Кроме того, есть еще такая функция как Format. Если структура файла напоминает INI-файл - можно использовать GetIniString. Я на практике сталкивался с файлом конфигурации, который практически полностью соответствовал формату ини-файла, но без секции (только параметры). И вместо того чтобы парсить его ручками, мне было достаточно добавить в него первой строкой [TEMP] и дальше работать через штатные функции Inno. Теперь вернемся к нашему вопросу. Если я правильно понял, необходимо автоматизировать замену подстроки. Но я пока совершенно не понимаю, в какой момент это необходимо делать. Надо чтобы подстрока была изменена непосредственно перед компиляцией и результирующий файл включен в инсталлятор? Или надо изменить строку в файле в процессе инсталляции? И как я сказал выше - нет примера (что было и что стало). Тут ведь тоже много подводных камней. Ну например, ты все-таки настоял на использовании StringChangeEx. ОК. А потом выяснится, что в изначальном файле может быть как Bobo, так и bobo. Т.е. перед поиском надо еще приводить к одному регистру. А потом искомая подстрока случайно совпадет с другим параметром.. Ну и т.д. Так что, вопросы еще будут.
|