HOME    FORUMS    MEMBERS    RECENT POSTS    LOG IN  
Баннер 1   Баннер 2

ANTICHAT — форум по информационной безопасности, OSINT и технологиям

ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию. Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club, и теперь снова доступен на новом адресе — forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
Вернуться   Форум АНТИЧАТ > ПРОГРАММИРОВАНИЕ > С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #5151  
Старый 10.12.2009, 00:54
Pr0mo
Новичок
Регистрация: 26.11.2009
Сообщений: 20
Провел на форуме:
88440

Репутация: 60
По умолчанию

Цитата:
Сообщение от FindeR  
И так сотня процедур? Или я что-то недопонял?
Да и неизвестно заранее количество объектов.
Нет, конечно не сотня! Не для каждого же объекта писать отдельную процедуру или функцию. DynamicCheckBoxChange - это общая процедура, в которой можно описать необходимые действия, и затем присваивать ее определенным группам CheсkBox.
А что касается неопределенности количества объектов, то тут прийдется заводить глобальную переменную, например, CheckBoxCount. И ссылаться в будущем на нее.

Вообще говоря, такое динамическое создание объектов - это всегда рутинная, а иногда и бесполезная работа. Однако общий принцип таков.
 
Ответить с цитированием

  #5152  
Старый 10.12.2009, 01:29
FindeR
Участник форума
Регистрация: 15.11.2006
Сообщений: 259
Провел на форуме:
2589211

Репутация: 151
По умолчанию

Цитата:
Сообщение от Pr0mo  
Нет, конечно не сотня! Не для каждого же объекта писать отдельную процедуру или функцию. DynamicCheckBoxChange - это общая процедура, в которой можно описать необходимые действия, и затем присваивать ее определенным группам CheсkBox.
А что касается неопределенности количества объектов, то тут прийдется заводить глобальную переменную, например, CheckBoxCount. И ссылаться в будущем на нее.

Вообще говоря, такое динамическое создание объектов - это всегда рутинная, а иногда и бесполезная работа. Однако общий принцип таков.
А именно, как получить передать имя кнопки, которую нажали?
Нажата Btn[1], сменился статус у Chk[1] и т.д.
А не нажата любая Btn, а меняется статус у Chk[1]

Вроде, понятно сформулировал.
 
Ответить с цитированием

  #5153  
Старый 10.12.2009, 02:03
Pr0mo
Новичок
Регистрация: 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;
 
Ответить с цитированием

  #5154  
Старый 10.12.2009, 02:19
FindeR
Участник форума
Регистрация: 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;
Спасибо. Именно тот пример, что был нужен.
 
Ответить с цитированием

  #5155  
Старый 10.12.2009, 17:41
Thenno
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме:
638378

Репутация: 41
Отправить сообщение для Thenno с помощью ICQ
По умолчанию

Цитата:
Сообщение от NTFF  
в каждом столбце и каждой строке матрицы содержица строго по одному нулевому элементу. Перестановкой строк добиться расположение всех нулей по главной диагонали. В программе должна присутствовать проверка чтоб в строке был строго один ноль, в противном случае цикл не выполняться. матрица 5*5 пользователь сам ее вводит
А необходимо переставлять эелементы в строке, или сами строки?
 
Ответить с цитированием

  #5156  
Старый 10.12.2009, 20:15
StealthMaster
Познающий
Регистрация: 03.12.2008
Сообщений: 56
Провел на форуме:
140714

Репутация: 29
Отправить сообщение для StealthMaster с помощью ICQ
По умолчанию

Цитата:
Сообщение от 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 сообщения
 
Ответить с цитированием

  #5157  
Старый 10.12.2009, 20:38
Thenno
Участник форума
Регистрация: 03.07.2009
Сообщений: 151
Провел на форуме:
638378

Репутация: 41
Отправить сообщение для Thenno с помощью ICQ
По умолчанию

Ех, опоздал, но все же выложу и свой вариант.
Код:
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'а заморочек побольше, у меня попробще для пониманию новичку, хотя, может быть, я и не прав.
 
Ответить с цитированием

  #5158  
Старый 10.12.2009, 22:42
NTFF
Новичок
Регистрация: 09.12.2009
Сообщений: 23
Провел на форуме:
42989

Репутация: 0
По умолчанию

Ребята большое спасибо!!!!
особенно:
Thenno
и
StealthMaster
 
Ответить с цитированием

  #5159  
Старый 10.12.2009, 22:51
transserg
Участник форума
Регистрация: 02.07.2008
Сообщений: 132
Провел на форуме:
1035284

Репутация: 52
Отправить сообщение для transserg с помощью ICQ
По умолчанию

как можно замочить зомби процесс если его не берет TerminateProcess с правами отладчика....
 
Ответить с цитированием

  #5160  
Старый 11.12.2009, 00:52
TPAXTOP
Познающий
Регистрация: 10.12.2009
Сообщений: 33
Провел на форуме:
19460

Репутация: 0
По умолчанию

помогите плз....передо мной вот такое задание, а в Паскале - почти 0...(

"Обчислити суму квадратів елементів, значення яких більші, ніж 1."

рус

"Знайти суму квадратов элиментов, значение которых больше, чем 1."
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[Wi-Fi, BT] Задай вопрос - получи ответ! Alexsize Беспроводные технологии/Wi-Fi/Wardriving 2568 25.04.2026 12:58
[jQuery] - Задай вопрос, получи ответ Isis PHP 62 25.12.2009 03:25



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ