PureBasic - форум

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Preference в PB


Preference в PB

Сообщений 1 страница 6 из 6

1

Озадачился следующей проблемой: при создании PreferenceGroup в файле с настройками (ini) мне нужно проверять присутствует ли имя создаваемой группы в этом файле..Например если присутствует сообщить пользователю, если нет-записать (создать)..Опять же если даже имя группы другое файл полностью обновляется и старая группа стирается. Создаю я следующим образом:

Код:
If CreatePreferences("inform.ini")
      PreferenceGroup(peremennaya1)
       WritePreferenceString("1", peremennaya2)
       WritePreferenceString("2", peremennaya3)
       WritePreferenceString("3", peremennaya4)
      ClosePreferences()  
EndIf

Вот собственно вопрос: как дописывать группы уже в существующий файл и анализировать его на наличие повторений в имени группы
PS: надеюсь понятно объяснил

0

2

Смотрим справку

http://s55.radikal.ru/i148/1008/72/7c5f3cc26d83t.jpg

Другими словами, вызов функции PreferenceGroup сразу не создаёт группу. Она будет создана при записи первого ключа.
Функция возвращает 1, если группа существует и 0 если нет.
То есть функцию можно использовать для проверки существования группы. Если после вызова функции ничего не писать в тестируемую группу, то она не будет созданна.

Вот проверочный код

Код:
If OpenPreferences("inform.ini")
   x=  PreferenceGroup("Group")
       WritePreferenceString("1", "")
       WritePreferenceString("2", "")
       WritePreferenceString("3", "")
      ClosePreferences()  
      MessageRequester("",Str(x))
Else
 CreateFile(0,"inform.ini") : CloseFile(0)
EndIf

0

3

Пётр написал(а):

Смотрим справку

где ты нашел русскую справку? o.O

Пётр написал(а):

Вот проверочный код

Вроде понял, но вот в данный момент если файла не существовало то при записи первой группы он только создается и ни чего не записывает..а мне нужно, что если файла нет, то при записи он его создал и еще плюс записал требуемое.Наверно нужно так?:

Код:
If OpenPreferences("inform.ini")
      x=PreferenceGroup(name)
      WritePreferenceString("Сервер", server)
      WritePreferenceString("Логин", login)
      WritePreferenceString("Пароль", pass)
      ClosePreferences()  
      MessageRequester("",Str(x))
    Else
      CreateFile(0,"inform.ini") : CloseFile(0)
      x=PreferenceGroup(name)
      WritePreferenceString("Сервер", server)
      WritePreferenceString("Логин", login)
      WritePreferenceString("Пароль", pass)
      ClosePreferences()  
      MessageRequester("",Str(x))
    EndIf

ДОБАВЛЕНО:выше написанный код вроде бы работает. Теперь интересует следующий вопрос. Мне при запуске проги нужно открывать файл настроек и как то выводить названия всех групп в список. Я делаю это так:

Код:
If OpenPreferences("inform.ini")
      If ExaminePreferenceGroups()
        NextPreferenceGroup ()
        name.s=PreferenceGroupName ()
        AddGadgetItem(#Listview_2,-1,name)
      EndIf
      
      ClosePreferences()
    EndIf

Но у меня таким образом добавляется только имя первой группы, а мне нужно всех. Я так понимаю что сюда цикл нужно присобачить, например While-Wend, но не знаю как указать границу цикла

Отредактировано daiomik (06.08.2010 11:54:11)

0

4

Так ошибку выводит:

Код:
If OpenPreferences("inform.ini")
      If ExaminePreferenceGroups()
        While Eof("inform.ini")=0
          NextPreferenceGroup ()
          name.s=PreferenceGroupName ()
          AddGadgetItem(#Listview_2,-1,name)
        Wend
      EndIf
      ClosePreferences()
    EndIf

0

5

daiomik написал(а):

где ты нашел русскую справку?

Её переводили здесь
Скачать можно также здесь http://pure-basic.narod.ru/PureBasic.chm

daiomik написал(а):

Наверно нужно так

Так короче будет

Код:
If FileSize("inform.ini")<0
  CreateFile(0,"inform.ini") : CloseFile(0)
EndIf

If OpenPreferences("inform.ini")
      x=PreferenceGroup(name)
      WritePreferenceString("Сервер", server)
      WritePreferenceString("Логин", login)
      WritePreferenceString("Пароль", pass)
      ClosePreferences()  
      MessageRequester("",Str(x))
EndIf
daiomik написал(а):

Я так понимаю что сюда цикл нужно присобачить

Да, цикл нужен, например такой

Код:
Repeat
   If NextPreferenceGroup()
     name.s=PreferenceGroupName()
     AddGadgetItem(#Listview_2,-1,name)
   Else
     Break
   EndIf
ForEver

0

6

Пётр написал(а):

Так короче будет

и логичней

Пётр написал(а):

Да, цикл нужен, например такой

совсем забыл про этот цикл. Теперь все работает

0


Вы здесь » PureBasic - форум » Вопросы по PureBasic » Preference в PB