Функция для добавления текста в файл с учётом нумерации, на примере Scenery.cfg
Добрый день.
Многие энтузиасты Flight Simulator X часто сталкиваются с потребностью добавлять новые текстовые записи в конфигурационный файл симулятора. Помогите пожалуйста с функцией для скрипта автоматической установки сценариев. Вся работа производится на чистом энтузиазме, и ваша помощь действительно сэкономит время многим людям. Задача: Есть готовый текстовый файл по пути c:\Users\All Users\Microsoft\FSX\ с именем Scenery.CFG Имеет структуру: Код:
Функция сама находит максимальное значение числа в строчках Area и Layer (по всему файлу), после чего увеличивает Area на еденицу и Layer на еденицу. Записывает результирующий кусочек текста в конец файла. Результатом ее работы должно стать добавление такого кусочка текста в исходный файл c примером: Код:
[Area.129] Заранее спасибо за потраченное вами время и участие. |
Так ? :
Код:
;$sFilePath="c:\Users\All Users\Microsoft\FSX\Scenery.CFG" |
Я не очень разбираюсь в синтаксисе AutoIt...
А где здесь переменная в которую задавать Title=Ibiza X Ground Local=Aerosoft\Ibiza X Ground и их вывод в результирующий файл. и где вывод вот таких строчек Active=TRUE Required=FALSE ? |
twister777,
Как я понял, файл Scenery.CFG имеет структуру ini-файла. Тогда можно так попробовать: Код:
Opt('MustDeclareVars', 1) |
madmasles,
Да, это похоже на ini-файл. Вот это, мне кажется, то, что нужно, жаль я сейчас на работе - нет возможности скомпилировать и проверить работоспособность ((( Я хочу уточнить. ------------------------------------------------------------------- при выводе: [Area.129] ; числовое значение меняется, а все буквы и скобки неизменны Title=Ibiza X Ground ; 'Title=' неизменные символы , 'Ibiza X Ground' задаётся в Global Local=Aerosoft\Ibiza X Ground ; символы после знака равно это путь, он НИКАК не связан с Title, он должен задаваться в Global,а вашем варианте они связаны Active=TRUE ; эта строчка всегда неизменна Layer=126 ; числовое значение меняется, а все буквы и '=' неизменны Required=FALSE ; эта строчка всегда неизменна ----------------------------------------------------------------------------------------------- P.S. Я даже не ожидал, что так быстро найдётся почти готовое решение, спасибо. |
Цитата:
Код:
#include<Array.au3> |
gregaz,
Строчка вывода 2 и 3 должна где-то задаваться - там прописываются пути и названия, они разные, в этом смысл автоматизации. http://forum.oszone.net/post-1557491-5.html Вам тоже спасибо за вариант решения. После 20.00 МСК попробую оба варианта дома на практике. |
Цитата:
Цитата:
Цитата:
Title=Ibiza X Ground связаны или нет с Local=Aerosoft\Ibiza X Ground? Путь к файлу Scenery.CFG и его имя постоянны или нет? |
madmasles,
Цитата:
Цитата:
Нужно в функцию передать Title= (например 'Island of Ibiza') и передать путь к сценарию Local= (например 'Aerosoft\Ibiza X Ground') ---------------------------------------------------------------------------------------------------- функция, скорее всего, будет вызываться несколько раз последовательно (будут добавляться несколько разных итоговых секций за один запуск главного скрипта) |
twister777,
Если я все правильно понял, то сейчас функция должна работать как надо. Я код в своем посте поправил. Можно еще с окном типа Код:
#include <GUIConstantsEx.au3> |
madmasles,
Проверил, функция работает отлично. Если не сложно, поправьте мою ошибку - сейчас перепроверил структуру недоглядел. При выводе строчку Layer выводить после Local, затем Active, затем Required [Area.129] Title=Ibiza X Ground Local=Aerosoft\Ibiza X Ground Layer=126 Active=TRUE Required=FALSE Огромное вам спасибо!!!! Если интересно будет что-нибудь по теме симуляторов - смело пишите: williamfoxtrot[@]gmail[dot]com |
twister777,
Поправил: Есть нюанс. Если нет ни одной секции [Area.***], то будет добавлена секция [Area.001] и значение Layer=1. Можно это значение изменить. Можно, наверное, еще задать какие-то условия на проверку валидности Title и Local. |
madmasles,
Не стоит. Area.001 по Area.120 уже есть с самого начала установки симулятора. Это стандартные сценарии. Мы добавляем хорошие, красивые - просто разработчикам очень часто не хватает квалификации написать утилитку для их регистрации. |
Цитата:
если я конечно правильно понял, и под разработчиками имелось в виду именно разработчики симулятора, а не чего бы то ни было еще |
kaster,
|
Время: 16:06. |
Время: 16:06.
© OSzone.net 2001-