![]() |
|
|
#1
|
|||
|
|||
|
Доброго времени суток товарищи!
Такой вопрос: загружаю в лист бокс большой файл похожий на 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
|
||||
|
||||
|
В чём проблема скажешь?
|
|
#3
|
|||
|
|||
|
проблемма в том что виснет..., стоки явно не добавляет, вобщем я не могу посмотреть форму 5 что там творится.. программа виснет.
|
|
#4
|
||||
|
||||
|
Попробуй так:
Код:
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
|
|||
|
|||
|
использую вот это
Код:
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
|
||||
|
||||
|
Исправь проверку, хоть так:
Код:
... 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; |
|
#7
|
||||
|
||||
|
ТС полюби XML наконец
|