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

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

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

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 19.04.2016, 13:52   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
Вопрос Выбрать данные из TStringList

Приветствую!
Есть файл с таким содержимым
PHP код:
[MenuItem1]
MenuItemCaption=Разработка
MenuItemImageIndex
=0

SubMenuItemCaption
=Test
SubMenuItemImageIndex
=0
FileName
=test.bat

[MenuItem2]
MenuItemCaption=Отладка
MenuItemImageIndex
=0

SubMenuItemCaption
=Debug
SubMenuItemImageIndex
=0
FileName
=debug.bat

[MenuItem3]
[
MenuItem4
Как можно получить все строки выбранного блока? Например, указал [MenuItem2] и получил всё что у него есть или указал [MenuItem3] и получил пустоту т.к. у данного блока пока ничего нет.
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2016, 14:23   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

думаю, что метод ReadSection делает то, что Вы хотите.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2016, 14:48   #3
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Только не TStringList, а TIniFile
Код:
  try
    List:=TIniFile.Create(ExtractFilePath(Application.ExeName)+'aaa.ini');
    List.ReadSectionValues('MenuItem2',ListBox1.Items);
    List.Free;
  except
    ShowMessage('Ошибка чтения');
  end;
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.04.2016, 15:39   #4
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

С радостью бы на INI сделал, только вот таких переменных
Код:
SubMenuItemCaption
в одном блоке может быть очень много
SubMenuItemCaption0, SubMenuItemCaption1 и тд делать тоже не вариант можно запутаться и к тому же если хочешь поменять порядок придётся все SubMenuItemCaption переименовывать
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2016, 15:39   #5
TaLadno
Форумчанин
 
Регистрация: 03.06.2015
Сообщений: 393
По умолчанию

xml?
Вы там держитесь.
TaLadno вне форума Ответить с цитированием
Старый 19.04.2016, 15:45   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
в одном блоке может быть очень много
Не правильно организован. Массивы так и создают в одной секции ini - Name1, Name2 и т.д. Значит парсить стринглист без всяких ReadSection
Цитата:
xml
Согласен, это удобней будет
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 19.04.2016, 16:23   #7
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
С радостью бы на INI сделал, только вот таких переменных
Код:
SubMenuItemCaption
в одном блоке может быть очень много
не вижу в вашем примере такого.
покажите реальный пример, где такая ситуация с повтором ключа внутри секции.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 19.04.2016, 20:17   #8
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,897
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
не вижу в вашем примере такого.
покажите реальный пример, где такая ситуация с повтором ключа внутри секции.
[MenuItem1]
MenuItemCaption=Разработка
MenuItemImageIndex=0

SubMenuItemCaption=Test
SubMenuItemImageIndex=0
FileName=test.bat

[MenuItem2]
MenuItemCaption=Отладка
MenuItemImageIndex=0

SubMenuItemCaption=Debug
SubMenuItemImageIndex=0
FileName=debug.bat

SubMenuItemCaption=Ping
SubMenuItemImageIndex=0
FileName=ping.bat

SubMenuItemCaption=Tracert
SubMenuItemImageIndex=0
FileName=tracert.bat

[MenuItem3]
[MenuItem4]
Shouldercannon вне форума Ответить с цитированием
Старый 19.04.2016, 20:56   #9
kropotkina-alice
Форумчанин
 
Аватар для kropotkina-alice
 
Регистрация: 27.10.2014
Сообщений: 594
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
Как можно получить все строки выбранного блока? Например, указал [MenuItem2] и получил всё что у него есть или указал [MenuItem3] и получил пустоту т.к. у данного блока пока ничего нет.
Пусть файл загружен в ListBox1.
Код:
procedure TForm1.ListBox1Click(Sender: TObject);
var i: smallint;
begin
Memo1.Clear;
if (ListBox1.ItemIndex=ListBox1.Items.Count-1) or (Pos('[',ListBox1.Items[ListBox1.ItemIndex])=0) or
(Pos('[',ListBox1.Items[ListBox1.ItemIndex+1])>0) then
exit;
i:=ListBox1.ItemIndex+1;
while Pos('[',ListBox1.Items[i])=0 do
begin
Memo1.Lines.Add(ListBox1.Items[i]);
Inc(i);
end;
end;
Или я неправильно поняла?
kropotkina-alice вне форума Ответить с цитированием
Старый 20.04.2016, 02:04   #10
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,872
По умолчанию

Цитата:
Сообщение от Shouldercannon Посмотреть сообщение
[MenuItem1]
MenuItemCaption=Разработка
MenuItemImageIndex=0

SubMenuItemCaption=Test
SubMenuItemImageIndex=0
FileName=test.bat

[MenuItem2]
MenuItemCaption=Отладка
MenuItemImageIndex=0

SubMenuItemCaption=Debug
SubMenuItemImageIndex=0
FileName=debug.bat

SubMenuItemCaption=Ping
SubMenuItemImageIndex=0
FileName=ping.bat

SubMenuItemCaption=Tracert
SubMenuItemImageIndex=0
FileName=tracert.bat

[MenuItem3]
[MenuItem4]
Стандартных решений для нестандартных извращений не существует.
northener вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
задача: есть БД с 2 файлами в которые записываются данные о квартирах, выбрать нужные данные lexa_7up Помощь студентам 4 11.01.2014 19:37
Не учитываются все данные в TStringList BizCray Общие вопросы Delphi 7 02.10.2013 11:46
Данные из Memo в TStringList Ilya_L Помощь студентам 2 03.12.2011 07:45
Перенести данные из TString в TStringList . Сергей Л Общие вопросы Delphi 1 02.11.2011 11:14
Как заставить TStringlist отобразить данные? ЛеньПридумыватьНик Помощь студентам 2 07.03.2010 23:28