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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.07.2008, 10:24   #1
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию Index List ofbounds (16)

Сдрасте вам) у меня возникла проблемма при создании большого списка...вобщем есть файл. в в каждой строке файла набор переменных, разделенных знаком табуляции. я сначала гружу весь файл в StringList, потом перебираю каждую строку и записываю во второй StringList через .LineBreak, следом переношу из второго в массив рекордов... когда все строки прочитаны - переношу данные из массива в ListView
всё бы хорошо, но добавляются только 2277 строк, хотя всего их 2.7к+, при этом вылазит ошибка "List index out of bounds (16)"

вот частичный код:
Код:
All_Lines:= TStringList.Create;
massiv_tmp:=TStringList.Create;
sleep(3000);
All_Lines.LoadFromFile('temp.txt');
SetLength(massiv,All_lines.Count+1);

for I := 1 to All_Lines.Count - 1 do          //Именно начиная с 1 !!! в 0 строке хранятся заголовки!
begin
massiv_tmp.LineBreak:=#9;
massiv_tmp.Text:=All_Lines.Strings[I];
massiv[I].ID            :=massiv_tmp[0];
massiv[I].UNK_0         :=massiv_tmp[1];
massiv[I].messageA      :=massiv_tmp[2];
massiv[I].group         :=massiv_tmp[3];
massiv[I].rgba_0        :=massiv_tmp[4];
massiv[I].rgba_1        :=massiv_tmp[5];
massiv[I].rgba_2        :=massiv_tmp[6];
massiv[I].rgba_3        :=massiv_tmp[7];
massiv[I].item_sound    :=massiv_tmp[8];
massiv[I].sys_msg_ref   :=massiv_tmp[9];
massiv[I].UNK_1         :=massiv_tmp[10];
massiv[I].UNK_2         :=massiv_tmp[11];
massiv[I].UNK_3         :=massiv_tmp[12];
massiv[I].UNK_4         :=massiv_tmp[13];
massiv[I].UNK_5         :=massiv_tmp[14];
massiv[I].sub_msg       :=massiv_tmp[15];
massiv[I].typeA         :=massiv_tmp[16];

  with ListView1.Items.Add do begin
  Caption:=massiv[I].ID;
  Subitems.Add(massiv[I].messageA);
  end;

end;

end;
Подскажите, где я допустил ошибку?
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Stilet; 17.07.2008 в 10:49.
Johnson вне форума Ответить с цитированием
Старый 17.07.2008, 10:48   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Скорее всего здесь:
Цитата:
massiv[i].typeA :=massiv_tmp[16];
Проверь размерность.
Цитата:
и записываю во второй StringList через .LineBreak
Это вообщето немного извращенно, поскольку такие вещи делаются через DelimitedText.

Кста, такое вещи лучше в БД хранить...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 17.07.2008, 13:20   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

а где описание переменной massiv ?
massiv : array ....... (заполнить пропущенное...)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 17.07.2008, 19:46   #4
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Описание:
Код:
  massiv: array of record
    ID, UNK_0, group, sys_msg_ref,
    UNK_1, UNK_2, UNK_3, UNK_4, UNK_5,
    messageA, item_sound, sub_msg, typeA, rgba_0, rgba_1, rgba_2, rgba_3: string;
  end;
размерность в порядке, 17 переменных описываю, 17 и читаю...
к томуже если размерность была бы не в порядке - код выводил бы охинею, а большую часть текста он парсит нормально, без ошибок, а на строке 2278 почемуто вылетает
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}

Последний раз редактировалось Johnson; 17.07.2008 в 19:50.
Johnson вне форума Ответить с цитированием
Старый 17.07.2008, 19:54   #5
Johnson
кривокодер ;)
Форумчанин
 
Аватар для Johnson
 
Регистрация: 20.06.2008
Сообщений: 707
По умолчанию

Всё, разобрался... как говорится "дело было не в бабине - раздолбай сидел в кабине"...
виноват текст был, в строке 2278 отсутствовал один знак табуляции

кстати с охотой приму советы по поводу организации парсинга )
DelimiterText я не умею пользоваться, не разу не применял и не встречал нигде
"А как написать праграму?, "ришыти задачьку очинь нада" ©с форума. Жить становится интереснее, жить становится веселее...
{Быть или не быть} {Неуспешный суицид}
Johnson вне форума Ответить с цитированием
Ответ


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

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

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
При запуске ComboBoxEx пишет List index out of bounds -1. dx+ Общие вопросы Delphi 6 12.06.2008 22:32
List yurik1 Общие вопросы C/C++ 1 06.05.2008 16:34
E-Mail форма+List Box Nemesisking PHP 8 05.04.2008 12:59
Index и Match в Excel. sokpet Помощь студентам 1 14.01.2008 13:46
User list RKS Работа с сетью в Delphi 8 10.09.2007 13:42