Работа с INI (удаление ключа, зная только секцию и значение)

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Работа с INI (удаление ключа, зная только секцию и значение)

Сообщение Tok » 22.05.2004 (Сб) 2:03

Всегда использую один и тот же модуль для работы с INI-файлами (в аттаче). И вот появилась необходимость удалять ключи (со значениями), зная только секцию, в которой он находится и его значение. Сотворить данное дело не получается...
Просьба помочь. Спасибо!
Вложения
IniFile.zip
Модуль для работы с INI
(2.64 Кб) Скачиваний: 77
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 22.05.2004 (Сб) 8:23

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

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 19.06.2004 (Сб) 2:13

И как это сделать? Классом, предложенным GSerg я не пойму как.

a.StringValue("Проверка", "Значение 1") = vbNullString 'не получается

Помогите!
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.06.2004 (Сб) 2:15

А, значение! :)
Так получай все ключи через values и ищи нужное. Перебором.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 19.06.2004 (Сб) 2:53

GSerg писал(а):А, значение! :)
Так получай все ключи через values и ищи нужное. Перебором.
А как через Values получить все ключи в заданой секции? И потом, я же ключ не знаю, известны только две вещи - секция и значение. Т.е ну получю я ключи и что мне с ними делать? Я же не буду знать что удалять.

Я конечно теоритически представляю что это можно сделать перебором, но никогда такого не делал, поэтому в замешательстве...

пример ini-файла:

-----------------
;Ключи неизвестны - поэтому "x"

[Секция]

x=Значение 1
x=Значение 2
x=Значение 3

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

Вот. Нужно например убрать из секции всю строчку со "Значение 2". Это, как я понимаю, считываем все ключи со значениями (с данной секции), проверяем какой ключ равен "Значение 2" и удаляем все это дело стандартным методом.
Но как это все сообразить в vb (уже голова болит)?

Если кому не сложно - подскажите.

Спасибо за внимание!
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 19.06.2004 (Сб) 7:03

Код: Выделить всё
dim a as variant, i as long, p as long

with new ini
  .file="file.ini"
  a=.values("секция")
  for i=lbound(a) to ubound(a)
    p=instr(1,a(i),"=")
    if mid$(a(i),p+1)="значение 2" then .stringvalue("секция", left$(a(i),p-1))=vbnullstring:exit for
  next
end with
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 19.06.2004 (Сб) 8:17

Попробуй использовать класс из аттача.
Написал давно и время от времени до сих пор использую. Есть два метода, Sections_Get и Keys_Get, которые считывают все секции и параметры (в массив), можешь использовать их, а можешь использовать методы KeyList*, указывая индекс.
Lasciate ogni speranza, voi ch'entrate.

Tok
Обычный пользователь
Обычный пользователь
 
Сообщения: 51
Зарегистрирован: 28.09.2003 (Вс) 16:14
Откуда: Алчевск (Украина)

Сообщение Tok » 20.06.2004 (Вс) 3:37

2GSerg
Спасибо! Работает! :D

2alibek
Попробую. Спасибо!
Back from the dead
I am resurrected
to spew, putrefaction...
http://gutted.nm.ru


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 15

    TopList