Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа c INI-файлами 
:(
    Опции темы
Vyacheslav
Дата 1.3.2005, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 2
Всего: 59



Имеется ли класс, инкапсулирующий работу с ini- файлами?


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Borisff2003
Дата 1.3.2005, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 198
Регистрация: 26.2.2004
Где: г. Уфа

Репутация: нет
Всего: 1



Насколько я знаю, нет.
В .NET принята иная концепция, использованние XML конфигурационных файлов

Если интересно копай в System.Configuration
--------------------
Лень, двигатель прогресса
PM MAIL WWW ICQ   Вверх
AntonSaburov
Дата 1.3.2005, 13:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 6
Всего: 118



У меня был когда-то проект - осталось вот это. Могу просто предложить покопаться

Вот конфиг в виде XML. Первая половина описывает те параметры (тэги), которые будут использоваться. Вторая половина - это уже непосредственно сами параметры.

Код

<?xml version="1.0" encoding="windows-1251"?>
<configuration>
<configSections>
 <sectionGroup name="PipetteSectionGroup">
  <section name="PipetteName"
   type="System.Configuration.SingleTagSectionHandler"/>
  <section name="SerialPortSection"
   type="System.Configuration.NameValueSectionHandler"/>
  <section name="DataBaseConnection"
   type="System.Configuration.SingleTagSectionHandler"/>
  <section name="FlashConnection"
   type="System.Configuration.SingleTagSectionHandler"/>
  <section name="PipetteConnection"
   type="System.Configuration.SingleTagSectionHandler"/>
  <section name="EmbeddedSoft"
   type="System.Configuration.SingleTagSectionHandler"/>
  <section name="Debug"
   type="System.Configuration.SingleTagSectionHandler"/>
 </sectionGroup>
</configSections>

<appSettings>
</appSettings>
 
<PipetteSectionGroup>
 <PipetteName name="NOVUS"/>
 <SerialPortSection>
  <add key="COM1" value="1"/>
  <!--add key="COM2" value="2"/>
  <add key="COM4" value="4"/-->
 </SerialPortSection>
 <DataBaseConnection source="MSAccess"
  connect="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Pipetka.MDB"/>
 <!--DataBaseConnection source="SQLServer"
  connect="Server=(local);Database=Pipetka;Password=;User ID=sa"/-->
 <FlashConnection baud="115200"/>
 <PipetteConnection baud="9600"/>
 <EmbeddedSoft file="extens.xcl" dir="NEC"/>
 <Debug serial_log_flash="0" serial_log_remote="0"/>
</PipetteSectionGroup>
</configuration>


А вот и текст для работы с ним
Код

public class Config_Pipette
{
 public static string GetPipetteName()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/PipetteName");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  return (string)sampleTable["name"];
 }

 public static Array GetSerialPorts()
 {
  ArrayList tmp = new ArrayList();
  NameValueCollection nvc = null;
  try
  {
   nvc = (NameValueCollection)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/SerialPortSection");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(nvc==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  else
  {
   for(int i=0; i<nvc.Count; i++)
   {
    tmp.Add(int.Parse(nvc[i]));
   }
  }
  return tmp.ToArray();
 }

 public static void GetDataBaseConnection(out string source, out string connect)
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/DataBaseConnection");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  source = (string)sampleTable["source"];
  connect = (string)sampleTable["connect"];
 }

 public static string GetFlashBaudRate()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/FlashConnection");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  return (string)sampleTable["baud"];
 }

 public static string GetPipetteBaudRate()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/PipetteConnection");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  return (string)sampleTable["baud"];
 }

 public static string GetEmbeddedSoftDir()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/EmbeddedSoft");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  return (string)sampleTable["dir"];
 }

 public static string GetEmbeddedSoftFileExt()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/EmbeddedSoft");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  return (string)sampleTable["file"];
 }

 public static bool GetDebugSerialLogFlash()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/Debug");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  string tmp_log = (string)sampleTable["serial_log_flash"];
  return tmp_log.Equals("1") ? true : false;
 }

 public static bool GetDebugSerialLogRemote()
 {
  IDictionary sampleTable;
  try
  {
   sampleTable = (IDictionary)
    ConfigurationSettings.GetConfig("PipetteSectionGroup/Debug");
  }
  catch(ConfigurationException con_e)
  {
   throw new Exceptions.BadConfigException("Config file error:"+con_e.Message);
  }
  if(sampleTable==null)
  {
   throw new Exceptions.NoConfigException("Config file doesn't exist");
  }
  string tmp_log = (string)sampleTable["serial_log_remote"];
  return tmp_log.Equals("1") ? true : false;
 }
}

PM MAIL WWW ICQ   Вверх
Vyacheslav
Дата 1.3.2005, 17:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 2124
Регистрация: 25.3.2002
Где: Москва

Репутация: 2
Всего: 59



Вот что называется - упрощение работы smile. Мне нужно просто работать с ini-файлом, по скольку его проще набивать вручную (данные для тестировочного модуля). Во всех приличных библиотеках работа с такими файлами давно инкапсулирована. А теперь придется городить свой класс и терять время. Эх, где мой C++Builder.


--------------------
С уважением, Вячеслав Ермолаев
PM MAIL WWW ICQ   Вверх
Kurt
Дата 1.3.2005, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлеченный
***


Профиль
Группа: Участник Клуба
Сообщений: 1662
Регистрация: 22.8.2003
Где: Краснодар

Репутация: 20
Всего: 36



Ну, как вариант, можно из .NET-кода вызывать соотв. WinAPI функции. smile


--------------------
Для корабля, который не знает куда плыть, нет попутного ветра... ((С) Архимед)
...
Все знают, что это невозможно. Но случайно находится невежда, который этого не знает. Он-то и делает открытие.. ((С) А. Эйнштейн)
PM ICQ   Вверх
Domestic Cat
Дата 1.3.2005, 19:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 9
Всего: 172





--------------------

PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0711 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.