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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2022, 22:01   #1
mr.stranger
Пользователь
 
Регистрация: 02.05.2022
Сообщений: 52
По умолчанию Поиск по таблице

Подскажите пожалуйста, как реализовать работу кнопки: поиск необходимой записи в StringGrid1 с выводом в StringGrid2, в случае, если записи нет, вывести соответствующее сообщение
mr.stranger вне форума Ответить с цитированием
Старый 23.05.2022, 00:44   #2
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Вы же делали сортировку. Поиск это один проход внутреннего цикла сортировки.
macomics вне форума Ответить с цитированием
Старый 23.05.2022, 05:22   #3
Foreseen
Техножрец
Форумчанин
 
Аватар для Foreseen
 
Регистрация: 04.07.2014
Сообщений: 328
По умолчанию

Код:
for i:=0 to StringGrid1.RowCount-1
for j:=0 to StringGrid1.ColCount-1
if SearchResult = false then 
ShowMessage('ниче не найдено')
где i, j - индексы строк и столбцов в таблице
— Двери есть везде. Просто нужно знать, как в них войти.
Foreseen вне форума Ответить с цитированием
Старый 23.05.2022, 22:37   #4
mr.stranger
Пользователь
 
Регистрация: 02.05.2022
Сообщений: 52
По умолчанию

Цитата:
Сообщение от macomics Посмотреть сообщение
Вы же делали сортировку. Поиск это один проход внутреннего цикла сортировки.
Ну тут понятно - надо вторую сортировку сделать и просто вывести во второй грид первую строчку (нужна строка с наименьшим годом), но у меня не получается(
mr.stranger вне форума Ответить с цитированием
Старый 23.05.2022, 22:38   #5
mr.stranger
Пользователь
 
Регистрация: 02.05.2022
Сообщений: 52
По умолчанию

Вот код самой сортировки
Код:
begin

for i := 1 to StringGrid1.RowCount-1 do
begin
ms1[i] := StringGrid1.Cells[1,i];
ms2[i] := StringGrid1.Cells[2,i];
ms3[i] := StrToInt(StringGrid1.Cells[3,i]);
end;
for i := 1 to StringGrid1.RowCount-1 do
for j := 1 to StringGrid1.RowCount-i-1 do
begin
if (ms3[j]) > (ms3[j+1]) then
begin
s1 := ms1[j];
ms1[j] := ms1[j+1];
ms1[j+1] := s1;

s2 := ms2[j];
ms2[j] := ms2[j+1];
ms2[j+1] := s2;

s3 := IntToStr(ms3[j]);
ms3[j] := ms3[j+1];
ms3[j+1] := StrToInt(s3);
end;
end;
for i := 1 to StringGrid1.RowCount-1 do
begin
StringGrid1.Cells[1,i] := ms1[i];
StringGrid1.Cells[2,i] := ms2[i];
StringGrid1.Cells[3,i] := IntToStr(ms3[i]);
end;
end

Я так полагаю, что простая замена в этой части грид1 на грид2 ни к чему не приведет
Цитата:
for i := 1 to StringGrid1.RowCount-1 do
begin
StringGrid1.Cells[1,i] := ms1[i];
StringGrid1.Cells[2,i] := ms2[i];
StringGrid1.Cells[3,i] := IntToStr(ms3[i]);
end;

Последний раз редактировалось mr.stranger; 23.05.2022 в 22:56.
mr.stranger вне форума Ответить с цитированием
Старый 23.05.2022, 23:13   #6
macomics
Участник клуба
 
Регистрация: 17.04.2022
Сообщений: 1,833
По умолчанию

Чтобы отсортировать вы делаете сравнение
Код:
ms3[j] > ms3[j+1]
, а для того чтобы что-то найти вам надо сравнивать
Код:
if (ms1[j] = val1) and (ms2[j] = val2) and (ms3[j] = val3) then break;
для поиска первого совпадения
Код:
if (ms1[j] = val1) and (ms2[j] = val2) and (ms3[j] = val3) then found := j;
для поиска последнего совпадения
Код:
if (ms1[j] = val1) and (ms2[j] = val2) and (ms3[j] = val3) then StringGrid2.InsertRowWithValues(StringGrid2.RowCount, [inttostr(StringGrid2.RowCount), inttostr(j), ms1[j], ms2[j], inttostr(ms3[j])]);
для добавления всех совпавших в StringGrid2. И конечноже это не нужно прогонять через два вложенных цикла. Достаточно
Код:
for j := 0 to StringGrid1.RowCount - 1 do
macomics вне форума Ответить с цитированием
Старый 24.05.2022, 10:16   #7
mr.stranger
Пользователь
 
Регистрация: 02.05.2022
Сообщений: 52
По умолчанию

Спасибо
mr.stranger вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск по таблице martofpain PHP 1 11.12.2017 14:43
Поиск по таблице Вероника99 PHP 5 26.02.2016 19:24
Поиск по таблице dbf Dunkas БД в Delphi 1 20.03.2013 13:26
Поиск по таблице maratmm Microsoft Office Excel 4 12.11.2010 12:45
поиск в таблице puma Помощь студентам 3 22.04.2008 23:56