Методические указания для лабораторных работ по дисциплине: «Проектирование информационных систем», страница 8

    B1->Default=0;        // при нажатии клавиши ENTER поиск не происходит

  for(i=0;i<kol;i++)      // цикл поиска в каждом файле

    {

     CG1->Progress=i;       // установка процента прогресса

     E2->Text="Не найдено"; // вывод в компоненте "Результат"

FLBox1->ItemIndex=i;   // переходна i-ыйфайл

S=0;                   // обнуление переменной S

     fiName=FLBox1->FileName; // присваивание переменной имени текущего файла

        if(fiName!="")        // если переменная имени файла не пуста

RE1->Lines->LoadFromFile(fiName);  // загрузитьтекст

tLen=RE1->Text.Length();// присваивание перем-ой знач-ия длины текста

     sLen=E1->Text.Length(); // присв-ие перем-ой знач-ия длины условия

FA=RE1->FindText(E1->Text,stPos,tLen,Options); // операторпоиска

while(FA!=-1)    // выполнять цикл пока перем-ая поиска не равна -1

          {

           stPos=FA+sLen; // изменение стартовой позиции для поиска след-го

           S++; // увеличение счетчика количества найденных слов в файле на 1

FA=RE1->FindText(E1->Text,stPos,tLen,Options); // повторпоиска

}

           stPos=0; // обнуление стартовой позиции

           if(S>0)  // если счетчик найд-х слов не равен 0

             {

              SG1->Cells[0][0]="Путь к файлу"; // заголовок столбца 1

              SG1->Cells[1][0]="Найдено";      // заголовок столбца 2

              E2->Text="Найдено"; // вывод "Найдено" в поле "Результат"

              SG1->Cells[0][col]=fiName; // указ-ся путь к файлу в таблице

              SG1->Cells[1][col]=S;      // указ-ся колич-во найд-х слов

              SG1->RowCount=col+1;  // кол-во строк увелич-ся на 1

              col++; // переменная увел-ся на 1

             }

    }

         // Далее идет сортировка результатов в таблице

         AnsiString seed;  // ин-ия символьной перем-ой

long int maxi,  need, sum=0;  // ин-ияперем-ых

         for(int i=1; i < Form1->SG1->RowCount; i++)

           {

            maxi = mine(i);

            need = StrToInt(Form1->SG1->Cells[1][i]);

            seed = Form1->SG1->Cells[0][i];

            Form1->SG1->Cells[1][i] = Form1->SG1->Cells[1][maxi];

            Form1->SG1->Cells[0][i] = Form1->SG1->Cells[0][maxi];

            Form1->SG1->Cells[1][maxi] = need;

            Form1->SG1->Cells[0][maxi] = seed;

            sum+=StrToInt(Form1->SG1->Cells[1][i]);

} // здесь алгоритм сортировки в таблице заканчивается

   if(sum>0) // если сумма найденных совпадений больше 0

     E2->Text="Найдено "+IntToStr(sum)+" совпадений в "+

     IntToStr(Form1->SG1->RowCount-1)+" файлах"; // вывод результата

   RE1->Clear(); // очистка компоненты вывода текста

   FLBox1->ItemIndex=0; // переход к первому файлу в комп-те "Документы"

   B1->Caption="Пуск";  // обратное изм-ие заг-ка кнопки "Процесс" на "Пуск"

   B1->Default=1; //при нажатии кнопки ENTER актив-ся кнопка "Пуск"

  }

  else // если поле ввода "Условие поиска" является пустым или нет файлов

    {

     E2->Text="Не задано условие"; // В поле "Результат" выводится строка

     if(kol<=1)

     E2->Text="Нет файлов для поиска"; // В поле "Результат" выводится строка

     E1->SetFocus(); // активируется поле ввода "Условие поиска"

    }

}

7. После ввода кода в событие OnClick компонента B1 совершаем аналогичные действия для создания события OnClick для компоненты B2. Для B2 вводим следующий код:

void __fastcallTForm1::B2Click(TObject *Sender) //<- вводить не нужно!!!

{ // событие - клик по кнопке "Поиск"

int FA=0, sLen=0; tLen=0; // ин-ияперем-ых