Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Изменить значение параметра — Не INI файл!

Ответить
Настройки темы
[решено] Изменить значение параметра — Не INI файл!

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Изменения
Автор: semiono
Дата: 13-08-2010
Синтаксис обычный: параметр = значение, номер строки не известен.
Текущее значение неизвестно, и даже может быть пустым.
Например:
position.width=1152
position.height=816

Здесь видимо можно обрубить по знаку равенства "=" через StringRegExp(), но я не знаю как...

---
Я уже думал нашёл решение, просто переименовав файл, но проблемма оказалась в том,
что файл вдобавок не имеет секций []

-------
Полезное сообщение


Отправлено: 00:06, 13-08-2010

 

Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Вчера до ночи сидел, правда у меня сидение малопродуктивное, сейчас буду посмотреть.
Про SciTE верно, я сам подумал, что он может вносить изменения, ведь это его конфиг,
однако сразу же засомневался, так как я в основном кликом скрипт открывал.
Ещё одна идея есть о том, что я в папке профиля чудил, а на папки профиля сколько помню
в различных логах выводится, что файл защищён правами... нечто такое помню...
Но не будем об этом, пусть спишется как странный глюк непонятный ))
Ещё возможно, что я быстро файл открывал посмотреть, и якобы он не весь прописался,
такое тоже вероятно, но тогда получается, что скрипт слишком уж доооолго работает!
Ладно с этим понятно, раз уж всё разложили по полочкам буду доверять коду.
Только теперь не знаю что лучше, все три варианта, но Creat0R,
интригующе самый солидный скрипт! Ок!

Кстати, я уже говорил давно, жаль что такого простого среди функций нет.
А самое лучшее бы было из ini- функций как-то превратить, так как там именно под задачу заточенно,
возможно я ошибаюсь. И конечно возмутительно что FileWright пишет дополнение в конец файла,
кому такая наивность тут нужна! Эх autoit3.com (C) всё чаще разочароывает, так как идея скриптов
идея быстрого и простого создания скриптов... 8-)

-------
Полезное сообщение


Последний раз редактировалось semiono, 13-08-2010 в 12:15.


Отправлено: 12:05, 13-08-2010 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Обновил функцию для записи, теперь можно указать номер строки куда будет записываться ключ, при этом ключ из старого местоположения удаляется. Т.е предотвращается дублирование записи.

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 12:26, 13-08-2010 | #12


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


madmasles, а ведь твой скрипт не изменяет файл! Чем же я сам запишу $sText, FileWright тупо добавит строку в файл.


Creat0R, я не знаю как твою функцию юзать, это для просвещённых. Вчастности, непонятно как указать нужное значение.

-------
Полезное сообщение


Отправлено: 13:03, 13-08-2010 | #13


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
я не знаю как твою функцию юзать »
Я же показал пример:

Код: Выделить весь код
_FilePropertyWrite("Scite.Session", "position.width", "666")
Цитата semiono:
непонятно как указать нужное значение »
Ну это уже тебе решать, какое туда записывать значение

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community


Отправлено: 13:08, 13-08-2010 | #14


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Внимание, работает код от 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

Конфиг съедает сам себя

Цитата Creat0R:
Ну это уже тебе решать, какое туда записывать значение »
Не какое, а куда. Вот сейчас понял.

-------
Полезное сообщение


Отправлено: 13:16, 13-08-2010 | #15


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
Я уже думал нашёл решение, просто переименовав файл, но проблемма оказалась в том,
что файл вдобавок не имеет секций [] »
Вот немного изменённый пример Kaster'а (там у него кстати ошибка в FileClose($sContent) - возможно отсюда и проблема с затиранием строк):

Код: Выделить весь код
$sPath = @ScriptDir & '\Scite.Session'

_IniWriteProperty($sPath, 'position.width', @DesktopWidth)
_IniWriteProperty($sPath, 'position.height', @DesktopHeight)

Func _IniWriteProperty($sIni, $sProperty, $sValue)
    Local $sSection, $sContent, $hWrite

    $sSection = 'Section'
    $sContent = '[' & $sSection & ']' & @CRLF & FileRead($sIni)

    $hWrite = FileOpen($sIni, 2)
    FileWrite($hWrite, $sContent)
    FileClose($hWrite)

    IniWrite($sIni, $sSection, $sProperty, $sValue)
    IniWrite($sIni, $sSection, $sProperty, $sValue)

    $sContent = FileRead($sIni)

    $hWrite = FileOpen($sIni, 2)
    FileWrite($hWrite, StringRegExpReplace($sContent, '^\Q[' & $sSection & ']\E(\r\n)*', ''))
    FileClose($hWrite)
EndFunc

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:23, 13-08-2010 | #16


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


Вот это другое дело! Работает даже при буквенных значениях =zzzzzzzzzzzzzzzzzzzz любой длины!
И при пустом значении =
Ну для правильности добавим правильный путь $sPath = @UserProfileDir & '\SciTE.session'
Это же реальный SciTE.session конфиг, так что можете тоже пользоваться!
kaster, madmasles, Creat0R, спасиб!

-------
Полезное сообщение


Отправлено: 13:34, 13-08-2010 | #17


Аватара для Creat0R

Must AutoIt


Сообщения: 3054
Благодарности: 1009

Профиль | Сайт | Отправить PM | Цитировать


Цитата semiono:
Работает даже при буквенных значениях =zzzzzzzzzzzzzzzzzzzz любой длины! »
В варианте с «_IniWriteProperty» в отличии от варианта с «_FilePropertyWrite» не любой длины, но думаю для тебя хватит

-------
“Сделай так просто, как возможно, но не проще этого.”... “Ты никогда не решишь проблему, если будешь думать так же, как те, кто её создал.”

Альберт Эйнштейн

P.S «Не оказываю техподдержку через ПМ/ICQ, и по email - для этого есть форум. ©»

http://creator-lab.ucoz.ru/Images/Icons/autoit_icon.png Русское сообщество AutoIt | http://creator-lab.ucoz.ru/Images/Ic...eator_icon.png CreatoR's Lab | http://creator-lab.ucoz.ru/Images/Icons/oac_icon.png Opera AC Community

Это сообщение посчитали полезным следующие участники:

Отправлено: 13:43, 13-08-2010 | #18


Аватара для semiono

Ветеран


Сообщения: 842
Благодарности: 33

Профиль | Отправить PM | Цитировать


$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 максимум по-моему.
Но ты намекашь, что твой код интелектуальней. Надеюсь ошибок там нету из-за сложности функции?
Однако, там наверное лишнего много для этой задачи. Вообщем мне хватит пока то что есть

-------
Полезное сообщение


Отправлено: 13:53, 13-08-2010 | #19


Аватара для kaster

Старожил


Сообщения: 367
Благодарности: 91

Профиль | Отправить PM | Цитировать


Creat0R, ну не знаю. у меня ведь ничего не съедалось. Да и потом, логика подсказывает, что закрытие неверного хендла всего лишь вернет 0. А после этой строки нет ничего, стало быть скрипт завершится и файл сам закроется.

-------
Русское сообщество пользователей AutoIt
autoit@conference.jabber.ru - Конференция на jabber.ru


Отправлено: 13:53, 13-08-2010 | #20



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] Изменить значение параметра — Не INI файл!

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Значение секторов в Desktop.ini konstantinych Microsoft Windows 2000/XP 3 27-01-2010 23:18
Разное - Изменить значение Mouse1 на Mouse3 Dmitriusss Microsoft Windows 2000/XP 6 03-04-2009 14:43
Интерфейс - [решено] Как изменить значение в реестре DeMoN23 Microsoft Windows 2000/XP 2 24-02-2009 13:52
Как в Omni Page распознавать файл переданый в качестве параметра командной строки madmax24 Программное обеспечение Windows 8 07-06-2007 19:59
Значение параметра в реестре WinME Guest Microsoft Windows 95/98/Me (архив) 3 07-10-2004 15:26




 
Переход