Вопрос № 17249: Уважаемые эксперты.
Есть два массива
Romsensor: array[0..29,0..7] of byte;
Rom1 : array [0..8] of byte ;
Подскажите как сравнить элементы этих массивов т.е.
Допустим эелементы массива ROM1 12,22,33,44,34,23,11,11
И восемь элем...Вопрос № 17278: как изменить цвет кнопки TButton?...
Вопрос № 17249
Уважаемые эксперты.
Есть два массива
Romsensor: array[0..29,0..7] of byte;
Rom1 : array [0..8] of byte ;
Подскажите как сравнить элементы этих массивов т.е.
Допустим эелементы массива ROM1 12,22,33,44,34,23,11,11
И восемь элементов из 29 массивов ROMSENSOR то же могут иметь эти же значения.
Как определить так ли это.
С уважением Антон.
Отправлен: 20.02.2005, 18:58
Вопрос задал: антон (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: SteelNick
Здравствуйте, антон!
Немного непонятный вопрос, конечно. Прежде всего, судя по всему,
Rom1 : array [0..7] of byte
Далее, если надо найти строку, которая равна Rom1, тогда напиши так:
------------------
for i:=0 to 29 do begin
for j:=0 to 7 do
if RomSensor[i,j]<>Rom1[i,j] then break;
if j=7 then begin
Row:=i;
Break;
end;
end;
------------------
Если все восемь значений строки будут равны, в Row будет записан номер строки и проверка прекратится. С помощью незначительной модификации можно добиться нахождения всех строк в Romsensor, равных Rom1.
Ответ отправил: SteelNick (статус: Практикант)
Отправлен: 20.02.2005, 19:57 Оценка за ответ: 4
Отвечает: Shizuku Tsukishima
Здравствуйте, антон!
Можно просто перебрать элементы в цикле, включив поиск через условие. Кстати, Ваш Romsensor[] - самый обыкновенный двумерный массив.
В приложении пример, который сравнивает элементы Rom1 с КАЖДЫМ из элементов Romsensor. Если необходимо проверить совпадает ли полностью какая-нибудь ИЗ СТРОК матрицы Romsensor с массивом Rom1, то мой пример можно легко модифицировать, включив в условие какую-нибудь переменную-флаг (boolean). Такой переменной изначально присваивается значение (ноль, например). Потом, если Ваше условие на одной из итераций не выполнилось, то флаг инвертирует своё значение (присваивается единица, для нашего примера). После значение
переменной-флага анализируется и делается вывод - совпала строка матрицы с образцом или нет.
Приложение:
Ответ отправила: Shizuku Tsukishima (статус: 2-ой класс)
Отправлен: 21.02.2005, 11:33 Оценка за ответ: 5
Отвечает: Sh-st
Здравствуйте, антон!
var
i:Inrteger;
raven:boolean;
begin
raven:=true;
for i:=0 to 8 do
if romsensor[i]<>rom1[i] then
begin
raven:=false;
break;
end;
Ответ отправил: Sh-st (статус: 1-ый класс)
Отправлен: 21.02.2005, 15:04 Оценка за ответ: 4
Отвечает: Полховский Александр Владимирович
Здравствуйте, антон!
У тебя не совпадает размер массива Rom1 и размер ряда Romsensor. Если это опечатка, то тут всё просто: перебираем все ряды, а в каждом ряду - все ячейки. Простейший цикл for.
Допущу, всё-таки, что диапазон Rom1 от 0 до 7. И массивов там не 29, а 30. Ноль - тоже ячейка.
Отправлен: 21.02.2005, 13:55
Вопрос задал: I (статус: Посетитель)
Всего ответов отправлено: 4
Отвечает: Sh-st
Здравствуйте, I!
Надо перехватывать сообщение windows по перерисовке компонента или скачать простенький компонент на основе этого TButton. Полно компонентов на сайте www.torry.net
Ответ отправил: Sh-st (статус: 1-ый класс)
Отправлен: 21.02.2005, 15:16
Отвечает: Samum
Здравствуйте, I!
У стандартной TButton цвет изменить нельзя, но ты можешь создать класс-наследник от TButton и в нем обрабатывать смену цвета. Если будут проблемы - напиши, я вышлю пример (сюда его не пишу - довольно большой).
Ответ отправил: Samum (статус: Специалист)
Отправлен: 22.02.2005, 11:45
Отвечает: Гриценко Юрий Алексеевич
Здравствуйте, I!
Cв-во BackColor или что-то в этом роде, в студии нажми точку после имени переменной и просмотри св-ва класса их названия вполне понятны!
Отвечает: Полховский Александр Владимирович
Здравствуйте, I!
Разве что нарисовать на её поверхности что-нить цветное (да хоть label) и все события этого цветного монстра перенаправить на кнопку, добавив немного анимации (нажатие/отжатие). А что, TBitBtn уже не модно ?