Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

помогите перевести с delfi на c#(глупый вопрос,но с с# почти не работал, решил обратится за помощью)

87K
22 декабря 2012 года
evander2711
1 / / 22.12.2012
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,spis1)>0) then
begin
showmessage('Субъект '+ inttostr(subject_numb) +' может получить право к объекту '+ inttostr(object_numb) +'. Задействована вершина ' + spis2 + '.');
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) - 1])>0) or
//или ребро grant от любой другой вершины к данному субъекту
(pos('g',form1.StringGrid1.Cells[strtoint(spis2) - 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 + '-'
+ inttostr(j+1) + '-' + inttostr(object_numb) + '.'
);
exit;
end;
end;
end;
end;
showmessage('Не было обнаружено путей получения права от субъекта к объекту.');
end;
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог