![]() |
Изменить значение параметра — Не INI файл!
Синтаксис обычный: параметр = значение, номер строки не известен.
Текущее значение неизвестно, и даже может быть пустым. Например: position.width=1152 position.height=816 Здесь видимо можно обрубить по знаку равенства "=" через StringRegExp(), но я не знаю как... --- Я уже думал нашёл решение, просто переименовав файл, но проблемма оказалась в том, что файл вдобавок не имеет секций [] |
semiono, ну добавь секцию руками, обработай как INI, потом снова удали секцию.
|
Можешь набросать как примерно? Потому что я с записью и удалением секции "нагорожу забор"!
Лучше посмотреть как это адекватно зделать. Вот сам текст примерно такой Код:
# SciTE session file |
semiono,
Можно так попробовать: Код:
$sStringW = 'position.width=' |
Код:
$sPath = @ScriptDir & '\SciTE.session'; Scite.Session file path' |
kaster, работает правильно как бы, но такое наблюдение, что снизу файл начинает зачищаться.
То-есть файл становиться всё меньше с каждым запуском снизу и даже начинает затирать сами строки position.width=1152 position.height=816... странно! madmasles, если начальные значения не соответствуют разрядности, то не работает. :) То-есть 1111 > 1152 нормально! Но 111 > не станет 1152 |
semiono, не знаю. у меня ничего не зачищается. да и не должно по идее. возможно сам редактор привносит в этот файл изменения.
|
semiono,
Как скрипт kaster`a, так и мой отрабатывает у меня как надо. Если Вы его запускаете из открытого окна SciTE, то он возвращает старые значения. Закройте окно SciTE и запустите скрипт правой кнопкой через Run Script. Цитата:
|
Вот функция которую я когда то писал для обработки ключей в файлах *.properties:
Код:
#include <Array.au3> |
Добавил в пример выше функцию для записи, также поддерживает запись многострочного значения.
|
Вчера до ночи сидел, правда у меня сидение малопродуктивное, сейчас буду посмотреть.
Про SciTE верно, я сам подумал, что он может вносить изменения, ведь это его конфиг, однако сразу же засомневался, так как я в основном кликом скрипт открывал. Ещё одна идея есть о том, что я в папке профиля чудил, а на папки профиля сколько помню в различных логах выводится, что файл защищён правами... нечто такое помню... Но не будем об этом, пусть спишется как странный глюк непонятный )) Ещё возможно, что я быстро файл открывал посмотреть, и якобы он не весь прописался, такое тоже вероятно, но тогда получается, что скрипт слишком уж доооолго работает! Ладно с этим понятно, раз уж всё разложили по полочкам буду доверять коду. Только теперь не знаю что лучше, все три варианта, но Creat0R, интригующе самый солидный скрипт! Ок! Кстати, я уже говорил давно, жаль что такого простого среди функций нет. А самое лучшее бы было из ini- функций как-то превратить, так как там именно под задачу заточенно, возможно я ошибаюсь. И конечно возмутительно что FileWright пишет дополнение в конец файла, кому такая наивность тут нужна! Эх autoit3.com (C) всё чаще разочароывает, так как идея скриптов идея быстрого и простого создания скриптов... 8-) |
Обновил функцию для записи, теперь можно указать номер строки куда будет записываться ключ, при этом ключ из старого местоположения удаляется. Т.е предотвращается дублирование записи.
|
madmasles, а ведь твой скрипт не изменяет файл! Чем же я сам запишу $sText, FileWright тупо добавит строку в файл.
Creat0R, я не знаю как твою функцию юзать, это для просвещённых. Вчастности, непонятно как указать нужное значение. |
|
Внимание, работает код от kaster! Фрагменты # SciTE session file с низу.
buffer.1.path=C:\I\WinSxS\Process\New AutoIt v3 Script.au3 buffer.1.position=46 buffer.1.current=1 ---->8 buffer.1.path=C:\I\WinSxS\Process\New AutoIt v3 Scr --->8 buffe ---->8 Конфиг съедает сам себя :) Цитата:
|
Цитата:
Код:
$sPath = @ScriptDir & '\Scite.Session' |
Вот это другое дело! Работает даже при буквенных значениях =zzzzzzzzzzzzzzzzzzzz любой длины!
И при пустом значении = Ну для правильности добавим правильный путь $sPath = @UserProfileDir & '\SciTE.session' Это же реальный SciTE.session конфиг, так что можете тоже пользоваться! kaster, madmasles, Creat0R, спасиб! :) |
Цитата:
|
$sPath = @UserProfileDir & '\SciTE.session'
_IniWriteProperty($sPath, 'position.left', '0') _IniWriteProperty($sPath, 'position.top', '0') _IniWriteProperty($sPath, 'position.width', @DesktopWidth) _IniWriteProperty($sPath, 'position.height', @DesktopHeight-52) _IniWriteProperty($sPath, 'position.maximize', '0') Все параметры, заодно. :) Creat0R, конечно хватит, 2048 максимум по-моему. :) Но ты намекашь, что твой код интелектуальней. Надеюсь ошибок там нету из-за сложности функции? Однако, там наверное лишнего много для этой задачи. Вообщем мне хватит пока то что есть :) |
Creat0R, ну не знаю. у меня ведь ничего не съедалось. Да и потом, логика подсказывает, что закрытие неверного хендла всего лишь вернет 0. А после этой строки нет ничего, стало быть скрипт завершится и файл сам закроется.
|
semiono,
Если Вы устанавливаете значения @DesktopWidth и @DesktopHeight, то надо, наверное проверить, чтобы position.left и position.top были равны 0. |
madmasles, да. Только не проверить, а сразу записать. Но там важнее всего было сбросить maximize.
Скрипт вдобавок ещё и создаёт файл если его не было изначально! |
Время: 13:54. |
Время: 13:54.
© OSzone.net 2001-