Сообщение от firstvirus
А теперь глянь данные что у тебя выводятся для второго файла и сравни с данными для первого . Индексы во всех списках начинаются не с 1 а с 0, т.е. правильно будет if FI[i].Id = checklistbox1.itemindex+1 then. И вообще для удобства массив лучше было начинать не с 1 а с 0. Еще есть вариант обойтись без массива и решить через связанный список. Правда там писать больше придется, но во первых быстрее работать будет и памяти жрать меньше(вроде). Хотя связанные списки я до сих пор разбираю, но понял что это оч удобно если грамотно использовать . надеюсь помог, а не написал бред .
|
Дык в Id то находится реальный Id, который я туда запихиваю сразу при добавлении в checklistbox:
// добавляем имя файла на форму
form1.checklistbox1.Items.Append(path+'\'+sr.name);
// и сразу заносим в Id только что добавленный id
FI[Index].Id := form1.CheckListBox1.Items.IndexOf(path+'\'+sr.name);
Хм, может забить на Items.IndexOf и считать действительно просто от нуля? Ведь файлы последовательно добавляются... Но все равно интересно, почему такая конструкция не работает.. Странно это.
А насчет связных списков - оно конечно правильно, но вот только сильно влом ))) Вообщем-то тулзу можно сказать для себя пишу, и не хочется заморачиваться с ними просто. Я конечно понимаю, что это быдлокод
А насчет памяти там вообще волноватся не стоит. Я ж каждый файл гружу в память, не смотря на его размер. Когда прогонял тесты, попался EXE файл размером в 900 мб (архив самораспаковывающийся), так я его тоже в память подгрузил прямо весь )) Надо будет потом ограничение сделать и не грузить такие файлы ))