Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.83/71: Рейтинг темы: голосов - 71, средняя оценка - 4.83
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
.NET 2.x

Как сохранять настройки в .ini файл?

04.10.2013, 15:17. Показов 14808. Ответов 49
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем доброго времени суток... Как сделать сохранение определенных настроек (допустим положение формы, ее размер и т.п)? И при запуске программы читать эти настройки...

Пробовал найти похожие темы через поиск но что то результат меня не обрадовал )... За ранее спасибо
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
04.10.2013, 15:17
Ответы с готовыми решениями:

Как сохранить настройки программы в ini файл
Надо сохранить пути к DLL у listbox сохранить выбранный процесс combobox и т.д или сразу всё... И потом при открытии прочитать ini

Какие настройки и в каких случаях следует сохранять в *.ini файлы, а какие в реестр?
Доброго времени суток! вопрос кроется в названии темы. Помоготе разобраться, какие настройки и в каких случаях следует сохранять в *.ini...

Сохранение в ini файл настройки
Создаю форму 2 на неё кидаю чекбоксы допустим чек бокс 1 если стоит то форма прозрачная если не стоит то форма не прозрачная. Помогите...

49
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
04.10.2013, 15:30
А он и не обрадует. Там костыли еще те... По крайней мере, что видел тут, может быть кто-то нашел адекватное решение, так поделится.
Я бы хранил настройки в собственном формате, например, создал бы класс с настройками, и его писал и читал. Поля класса всеядны -там можно записывать координаты, размер, цвет, текст, шрифт, изображения, файлы и прочее (см.в FAQ сериализацию классов)

Однако это дурной тон, когда человек в посте просит одно, а ему по сабжу не отвечают, предлагая альтернативные решения или "А тебе зачем", поэтому все же выложу кусок кода, старый очень, я давно его не проверял:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Private Declare Function WritePrivateProfileString Lib "kernel32" Alias "WritePrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpString As String, ByVal lpFileName As String) As Integer
    Private Declare Function GetPrivateProfileString Lib "kernel32" Alias "GetPrivateProfileStringA" (ByVal lpApplicationName As String, ByVal lpKeyName As String, ByVal lpDefault As String, ByVal lpReturnedString As String, ByVal nSize As Integer, ByVal lpFileName As String) As Integer
____________________________________
    Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Call WritePrivateProfileString("INFO", TextBox2.Text, TextBox1.Text, "C:\test.ini")
    End Sub
____________________________________
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        TextBox1.Text = "Введите Ваше имя"
        Button1.Text = "Сохранить"
        Button2.Text = "Загрузить"
    End Sub
____________________________________
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim rc As String = Strings.StrDup(255, vbNullChar)
        Dim x As Integer
        x = GetPrivateProfileString("INFO", TextBox2.Text, "", rc, 255, "C:\test.ini")
        If x <> 0 Then rc = Strings.Left(rc, x)
        TextBox1.Text = rc
    End Sub
4
30 / 30 / 3
Регистрация: 25.05.2011
Сообщений: 308
04.10.2013, 15:37  [ТС]
Спасибо... У меня все отлично работает )... Дальше буду думать как его под себя чуток изменить )
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
07.10.2013, 13:53
Ой.. Памирыч, по-моему, этот код жутко неэффективный, поскольку ради каждого параметра будет заново парситься весь ini-файл. Правильнее парсить ini-файл самостоятельно и хранить в памяти словарь.

Добавлено через 28 минут
Написано давно и криво:
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Public Class Ini
 
Public Ini As New Collection
 
Public Shared Function GetFromFile(ByVal Filename As String) As Ini
  Try
    Dim IniFile As IO.StreamReader = New IO.StreamReader(Filename, True)
    Dim Str As String, Section As String, Item As String, Value As String, SepPos As Integer
    Dim Res As New Ini
 
    Str = "[]"
    Do
      If Str <> "" And Not Str.StartsWith(";") Then
        If Str.StartsWith("[") And Str.EndsWith("]") Then
          Section = Str.Substring(1, Str.Length - 2).Trim().ToLower()
          If Not Res.Ini.Contains(Section) Then Res.Ini.Add(New Collection, Section)
        Else
          SepPos = Str.IndexOf("="c)
          Item = Str.Substring(0, SepPos).Trim().ToLower()
          Value = Str.Substring(SepPos + 1).Trim()
          If Res.Ini(Section).Contains(Item) Then Res.Ini(Section).Remove(Item)
          Res.Ini(Section).Add(Value, Item)
        End If
      End If
      Try
        Str = IniFile.ReadLine().Trim()
      Catch
        Exit Do
      End Try
    Loop 'Until IniFile.EndOfStream()
    IniFile.Close()
    Return Res
  Catch
    Return Nothing
  End Try
End Function
 
Public Function FindValue(ByVal Section As String, ByVal Item As String, Optional ByVal [Default] As Object = Nothing) As Object
  Try
    Return Ini(Section.ToLower)(Item.ToLower)
  Catch
    Return [Default]
  End Try
End Function
 
End Class
Надо переписать его через
VB.NET
1
Private Ini As New Dictionary(Of String, Dictionary(Of String, String))
и ещё охапку мест улучшить.
3
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
14.12.2014, 21:27
Qwertiy, так может быть пришло уже то время когда пора улучшить?
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
14.12.2014, 22:22
Yury Komar, возможно, но только не сейчас. Я тут винду восстанавливаю...
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
15.12.2014, 00:41
Qwertiy, у меня есть один замечательный пример по ini файлам реализован в классе но он в vb6, там почти всё сделано через property и старый property в нет не работает. Тоже пока нет времени переделать. А так по мне был самый лучщий. Парсинг максимальный...
пепеделаю обязательно выложу.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
15.12.2014, 02:23
У меня тоже всё парсится.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
15.12.2014, 09:56
Qwertiy, ну у тебя просто чтение идет, а там чтение, щапись, count количества секций, параметров и так далее... улаление секций и параметров, запись в секцию текст постррчно, в том случае если параметр ненужен а нужно по определенеым именем секции, например [MY_TEXT] сохранить и прочесть текстовый блок по секцией...
кароче очень удобно... вот время выделить надо до поковыряться с переводом
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
15.12.2014, 12:12
Yury Komar, оу.. Похоже, это не последняя версия. У меня был код новее, для работы с reg-файлами.

Добавлено через 46 секунд
Возможно даже, тут где-то выкладывал.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
15.12.2014, 12:28
Qwertiy, не последняя версия, ты имеешь ввиду то что выложил здесь в этой теме выше? Ну навернре да, на последнюю (по-определению) она врядли похожа )
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
19.12.2014, 10:24
Для чтения-записи конфигурации придумали целую библиотеку System.Configuration, а в бейсике также доступно пространство имён My.Settings. Не нужно изобретать велосипеды с ini-файлами.
0
835 / 643 / 101
Регистрация: 20.08.2013
Сообщений: 2,524
19.12.2014, 22:55
Цитата Сообщение от Замабувараев Посмотреть сообщение
Для чтения-записи конфигурации придумали целую библиотеку System.Configuration
Только вот работает она с xml'ем, а не с ini-файлами...
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
20.12.2014, 09:01
Замабувараев, насчет my.settings, это ж реестр!!!!
Тут речь идет об настройках в файле!
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.12.2014, 09:12
Цитата Сообщение от Yury Komar Посмотреть сообщение
насчет my.settings, это ж реестр!
Ни в коем разе. Настройки хранятся в XML-файле
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
20.12.2014, 10:08
Памирыч,

Не по теме:

классная ава :))))


Тоесть ненужно изобретать велосипед чтобы разбираттся как парсить XML? надо поковыряться в этом.
спасибо! )

Добавлено через 54 секунды
Памирыч, но ini тоже весьма удобны, думаб и о них забывать не стоит
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.12.2014, 10:11
Yury Komar, нет, как раз my.Settings все сохраняет и парсит самостоятельно. Пользователь не всегда даже знает, где лежит этот файл. Все уже придумано
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4358 / 3428 / 512
Регистрация: 27.01.2014
Сообщений: 6,258
20.12.2014, 10:43
Памирыч, ооо. Тоесть если я перенесу приложение, то настройки пропадут? А вот жто уде не удобно... слышал можно их дердать с программой в файле app.config?
0
COM‐пропагандист
 Аватар для Замабувараев
936 / 785 / 149
Регистрация: 18.12.2014
Сообщений: 2,256
Записей в блоге: 4
20.12.2014, 10:44
Цитата Сообщение от Yury Komar Посмотреть сообщение
но ini тоже весьма удобны, думаб и о них забывать не стоит
О них стоит забыть уже потому, что сама Майкрософт объявила их deprecated.
0
Почетный модератор
 Аватар для Памирыч
23251 / 9163 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
20.12.2014, 11:00
Цитата Сообщение от Yury Komar Посмотреть сообщение
Тоесть если я перенесу приложение, то настройки пропадут?
Да, но если я не ошибаюсь, можно настроить приложение так, чтобы оно сохраняло настройки в своей папке. Если ошибаюсь - знатоки поправят.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.12.2014, 11:00
Помогаю со студенческими работами здесь

Как сохранять настройки окна?
Как можно сохранять насройки окна(textbox...)?

Как правильно сохранять настройки?
Доброго времени суток бойцы ... Подскажите такую штуку Хочу в файл настроек сохранить массив int, а в выборе типа переменной нету...

Как сохранять настройки в ворде
Здравствуйте, ко мне на работу приходят много людей с флешками, что бы распечатать текстовые документы с ворда. Когда открываю ихний...

Как заставить Windows Embedded сохранять настройки?
Здравствуйте! Вопрос в следующем. Имеется тонкий клиент на базе Windows Embedded Standart, на котором используется расширенный рабочий стол...

Как сохранить настройки компонента RadioGroup в Ini-файле?
Мучаюсь над такой проблемой С таким кодом сохраняет только до двух точек а остальные почему-то не хочет ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем. . . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru