Модераторы: Snowy, MetalFan, bems, Poseidon
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с ini-файлами. Количество секций 
:(
    Опции темы
PsiMagistr
Дата 26.12.2010, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята, проблема такая:

Есть некоторый список. В список должны прогружаться названия секций из ини файла, но не всех подряд секций, а только тех, чей определенный ключ (поле) удовлетворяет некоторому значению.

Как можно это грамотно осуществить?

Если узнать количество всех секций, можно попробовать цикл замутить, например, и там проверять... Но функцию, возвращающую кол. секций я не нашел...

Всех сердечно благодарю за помощь.






--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
~FoX~
Дата 26.12.2010, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

Репутация: 5
Всего: 68



ReadSections ?


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
PsiMagistr
Дата 26.12.2010, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



~FoX~, Благодарю сердечно, ReadSections неоднократно пользовался, но он вроде читает все поля.

Конечно, можно прочесть все. потом сделать выборку, сравнительным путем. Но хотелось бы как-то поизящнее....

Или это единственный путь?

Это сообщение отредактировал(а) PsiMagistr - 26.12.2010, 11:53


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
~FoX~
Дата 26.12.2010, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

Репутация: 5
Всего: 68



Цитата(PsiMagistr @  26.12.2010,  12:17 Найти цитируемый пост)
но он вроде читает все поля.

Помещает в StringList названия всех секций...Априори, нельзя получить выборку по условию не проверив все данные. Не попадающие под условие/я секции удаляешь из листа и в конечном итоге получишь нужную выборку...
Куда уж изящнее то?  smile 

Это сообщение отредактировал(а) ~FoX~ - 26.12.2010, 11:56


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
PsiMagistr
Дата 26.12.2010, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Спасибо большое. Ну что ж так и будем действовать.


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
PsiMagistr
Дата 26.12.2010, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Пришлось воспользоваться вложенным циклом. Довольно неизящное решение...

Код


procedure LoadToList(Filename:string; L:TListBox);
 var
 F:TiniFile; //Переменая для работы с инифайлом
 i:Integer; i2:integer;//Переменные циклов

 begin

 F:= Tinifile.Create(Filename);//Создаем фапйловый объект.
 F.ReadSections(L.Items);//Читаем туда все секции в выходной список (расположен на форме).


 for i:=  0 to L.Count -1 do//Открываем внешний  цикл
 begin//


 for i2 := 0 to L.Count -1 do//Открываем внутренний цикл

 begin//
 Monst.Location:= F.ReadInteger(L.Items.Strings[i2],'Локация',100);// Читаем в опознавательную переменную
 if Monst.Location <> Pers.Location then//Если она не удовлетворяет условию

 begin//
L.Items.Delete(i2);//Удаляем элемент
break;//Прерываем внутренний цикл
 end;//
  end;//
 end;//

 F.Free;//Освобождаем файловый объект
 end;//



Минусы очевидны - вложенные циклы.


Пробовал писать в один цикл, но поскольку удаляются элементы возникает смещение...


Это сообщение отредактировал(а) PsiMagistr - 26.12.2010, 18:06


--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
Dom
Дата 26.12.2010, 18:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 3
Всего: 4



Подозреваю, что тут поможет вариант обхода списка с конца, и будет только один цикл
Код

for i :=  L.Count - 1 downto 0 do
begin
...
end;

PM MAIL   Вверх
PsiMagistr
Дата 26.12.2010, 18:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Dom, Ай да хитрец! С конца надо точно.

Спасибо!

Все еще не оставляю надежды написать игрушку.)))

Как только сделаю, попробую прислать на вингард опытный образец.



--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
~FoX~
Дата 26.12.2010, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


НЕ рыжий!!!
****


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

Репутация: 5
Всего: 68



Цитата(PsiMagistr @  26.12.2010,  19:57 Найти цитируемый пост)
Все еще не оставляю надежды написать игрушку.)))

Эгм....игрушку? А чего ты в инях хранишь? 


--------------------
user posted image
…множественность никогда не следует полагать без необходимости…
PM MAIL WWW ICQ Jabber   Вверх
Akella
Дата 26.12.2010, 21:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Творец
****


Профиль
Группа: Модератор
Сообщений: 18485
Регистрация: 14.5.2003
Где: Корусант

Репутация: 8
Всего: 329



ini это ж долго.... тогда уж реестр или СУБД
PM MAIL   Вверх
AntonN
Дата 26.12.2010, 21:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 3
Всего: 18



Я храню в ини формат карты, все доступно для редактирования в обычном блокноте. 10 секций общих параметров (до 10-15 ключей в каждой) и в зависимости от карты от 20 до двух сотен секций с полудесятком параметров. TMemIniFile и никаких напрягов.


--------------------
user posted image
PM MAIL WWW   Вверх
PsiMagistr
Дата 27.12.2010, 09:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Ребята, боюсь это игра еще далеко  не того профиля, чтобы использовать СУБД или тем более Реджестри.

Сейчас дам ссылочку на исходник (хотел сюда, но он велик).

Само собой еще почти ничего не работает.

Имейте ввиду у меня Дельфи Хе.

6 метров веса исходники и скомпилированный проект.

http://ifolder.ru/21037793





--------------------
"Арфы нет? Возьмите бубен!

Ребята, будем жить!"

 (с) "В бой идут одни старики"

---

"ИЕ" - один из самых сумасшедших браузеров в нашей галактике.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




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


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

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