AkulaBig писал(а):Вернее обмен названиями секций. Тут еще важно, что скрипт-образец меняет только названия двух секций между собой.
Большинству пользователей именно это и нужно - смена двух-трех секций, т.е. отключение и обратное включение секции, как в случае с [Associations]. Просто вы взялись за более амбициозную задачу, при которой прописка всех секций в параметрах скрипта невозможна, и, видимо, придется делать как-то по-другому, если только вы действительно не пропишите в массиве arrLang все существующие на данный момент языки. Теоретически можно такое сделать, если создать пустые секции для отсутствующих языков, но мне кажется, это будет некоторым перебором.)
AkulaBig писал(а):А как тогда вы узнаете, на каком языке текущая секция? С этим проблема.
На мой взгляд, верный выход - хранить в самой секции информацию о языке, тогда ее ни с чем не перепутать:
Код: Выделить всё
[user]
Lang=rus
menu1=-Помощь
menu2=Справка 9.51 (ru)
...
[User_eng]
Lang=eng
menu1=-MS Windows
menu2=Calculator
...
[User_rus]
Lang=rus
menu1=-Помощь
menu2=Справка 9.51 (ru)
...
Правда пользователь должен знать об этом ключе, чтобы самостоятельно его добавлять к секции своего языка. Но этот способ надежен и позволит сразу считывать информацию о текущем языке и сохранять его перед пепреключением.
Можно еще попробовать создать в ini-файле отдельную секцию для хранения сведений о текущем языке, т.е.:
И отталкиваться от этого при переключении на новый язык. В общем, варианты есть
AkulaBig писал(а):С этим алгоритмом универсальный не получится. Но ведь перебить название не так и долго.
Если нужно поменять местами 2-3 секции, вполне получится, на мой взгляд. А перебить - дело нехитрое, только универсальности в этом никакой: для нескольких схожих задач придется держать несколько экземпляров одного и того же скрипта с небольшими вариациями.
AkulaBig писал(а):Это понятно. Но я проверил на архивировании 8 Гб данных. Скорость не изменилась. Будет сильно грузить систему, изменю.
Ну вы совсем что ли хотели устроить стресс-тест своему алгоритму?

Очень может быть, что поток станет задерживаться при больших нагрузках на ЦП, и Sleep(1000) легко превратится в Sleep(1500) по факту. Но зачем пользователю при таких больших нагрузках в фоне переключать язык в ТС? )) Я думал, речь идет о скорости выполнения скрипта, а не задержках в цикле. Но можно попробовать и этим управлять с помощью функции GetCPUUsage:
Код: Выделить всё
cpu = GetCPUUsage()
If cpu < 10 Then
Sleep(1000)
ElseIf cpu < 30 Then
Sleep(800)
ElseIf cpu < 50 Then
Sleep(700)
Else
Sleep(500)
Endif
Это была шутка, если что

Но в Autorun таких шуток много можно придумать ))
P.S. А по поводу wsh я не стал бы париться. На компах, где админы не доставляют компоненты или запрещают политикой выполнение скриптов, сборкам ТС, имхо, делать нечего.)