Тема: Помилка у вибірці даних з StringGrid (IDE С++ Builder)
Доброго дня, шановні! Завчасно вибачаюсь за можливо простеньке запитання та не дуже привабливий код, бо я програміст-початківець.
Власне запитання: мені потрібно вибрати з таблиці StringGrid товар, що купують найчастіше та найрідше за заданий проміжок часу. Власне вибірку код проводить правильно, але іноді не враховує останні рядки. Проте якщо зробити вибірку з уже вибраного товару, то все добре. Дуже сподіваюся на Вашу підказку або будь-яку іншу допомогу.
Код обробника події клацання по кнопці "Пошук":
\
StringList * T = new TStringList;
T->Clear();
//Вибір рядків із вказаного діапазону дат
//запис даних рідків до списку Т
for(int i=1;i<TabVZak->RowCount;i++)
{
if(StrToDate(TabVZak->Cells[4][i])>DateTimePicker1->Date)
if(StrToDate(TabVZak->Cells[4][i])<DateTimePicker2->Date)
T->Add(TabVZak->Rows[i]->DelimitedText);
}
//Заповнення таблиці данимим зі списку Т
TabVZak->RowCount=T->Count+1;
for(int i=1;i<TabVZak->RowCount;i++)
TabVZak->Rows[i]->DelimitedText=T->Strings[i-1];
TStringList * K = new TStringList;
K->Clear();
//Вибір строк з однаковою назвою товару
for(int i=0;i<T->Count;i++)
{
for(int j=i+1;j<T->Count;j++)
if(TabVZak->Cells[1][i+1]==TabVZak->Cells[1][j+1]) //порівняння назв
{
//запис до першого рядка з такою назвою, суми кількості проданого товару
TabVZak->Cells[2][i+1]=StrToInt(TabVZak->Cells[2][i+1]) + StrToInt(TabVZak->Cells[2][j+1]);
//запис до першого рядка з такою назвою, суми ціни проданого товару
TabVZak->Cells[3][i+1]=FloatToStrF(StrToFloat(TabVZak->Cells[3][i+1]) + StrToFloat(TabVZak->Cells[3][j+1]),ffFixed,8,2);
//заміна першого рядка на змінені дані
T->Strings[i]=TabVZak->Rows[i+1]->DelimitedText;
//видалення повторюваного рядка
T->Delete(j);
}
K->Add(T->Strings[i]);
}
TabVZak->RowCount=K->Count+1;
//Вивід у таблицю отримані дані
for(int i=1;i<TabVZak->RowCount;i++)
TabVZak->Rows[i]->DelimitedText=K->Strings[i-1];
//BubbleSort за зменшенням кількості проданого товару
AnsiString H;
for(int i=1;i<TabVZak->RowCount;i++)
for(int j=1;j<TabVZak->RowCount;j++)
if(TabVZak->Cells[2][i]>TabVZak->Cells[2][j])
{
H=TabVZak->Rows[i]->DelimitedText;
TabVZak->Rows[i]=TabVZak->Rows[j];
TabVZak->Rows[j]->DelimitedText=H;
}
T->Clear();