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

Delphi Sources



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

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 20.04.2008, 23:28
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию Ошибка

Короч суть в чем:

Есть текстовый файл в нём 16 строк, все их нужно забить в компонент.
Написал такую процедурку:
Код:
k:=-4;
for i:=0 to f.Count-1 do begin
k:=k+4;
with frm_ofice.nlist.Items.Add do
      begin
        Caption:=f.Strings[k];
        SubItems.Add(f.Strings[k+1]);
        SubItems.Add(f.Strings[k+2]);
        SubItems.Add(f.Strings[k+3]);
      end;
end;
Компилятор ругается, типа List Index bounds of 16 или чтото вроде..
Помогите плз!
Ответить с цитированием
  #2  
Старый 20.04.2008, 23:51
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

посчтиай сам, к элементу с каким индексом ты обращаешься при последнем проходе цикла

Если у тебя в файле 16 строк и ты помещаешь в одну строку сразу 4 шт из них, то выглядеть это должно примерно так:

Код:
procedure TForm1.Load(AFileName: String);
var
  I : Integer;
  SL : TStringList;
begin
  SL := TStringList.Create;
  Try
    SL.LoadFromFile(AFileName);
    If (SL.Count Mod 4) <> 0 Then
      Raise Exception.Create('Кол-во данных не соответсвует. Должно быть целое число по 4.');
    I := 0;
    While I < SL.Count Do
      With frm_ofice.nlist.Items.Add Do
        Begin
          Caption:=f.Strings[i];
          SubItems.Add(f.Strings[I+1]);
          SubItems.Add(f.Strings[I+2]);
          SubItems.Add(f.Strings[I+3]);
          Inc(I,4);
        End;
  Finally
    SL.Free;
  End;
end;
Ответить с цитированием
  #3  
Старый 21.04.2008, 00:20
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Вот структура файла:

Дата1
Время1
Описание1
Статус1
Дата2
Время2
Описание2
Статус2 и тд.. до Статус4
Ответить с цитированием
  #4  
Старый 21.04.2008, 00:24
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Огромное спасибо!

А в чом проблема была?
И как можно сделать так чтобы если f.strings[i] не равно текущей дате(сегодняшней) то вот эти операторы работать не будут
Код:
With frm_ofice.nlist.Items.Add Do
        Begin
          Caption:=f.Strings[i];
          SubItems.Add(f.Strings[I+1]);
          SubItems.Add(f.Strings[I+2]);
          SubItems.Add(f.Strings[I+3]);
          Inc(I,4);
        End;

Последний раз редактировалось Кодер, 21.04.2008 в 00:37.
Ответить с цитированием
  #5  
Старый 21.04.2008, 00:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Цитата:
Сообщение от Неподарок
Огромное спасибо!

А в чом проблема была?
И как можно сделать так чтобы если f.strings[i] не равно текущей дате(сегодняшней) то вот эти операторы работать не будут
Код:
With frm_ofice.nlist.Items.Add Do
        Begin
          Caption:=f.Strings[i];
          SubItems.Add(f.Strings[I+1]);
          SubItems.Add(f.Strings[I+2]);
          SubItems.Add(f.Strings[I+3]);
          Inc(I,4);
        End;

Код:
With frm_ofice.nlist.Items.Add Do
        Begin
          If StrToDate(f.String[i]) = Date Then
           Begin
            Caption:=f.Strings[i];
            SubItems.Add(f.Strings[I+1]);
            SubItems.Add(f.Strings[I+2]);
            SubItems.Add(f.Strings[I+3]);
           End;
          Inc(I,4);
        End;
[/
Ответить с цитированием
  #6  
Старый 21.04.2008, 01:22
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Ругается на это
Код:
If StrToDate(f.String[i]) = Date Then

Пишет:Identifier expected but 'STRING' found
Ответить с цитированием
  #7  
Старый 21.04.2008, 01:41
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Strings естественно.

Сами думать бум, или как?
Ответить с цитированием
  #8  
Старый 21.04.2008, 01:49
Кодер Кодер вне форума
Активный
 
Регистрация: 25.02.2008
Сообщения: 395
Репутация: -599
По умолчанию

Котелок не варит..Не спал много.
Ответить с цитированием
  #9  
Старый 21.04.2008, 02:07
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,087
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

ну ты тогда много напрограммируешь
Ответить с цитированием
Ответ


Delphi Sources

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

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

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

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


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


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

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