Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: INI файл - помогите чайнику, плиз? Добавлено: 06.06.04 12:39  

Автор вопроса:  MaxJr | Web-сайт: www.honestreporting.ru

Осваиваю .NET недавно, поэтому простите за чайниковские вопросы.

КАк в .NET работать с INI файл (или что там есть вместо него) ? Особенно интересует чтение из него (пока) . И как он выглядит (если что-то изменилось)?

Может у кого примерчик есть - лучше всего !

Спасибо заранее.

 

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #1
Добавлено: 06.06.04 16:21
Встроенных средств для работы с INI в .NET нет. Можешь использовать
API функции.
А вообще, ИМХО, лучше хранить настройки другим способом. Например, в
XML-файле. За XML будущее.

Ответить

Номер ответа: 2
Автор ответа:
 MaxJr



Вопросов: 2
Ответов: 3
 Web-сайт: www.honestreporting.ru
 Профиль | | #2
Добавлено: 07.06.04 09:48
Павел

ОК, я не против и в XML...
есть возможность построить этот файл по подобию ИНИ и потом пользоваться им подобным образом?

Ответить

Номер ответа: 3
Автор ответа:
 MaxJr



Вопросов: 2
Ответов: 3
 Web-сайт: www.honestreporting.ru
 Профиль | | #3
Добавлено: 07.06.04 11:24
Делаю с API все, как в хелпе написано, но что-то не работает. Может кто-то может помочь?

Ответить

Номер ответа: 4
Автор ответа:
 Павел



Администратор

ICQ: 326066673 

Вопросов: 368
Ответов: 5968
 Web-сайт: www.vbnet.ru
 Профиль | | #4
Добавлено: 07.06.04 16:40
Я бы предложил такой вариант... Держать настройки в HashTable, а для
сохранения в файл использовать сериализацию (возможна и XML
сериализация).

Ну, можно конечно юзать XML на низком уровне. Для этого существуют
классы из пространства имён System.XML. Я вот на днях прочитал в
буржуйском журнале про System.XML, там как раз есть пример о
сохранении настроек. У меня есть желание перевести её на русский.. Так
что возможно в течение месяца переведу, выложу на сайт.

Ответить

Номер ответа: 5
Автор ответа:
 Воронков Василий



Вопросов: 1
Ответов: 90
 Профиль | | #5 Добавлено: 08.06.04 11:00

Вот, держи:

public class IniReader

{

private const string XML_PATH = "//category[@name='{0}']/key[@name='{1}']/@value";

private XPathDocument document;

public IniReader(string filename)

{

using (StreamReader sr = File.OpenText(filename))

{

document = new XPathDocument(sr);

}

}

public string ReadKey(string category, string key)

{

XPathNavigator nav = document.CreateNavigator();

XPathNodeIterator it = nav.Select(String.Format(XML_PATH, category, key));

it.MoveNext();

return it.Current.Value.Length != 0 ? it.Current.Value : null;

}

}

Пример использования:

XML file:

<ini>
   <category name="Category1">
    <key name="Key1" value="Value1"/>
   </category>
   <category name="Category2">
    <key name="Key2" value="Value2"/>
   </category>
  </ini>

Клиентский код:

IniReader ir = new IniReader("C:\\myfile.xml");

string value = ir.ReadKey("Category2", "Key2");

 

 

 

Ответить

Номер ответа: 6
Автор ответа:
 Воронков Василий



Вопросов: 1
Ответов: 90
 Профиль | | #6 Добавлено: 08.06.04 11:16
Нда, сайт же называется VBNET.ru. Вот переписанная версия:

Imports System.IO
Imports System.Xml
Imports System.Xml.XPath

Module Module1

    Sub Main()
        ;Dim Reader As IniReader = New IniReader("C:\ini.xml";)
        ;Dim Value As String = Reader.ReadKey("Category2", "Key2";)
    End Sub

End Module

Public Class IniReader

    Private Const XML_PATH As String = "//category[@name='{0}']/key[@name='{1}']/@value"
    Private Document As XPathDocument

    Public Sub New(ByVal FileName As String)

        ;Dim Reader As StreamReader

        Try
            Reader = File.OpenText(FileName)
            ;Document = New XPathDocument(Reader)
        Finally
            Reader.Close()
        End Try

    End Sub

    Public Function ReadKey(ByVal Category As String, ByVal Key As String) As String
        ;Dim Nav As XPathNavigator = Document.CreateNavigator()
        ;Dim It As XPathNodeIterator = Nav.Select(String.Format(XML_PATH, Category, Key))
        It.MoveNext()

        If Not It.Current.Value.Length = 0 Then
            Return It.Current.Value
        Else
            Return Nothing
        End If
    End Function

End Class

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам