| Новости | FAQ | Авторы | Документация | В действии | Библиотека |
| Инструменты | Полезные ссылки | Хостинги | Скачать | Примеры | Форум |
AleXp 04.03.2006 21:53
Глянь класс который чем-то похожим занимается. Можно взять за основу - переделать надо будет @_search_string[]###################################################################################################
# Класс . Предназначается для работы с файлами вида *.ini
###################################################################################################
@CLASS
iniFile
###################################################################################################
# Поля класса:
#--------------------------------------------------------------------------------------------------
# $pathToFileIni Путь к файлу *.ini
#==================================================================================================
# Методы класса:
#--------------------------------------------------------------------------------------------------
# create[] Создает или инициализирует файл.
# get[] Возвращает значение параметра.
# getall[] Возвращает значение всех параметров из файла.
# put[] Задает значение параметра.
# del[] Удаляет значение параметра.
# list[] Возвращает список всех параметров.
###################################################################################################
@create[name;path][_string;_now]
###################################################################################################
$pathToFileIni[^path.trim[end;/]/${name}.p]
^if(-f "$pathToFileIni"){
}{
$_now[^date::now[]]
$_string[# ${pathToFileIni}. Created ^_now.sql-string[]^#0A]
^try{
^_string.save[$pathToFileIni]
}{
$exception.handled(true)
}
}
#end @create[]
@get[param][_tab]
###################################################################################################
$_tab[^_search_string[^_get_string[];$param]]
^if(^_tab.count[] != 0){$result[$_tab.4]}{$result[]}
#end @get[]
@getall[][_str;_tab]
###################################################################################################
$result[]
$_str[^_get_string[]]
$_tab[^_str.match[^^([ \x01]*)(\w+)([ \x01]*=[ \x01]*)([^^\s\x01]+)(.*\n)][mg]]
^if(def $_tab){
^_tab.menu{
^process[$caller.self]{^$[$_tab.2][$_tab.4]}
}
}
#end @getall[]
@put[param;value][_str;_tab]
###################################################################################################
^file:lock[ini.lock]{
$_str[^_get_string[]]
$_tab[^_search_string[$_str;$param]]
^if(^_tab.count[] != 0){
$_str[^_str.match[${_tab.1}${_tab.2}${_tab.3}${_tab.4}${_tab.5}][]{${_tab.1}${_tab.2}${_tab.3}${value}${_tab.5}}]
}{
$_str[${_str}${param} = ${value}^#0A]
}
^_put_string[$_str]
}
$result[]
#end @put[]
@del[param][_str;_tab]
###################################################################################################
^file:lock[ini.lock]{
$_str[^_get_string[]]
$_tab[^_search_string[$_str;$param]]
^if(^_tab.count[] != 0){
$_str[^_str.match[${_tab.1}${_tab.2}${_tab.3}${_tab.4}${_tab.5}][]{}]
^_put_string[$_str]
}
}
$result[]
#end @del[]
@list[][_file]
###################################################################################################
$_file[^file::load[text;$pathToFileIni]]
$result[$_file.text]
#end @list[]
@_get_string[][_file]
###################################################################################################
$_file[^file::load[text;$pathToFileIni]]
$result[^_file.text.match[\t][g]{^#01}]
#end @_get_string[]
@_put_string[str]
###################################################################################################
$str[^str.match[\x01][g]{^#09}]
^str.save[$pathToFileIni]
$result[]
#end @_put_string[]
@_search_string[str;param]
###################################################################################################
$result[^str.match[^^([ \x01]*)($param)([ \x01]*=[ \x01]*)(\S+)(.*\n)][m]]
#end @_search_string[]