Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.06.2011, 22:12
In0stRAnez In0stRAnez вне форума
Прохожий
 
Регистрация: 23.02.2008
Сообщения: 21
Репутация: 10
Восклицание Работа с циклами

Доброго времени суток товарищи!

Такой вопрос: загружаю в лист бокс большой файл похожий на 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;

может я не тот цикл использую?
Ответить с цитированием
  #2  
Старый 23.06.2011, 22:24
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

В чём проблема скажешь?
Ответить с цитированием
  #3  
Старый 23.06.2011, 22:29
In0stRAnez In0stRAnez вне форума
Прохожий
 
Регистрация: 23.02.2008
Сообщения: 21
Репутация: 10
Восклицание

проблемма в том что виснет..., стоки явно не добавляет, вобщем я не могу посмотреть форму 5 что там творится.. программа виснет.
Ответить с цитированием
  #4  
Старый 23.06.2011, 22:34
Аватар для angvelem
angvelem angvelem вне форума
.
 
Регистрация: 18.05.2011
Адрес: Омск
Сообщения: 3,970
Версия Delphi: 3,5,7,10,12,XE2
Репутация: выкл
По умолчанию

Попробуй так:
Код:
  form5.ListBox1.ItemIndex := 0;
  for a := 0 to form5.ListBox1.Items.Count -1  do 
  begin
     if Form5.ListBox1.Items[Form5.ListBox1.ItemIndex] = 'Заголовок' then
       Break;
  end;
ну и далее.
Ответить с цитированием
  #5  
Старый 24.06.2011, 19:35
In0stRAnez In0stRAnez вне форума
Прохожий
 
Регистрация: 23.02.2008
Сообщения: 21
Репутация: 10
Восклицание

использую вот это

Код:
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;

но почему то вылетает ошибка -
EstringListError - list index out of bounds (..)

а так всё работает.. видно до ошибки заполняет..
Ответить с цитированием
  #6  
Старый 24.06.2011, 20:19
Аватар для v1s2222
v1s2222 v1s2222 вне форума
Продвинутый
 
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
По умолчанию

Исправь проверку, хоть так:
Код:
...
while (Form5.ListBox1.Items[a]<>'Конец') or (a = Form5.ListBox.Count) do
...

Или же

Код:
var
  S: TStringList;
  i, k: Integer;
begin
  S:=TStringList.Create;
  S.Add('Заголовок.');
  S.Add('1');
  S.Add('2');
  S.Add('3');
  S.Add('Конец.');
  S.Add('4');

  for i:=0 to S.Count-1 do
    if(AnsiUpperCase(S.Strings[i]) = 'ЗАГОЛОВОК.') then begin
      k:=i+1;
      While(AnsiUpperCase(S.Strings[k]) <> 'КОНЕЦ.') or (k = S.Count) do begin
        Memo1.Lines.Add(S.Strings[k]);
        inc(k);
      end;
    end;

  S.Free;
__________________
Помогаю за Спасибо
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:40.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter