ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
|

10.12.2009, 00:54
|
|
Новичок
Регистрация: 26.11.2009
Сообщений: 20
Провел на форуме: 88440
Репутация:
60
|
|
Сообщение от FindeR
И так сотня процедур? Или я что-то недопонял? 
Да и неизвестно заранее количество объектов.
Нет, конечно не сотня! Не для каждого же объекта писать отдельную процедуру или функцию. DynamicCheckBoxChange - это общая процедура, в которой можно описать необходимые действия, и затем присваивать ее определенным группам CheсkBox.
А что касается неопределенности количества объектов, то тут прийдется заводить глобальную переменную, например, CheckBoxCount. И ссылаться в будущем на нее.
Вообще говоря, такое динамическое создание объектов - это всегда рутинная, а иногда и бесполезная работа. Однако общий принцип таков.
|
|
|

10.12.2009, 01:29
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Сообщение от Pr0mo
Нет, конечно не сотня! Не для каждого же объекта писать отдельную процедуру или функцию. DynamicCheckBoxChange - это общая процедура, в которой можно описать необходимые действия, и затем присваивать ее определенным группам CheсkBox.
А что касается неопределенности количества объектов, то тут прийдется заводить глобальную переменную, например, CheckBoxCount. И ссылаться в будущем на нее.
Вообще говоря, такое динамическое создание объектов - это всегда рутинная, а иногда и бесполезная работа. Однако общий принцип таков.
А именно, как получить передать имя кнопки, которую нажали?
Нажата Btn[1], сменился статус у Chk[1] и т.д.
А не нажата любая Btn, а меняется статус у Chk[1]
Вроде, понятно сформулировал.
|
|
|

10.12.2009, 02:03
|
|
Новичок
Регистрация: 26.11.2009
Сообщений: 20
Провел на форуме: 88440
Репутация:
60
|
|
Сообщение от FindeR
А именно, как получить передать имя кнопки, которую нажали?
Нажата Btn[1], сменился статус у Chk[1] и т.д.
А не нажата любая Btn, а меняется статус у Chk[1]
Вроде, понятно сформулировал.
Тогда немного посложнее. В процедуре нужно ссылаться на указанный объект:
Код:
procedure TForm1.DynamicCheckBoxChange(Sender: TObject);
begin
if (sender as TButton).Caption='123' then
chk[1].Checked:=true;
end;
Здесь Sender - это переменная, которая указывает на вызванный объект (нажатая кнопка). Таким образом, если у нажатой кнопки Caption = '123' то выполнится условие chk[1].Checked:=true;
|
|
|

10.12.2009, 02:19
|
|
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме: 2589211
Репутация:
151
|
|
Сообщение от Pr0mo
Тогда немного посложнее. В процедуре нужно ссылаться на указанный объект:
Код:
procedure TForm1.DynamicCheckBoxChange(Sender: TObject);
begin
if (sender as TButton).Caption='123' then
chk[1].Checked:=true;
end;
Здесь Sender - это переменная, которая указывает на вызванный объект (нажатая кнопка). Таким образом, если у нажатой кнопки Caption = '123' то выполнится условие chk[1].Checked:=true;
Спасибо. Именно тот пример, что был нужен.
|
|
|

10.12.2009, 17:41
|
|
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме: 638378
Репутация:
41
|
|
Сообщение от NTFF
в каждом столбце и каждой строке матрицы содержица строго по одному нулевому элементу. Перестановкой строк добиться расположение всех нулей по главной диагонали. В программе должна присутствовать проверка чтоб в строке был строго один ноль, в противном случае цикл не выполняться. матрица 5*5 пользователь сам ее вводит
А необходимо переставлять эелементы в строке, или сами строки?
|
|
|

10.12.2009, 20:15
|
|
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме: 140714
Репутация:
29
|
|
Сообщение от Thenno
А необходимо переставлять эелементы в строке, или сами строки?
Сообщение от NTFF
Перестановкой строк добиться расположение всех нулей по главной диагонали.
Сообщение от NTFF
в каждом столбце и каждой строке матрицы содержица строго по одному нулевому элементу. Перестановкой строк добиться расположение всех нулей по главной диагонали. В программе должна присутствовать проверка чтоб в строке был строго один ноль, в противном случае цикл не выполняться. матрица 5*5 пользователь сам ее вводит?
Как я понял из сегодняшнего разговора, генерировать матрицу не нужно, а сортировка не выполняется вообще, если есть неправильная строка. Тогда вот код:
Код:
PROGRAM PMatrix;
uses
Crt;
const
N = 5;
Var
Matrix: Array [1..N,1..N] of byte;
Indexes: set of byte;
counter: byte;
function CheckMatrix: boolean;
var
i, j: byte;
begin
CheckMatrix := false;
Indexes := [];
for i := 1 to N do
begin
counter := 0;
for j := 1 to N do
begin
if (Matrix[i,j] = 0) then
begin
inc(counter);
if (j in Indexes) then
exit;
Indexes := Indexes + [j];
end;
end;
if (counter <> 1) then
exit;
end;
CheckMatrix := true;
end;
procedure ChangeLines(index1, index2: byte);
var
tmp: byte;
i: byte;
begin
for i := 1 to N do
begin
tmp := Matrix[index1,i];
Matrix[index1,i] := Matrix[index2,i];
Matrix[index2,i] := tmp;
end;
end;
procedure SortMatrix;
var
i, j: byte;
tmp: boolean;
begin
for i := 1 to N do
begin
for j := 1 to N do
if (Matrix[i,j] = 0) then
begin
ChangeLines(i,j);
break;
end;
end;
end;
procedure ShowMatrix;
var
i, j: byte;
begin
for i := 1 to N do
begin
for j := 1 to N do
if (Matrix[i,j] < 10) then
write(' ', Matrix[i,j], ' ')
else
write(Matrix[i,j], ' ');
writeln
end;
end;
var
i, j: byte;
chose: char;
begin
clrscr;
Indexes := [];
for i := 1 to N do
for j := 1 to N do
begin
write('Matrix[',i,',',j,'] = ');
readln(Matrix[i,j]);
end;
writeln;
ShowMatrix;
writeln;
if CheckMatrix then
SortMatrix;
ShowMatrix;
readln;
end.
Последний раз редактировалось StealthMaster; 10.12.2009 в 20:17..
Причина: объединил 2 сообщения
|
|
|

10.12.2009, 20:38
|
|
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме: 638378
Репутация:
41
|
|
Ех, опоздал, но все же выложу и свой вариант.
Код:
const n=5;
type
matrix=array[1..n, 1..n] of integer;
procedure readmatrix (var mas:matrix);
var
i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
readln (mas[i,j]);
end;
function provmatrix (var mas:matrix):boolean;
var
i,j:integer;
k:integer;
begin
provmatrix:=false;
for i:=1 to n do
begin
for j:=1 to n do
begin
if mas [i,j] = 0 then
k:=k+1;
if k>1 then
exit;
end;
k:=0;
end;
provmatrix:=true;
end;
procedure sortmatrix (var mas:matrix);
var
i,j:integer;
index:integer;
mas2:matrix;
begin
for i:=1 to n do
for j:=1 to n do
begin
if mas[j,i]=0 then
begin
for index:=1 to n do
mas2[i,index]:=mas[j,index];
end;
end;
mas:=mas2;
end;
procedure writematrix (mas:matrix);
var
i,j:integer;
begin
writeln;
for i:=1 to n do
begin
for j:=1 to n do
write (mas[i,j], ' ');
writeln;
end;
end;
var
m:matrix;
begin
readmatrix (m);
if provmatrix (m) = true then
begin
sortmatrix (m);
writematrix (m);
end;
readln;
end.
Вроде у StealthMaster'а заморочек побольше, у меня попробще для пониманию новичку, хотя, может быть, я и не прав.
|
|
|

10.12.2009, 22:42
|
|
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме: 42989
Репутация:
0
|
|
Ребята большое спасибо!!!!
особенно:
Thenno
и
StealthMaster
|
|
|

10.12.2009, 22:51
|
|
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме: 1035284
Репутация:
52
|
|
как можно замочить зомби процесс если его не берет TerminateProcess с правами отладчика....
|
|
|

11.12.2009, 00:52
|
|
Познающий
Регистрация: 10.12.2009
Сообщений: 33
Провел на форуме: 19460
Репутация:
0
|
|
помогите плз....передо мной вот такое задание, а в Паскале - почти 0...(
"Обчислити суму квадратів елементів, значення яких більші, ніж 1."
рус
"Знайти суму квадратов элиментов, значение которых больше, чем 1."
|
|
|
|
 |
|
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|