Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.03.2011, 13:58   #1
JDFU
 
Регистрация: 23.02.2011
Сообщений: 4
По умолчанию прочитать несколько путей из INI в Delphi

Здравствуйте!

Просмотрел форум (тщательно). Почитал ФАК (тоже тщательно). Моей ситуации нету.

Ситуация следующая:

Есть ИНИ-файл в нем прописаны пути к определённым каталогам. НО. Каталоги разбиты на разные категории. Т.е. часть каталогов в одной секции, а другая часть в другой секции. В зависимости от выбранного действия на форме приложение должно использовать каталоги с той или иной секции в INI-файле. Вопрос как попорядку читать пути в секции? Делать счётчик? Или можно по другому? Объясните пожалуйста.

вот такой INI (это пример):

[Group1]
1=C:\DATA\DATA1
2=C:\DATA\DATA2
3=C:\DATA\DATA7
[Group2]
1=C:\DATA\DATA3
2=C:\DATA\DATA4
3=C:\DATA\DATA5
4=C:\DATA\DATA36
5=C:\DATA\DATA11

Спасибо
JDFU вне форума Ответить с цитированием
Старый 03.03.2011, 14:51   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Цитата:
Сообщение от JDFU Посмотреть сообщение
Почитал ФАК (тоже тщательно). Моей ситуации нету.
Ну зачем же обманывать ?

ReadSections
ReadSection
ReadSectionValues
ReadString


Как говорится - выбирай, не хочу !
И в чем затруднение - тайна великая есть...

Последний раз редактировалось asmodey1; 03.03.2011 в 14:58.
asmodey1 вне форума Ответить с цитированием
Старый 03.03.2011, 15:19   #3
JDFU
 
Регистрация: 23.02.2011
Сообщений: 4
По умолчанию

хмм... странно.... я не вижу в FAQ, который предлогается скачать и прочитать всем новичкам пример с моей ситуацией.

если можно покажите как реализовать это в коде программы
JDFU вне форума Ответить с цитированием
Старый 03.03.2011, 15:21   #4
JDFU
 
Регистрация: 23.02.2011
Сообщений: 4
По умолчанию

а... нет... вижу.... извиняюсь. Но реализации кода, как в моём случае нету. Помогите пожалуйста.
JDFU вне форума Ответить с цитированием
Старый 03.03.2011, 15:31   #5
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,434
По умолчанию

Сабж:
Код:
procedure TForm1.sButton1Click(Sender: TObject);
var
  myDir:string;
  ini:TiniFile;
  i:Integer; //Счётчик
begin
  myDir:=ExtractFilePath(ParamStr(0));//домашняя папка exe
  try
  ini:=TIniFile.Create(myDir+'Changes.ini');// открываем файл
  i:=0; //начинаем с 0
  while True do //Бесконечный цикл
  begin
    if ini.ValueExists('Changes',IntToStr(i)) then //Если в секции параметр i существет то
    begin
    sRichEdit1.Lines.Add(ini.ReadString('Changes',IntToStr(i),'')); //Пишем то ч о в параметре в richedit
    end else //иначе
    Break; //Пропуск интерации цикла
    Inc(i); //Увелечение i на 1
  end;
  finally 
  Ini.Free; //!!!!
  end;
end;
это из моего рабочего кода.

Понимает такой ini файл:
Код:
[changes]
0=
1=
2=
n=
FAQ'и нужно читать внимательно. Там не описывается каждая ситуация в отдельном. Там описываются общие принципы работы с чем-либо. В нашем случает это класс TInFile.

А поскольку у вас в файле не одна секция то, пользуемся ReadSectionValues функцией, и по тому же принципу читаем секции и в томже цикле читаем значения текущей секции.

Последний раз редактировалось Человек_Борща; 03.03.2011 в 15:36.
Человек_Борща вне форума Ответить с цитированием
Старый 03.03.2011, 15:32   #6
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Пример кода с http://delphi.about.com/cs/adptips20...ltip1201_5.htm

Код:
Function IniGetStringValue(  // функция возвращает Вашу строку с путём
   TheIniFile : String;        // Название вашего файла             
   IniSection : String;       // В вашем случае Group1 или Group2
   StringName : String;     // Без счётчика;) просто указываете 1 или 2 или ...
   DefaultString : String): String; // Если вышеназванного номера не будет, будет возвращена эта строка
Var
   TheIni : TIniFile;
Begin
   TheIni := TIniFile.Create(Self) ;
   Try
     Result :=
       TheIni.ReadString(    // Для чтения строкового значения ReadString
         IniSection,
         StringName,
         DefaultString) ;
     If Result = '' Then
Result := DefaultString;
   Finally
     TheIni.Free;
   End;
End;

Function IniSetStringValue( // функция записывает новое значение
   TheIniFile : String;
   IniSection : String;
   StringName : String;
   StringValue : String): Boolean;
Var
   TheIni : TIniFile;
Begin
   TheIni := TIniFile.Create(Self) ;
   Try
     Try
       TheIni.WriteString(   // Для записи строкового значения WriteString
         IniSection,
         StringName,
         StringValue) ;
       Result := True;
     Except
       Result := False;
     End;
   Finally
     TheIni.Free;
   End;
End;
А Вы уже сами придумывайте в каком месте кода изменять значение IniSection с Group1 на Group2.
До свидания

P.S. Одновременно два ответа. Выбирайте то, что Вам нравиться , а лучше объдините.

Последний раз редактировалось OlegVE; 03.03.2011 в 15:40.
OlegVE вне форума Ответить с цитированием
Старый 03.03.2011, 15:39   #7
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

Что-то друзья намудрили...
1. Читаем названия секций - ReadSections. Если нужно - сортируем.
2. Читаем список параметров в каждой секции - ReadSection.
3. Читаем нужный параметр из полученного списка - ReadString.
asmodey1 вне форума Ответить с цитированием
Старый 03.03.2011, 15:46   #8
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Цитата:
Сообщение от asmodey1 Посмотреть сообщение
Что-то друзья намудрили...
1. Читаем названия секций - ReadSections. Если нужно - сортируем.
2. Читаем список параметров в каждой секции - ReadSection.
3. Читаем нужный параметр из полученного списка - ReadString.
1. Писал новичёк.
2. Код на delphi.about.com практически всё поясняет плюс - обрабатывает ошибки.
3. Вопрос:
Цитата:
Вопрос как попорядку читать пути в секции?
Звучит многозначно.
OlegVE вне форума Ответить с цитированием
Старый 03.03.2011, 15:58   #9
JDFU
 
Регистрация: 23.02.2011
Сообщений: 4
По умолчанию

Спасибо всем. Двух примеров вполне достаточно. Примеры простые и понятные для меня. Еще раз всем спасибо.
JDFU вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi и ini quarty Общие вопросы Delphi 5 21.02.2011 07:59
Как пересмотреть все секции в INI.ini ? iskurt Помощь студентам 1 31.01.2010 07:48
boot.ini и несколько ОС Armorer Операционные системы общие вопросы 5 24.12.2009 14:13
Как прочитать несколько слов разделённых пробелами SeRhy Общие вопросы C/C++ 3 20.10.2009 15:02
Прочитать txt в zip в Delphi apromix Общие вопросы Delphi 1 11.09.2009 22:20