Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: fail.ini  (Прочитано 8210 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Dest
Опытный

ru
Offline Offline

« : 28-10-2008 05:47 » 

Можно ли в 1С работать с ini файлами (создавать, читать...)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 28-10-2008 21:00 » 

Только как с обычным текстом - т.е. все специфические функции нужно писать самому. У меня есть функция чтения из ini-файла в двухуровневый список. Могу поделиться, если нужно.
Или как вариант - искать какой-нибудь OLE объект, который это умеет:
Код:
Об=СоздатьОбъект("Provider.INIFile"); // Название объекта - для примера
Об.OpenFile(ИмяФайла); // Все имена методов вымышлены, "совпадения с реальными методами - случайны" :)
Зн=Об.GetData(Секция, Параметр);
Зн=Функ(Зн);
Об.SetData(Секция, Параметр, Зн);
Об.CloseFile();
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #2 : 28-10-2008 23:06 » 

У меня есть функция чтения из ini-файла в двухуровневый список. Могу поделиться, если нужно.

Делись!
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 29-10-2008 22:33 » 

Вот, прошу:
Код:
//******************************************************************************
// глСписокИзФайлаИНИ(Знач Файл, Знач ИспользоватьНРег=1,
//   Знач Разд="=", Знач СимвГрЛев="[", Знач СимвГрПрав="]", СимвКомент="#")
//
// Параметры:
//  Файл                 - путь к файлу
//  [ИспользоватьНРег=1] - приводить названия разделов и переменных в нижний регистр
//  [Разд="="]           - разделитель переменной и ее значения
//  [СимвГрЛев="["]      - нач.символ нового раздела
//  [СимвГрПрав="]"]     - кон.символ нового раздела
//  [СимвКомент="#"]     - признак начала комментария
//
// Возвращаемое значение:
//  СписокЗначений, содержащий списки значений по разделам
//
// Описание:
//  Создает 2-х уровневый список значений из файла ini-структуры
//
Функция глСписокИзФайлаИНИ(Знач Файл, Знач ИспользоватьНРег=1,
  Знач Разд="=", Знач СимвГрЛев="[", Знач СимвГрПрав="]", СимвКомент="#") Экспорт
Перем Т, Сп, Сп1, И1, Стр, Режим, ЗагРаздела, С;
Перем ДлРазд, ДлГрПрав, ДлГрЛев, ДлКоммент;
ДлРазд=СтрДлина(Разд);
ДлГрПрав=СтрДлина(СимвГрПрав);
ДлГрЛев=СтрДлина(СимвГрЛев);
ДлКоммент=СтрДлина(СимвКомент);

Сп=СоздатьОбъект("СписокЗначений");

Если ФС.СуществуетФайл(Файл)=0 Тогда Возврат Сп; КонецЕсли;

Т=СоздатьОбъект("Текст");
Т.Открыть(Файл);
Режим=0;

Сп1=СоздатьОбъект("СписокЗначений");
ЗагРаздела=?((ДлГрЛев=0)И(ДлГрЛев=0),-2,-1);

Для И1=1 По Т.КоличествоСтрок() Цикл
Стр=Т.ПолучитьСтроку(И1);
Если ДлКоммент>0 Тогда
Поз=Найти(Стр, СимвКомент);
Если Поз>0 Тогда Стр=Лев(Стр, Поз-1); КонецЕсли;
КонецЕсли;
Стр=СокрЛП(Стр);

Если ПустаяСтрока(Стр)=1 Тогда Продолжить; КонецЕсли;

Поз=?((ДлГрЛев=0)И(ДлГрЛев=0),0,Мин(
  ?(ДлГрЛев=0,1,?(Лев(Стр,ДлГрЛев)=СимвГрЛев,1,0)),
  ?(ДлГрПрав=0,1,?(Прав(Стр,ДлГрПрав)=СимвГрПрав,1,0))));

Если Поз=1 Тогда
Если Сп1.РазмерСписка()>0 Тогда
Сп.ДобавитьЗначение(Сп1,
  ?(ИспользоватьНРег=1,НРег(ЗагРаздела),ЗагРаздела));
КонецЕсли;
Сп1=СоздатьОбъект("СписокЗначений");
ЗагРаздела=СокрЛП(Сред(Стр,ДлГрЛев+1,СтрДлина(Стр)-(ДлГрЛев+ДлГрПрав)));
Иначе
Если ЗагРаздела=-1 Тогда Продолжить; КонецЕсли;

Поз=?(ДлРазд=0,0,Найти(Стр,Разд));

Если Поз>0 Тогда
С=СокрЛ(Сред(Стр,Поз+ДлРазд));
Стр=СокрП(Лев(Стр,Поз-1));
Иначе
С=Стр;
КонецЕсли;
Сп1.ДобавитьЗначение(С, ?(ИспользоватьНРег=1,НРег(Стр),Стр));
КонецЕсли;
КонецЦикла;

Если ЗагРаздела=-2 Тогда Возврат Сп1; КонецЕсли;

Если Сп1.РазмерСписка()>0 Тогда
Сп.ДобавитьЗначение(Сп1, ?(ИспользоватьНРег=1,НРег(ЗагРаздела),ЗагРаздела));
КонецЕсли;

Возврат Сп;
КонецФункции // глСписокИзФайлаИНИ()
Вроде функция самодостаточная... Но если вдруг чего другого потребует - пиши...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines