Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Работа с циклами

10K
23 июня 2011 года
In0stRAnez
66 / / 16.02.2008
Доброго времени суток товарищи!

Такой вопрос: загружаю в лист бокс большой файл похожий на ini выглядит он так:

Заголовок
.......
.........
.....
Конец
Примечания
.....
.
....
Конец

мне необходимо получить информацию из раздела "заголовок" все включающиеся строчки до фразы "конец"

вот предлагаю алгоритм что не так подскажите?

Код:
form5.ListBox1.ItemIndex := 0;
for a := 0 to form5.ListBox1.Items.Count -1  do begin

if Form5.ListBox1.Items[Form5.ListBox1.ItemIndex] = 'Заголовок'
then begin
     while Form5.ListBox1.Items[Form5.ListBox1.ItemIndex] = 'Тема' do begin
     form5.Memo3.Lines.Add(form5.ListBox1.Items[Form5.ListBox1.itemindex]);
     form5.ListBox1.ItemIndex := form5.ListBox1.ItemIndex + 1;
     end;
     end;
end;

может я не тот цикл использую?
416
24 июня 2011 года
MaitreDesir
380 / / 02.01.2008
1. В первом цикле вы берете переменную a, но при этом проверяете почему-то ItemIndex-ный элемент. Не понятно, зачем так (а в цикле получается вообще не используется)
2. Во втором цикле (while который) у вас используется условие равенства элемента со строкой 'Тема', получается что этот цикл будет работать только при выполнении этого условия. Причем, именно в этом цикле у вас меняется ItemIndex. Могу предположить, что ваш алгоритм тупо будет form5.ListBox1.Items.Count раз проверять 0-ой элемент списка на равенство сначала с Заголовком, а потом с Темой.
Попробуй в эту сторону думать:
Код:
var
  a:integer;
begin
  a:=0;
  while a<Form5.ListBox1.Count do
    begin
      if Form5.ListBox1.Items[a]='Заголовок' then
        begin
          inc(a);
          while Form5.ListBox1.Items[a]<>'Конец' do
            begin
              Form5.Memo3.Lines.Add(Form5.ListBox1.Items[a]);
              inc(a);
            end
        end;
      inc(a);
    end
end;
10K
24 июня 2011 года
In0stRAnez
66 / / 16.02.2008
ошибка EstringListError - list index out of bounds (..)

а так всё работает.. видно до ошибки заполняет..
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог