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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2012, 17:51   #1
evander2711
Новичок
Джуниор
 
Регистрация: 04.12.2012
Сообщений: 2
По умолчанию delfi to c#

помгите перевести код(указанный ниже) написанный на delfi в код на c#, самостоятельный перевод вызвал трудности в ввиду незнаю с#

Код:
procedure TForm1.Button2Click(Sender: TObject);
var i,j,leng1,leng2 :integer;
spis1 : string;
spis2 : string;
begin
spis1 := '';  spis2 := '';
   try
    subject_numb:=strtoint(form1.Edit3.Text);//номер субъекта
    object_numb :=strtoint(form1.Edit4.Text);//номер объекта
   except
    //ошибка на случай пустых значений
    showmessage('Введите субъект и объект!');
    exit;
   end;
   pravo := Edit7.Text;//записали искомое значение права
   if (pravo = '') then showmessage('Укажите искомое право!');
   if (subject_numb = object_numb) then showmessage('Вы проверяете обращение к самому себе!');
   nc:=form1.StringGrid1.ColCount;//если есть субъект и объект - считываем значения
   nr:=form1.StringGrid1.RowCount;//числа столбцов и строк в матрице прав
   if (nc < 2)or (nr < 2) then showmessage('Матрица доступа слишком мала!');
   //производим проверку
   for i:=0 to nr-1 do
   begin
    for j:=0 to nc-1 do
    begin
     //если на диагонали таблицы есть значения - ошибка
     if (j=i) and (form1.StringGrid1.Cells[j,i]<>'') then
     begin
      showmessage('Субъект не может обращаться к самому себе!');
      exit;
     end;
    end;
   end;
   //проверка на наличие вершин, у которых есть искомое право к искомой вершине
   if (pos(pravo,form1.StringGrid1.Cells[object_numb - 1,subject_numb - 1])>0) then  showmessage('Субъект уже имеет данное право к объекту!');
   for j:=0 to nr-1 do
    begin
     if (j <> object_numb - 1) and (pos(pravo,form1.StringGrid1.Cells[object_numb - 1,j])>0)then
     begin
       spis1 := spis1 + inttostr(j+1);
     end;
    end;
    leng1 := Length(spis1);    
    if (spis1 = '') then
    begin
     showmessage('К данному объекту никто не может получить такого права.');
     exit;
    end;
   //обратная проверка
   for j:=0 to nr-1 do
    begin
     if //проверим есть ли от субъекта ребро take в любом направлении
        (pos('t',form1.StringGrid1.Cells[j,subject_numb - 1])>0) or
        //или ребро grant от любой другой вершины к данному субъекту
        (pos('g',form1.StringGrid1.Cells[subject_numb - 1,j])>0)  then
      begin
       spis2 := spis2 + inttostr(j+1);
     end;
    end;
    if (spis2 = '') then 
    begin
    showmessage('Данный субъект не сможет получить права ни у одного из объектов.');
    exit;
    end;
    leng2 := Length(spis2);
    //проверка на прямое соединение данных списков смежных списков вершин
    for i:=1 to leng2 do
     begin
       if (pos(spis2[i],spis1)>0)  then
       begin
         showmessage('Субъект '+ inttostr(subject_numb) +' может получить право к объекту '+ inttostr(object_numb) +'. Задействована вершина ' + spis2[i] + '.');
         exit;
       end;
     end;
     //если не было соединений - ищем для всех вершин, смежных субъекту ребра с правами t или g 
     //к другим вершинам. и проверяем те вершины на соединение с списком смежных объекту вершин
    for i:=1 to leng2 do
     begin
     for j:=0 to nr-1 do
       begin
       if //проверим есть ли от субъекта ребро take в любом направлении
        (pos('t',form1.StringGrid1.Cells[j,strtoint(spis2[i]) - 1])>0) or
        //или ребро grant от любой другой вершины к данному субъекту
        (pos('g',form1.StringGrid1.Cells[strtoint(spis2[i]) - 1,j])>0)  then
          begin
           if (pos(inttostr(j+1),spis1)>0)  then
              begin
                showmessage('Субъект '+ inttostr(subject_numb) +' может получить право к объекту '+ inttostr(object_numb) +'. Задействован путь: '
                 + inttostr(subject_numb)+ '-' + spis2[i] + '-'
                  + inttostr(j+1) + '-' + inttostr(object_numb) + '.'
                 );
                exit;
              end;
          end;
        end;         
     end;
     showmessage('Не было обнаружено путей получения права от субъекта к объекту.');      
end;


________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!

Модератор.

Последний раз редактировалось Serge_Bliznykov; 23.12.2012 в 00:06.
evander2711 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Задачи по C++ и Delfi. Lbstar Фриланс 4 04.02.2011 14:54
ПОДПРОГРАММЫ DELFI!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! EllRay Помощь студентам 1 25.12.2010 21:07
Задание в Delfi WedGE Помощь студентам 3 26.05.2010 15:26
Delfi RS219 Свободное общение 1 18.05.2010 12:32