Модераторы: Snowy, MetalFan, bems, Poseidon

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> программа аутентификацию на delphi, создание программы аутентификации 
V
    Опции темы
ihtiandr
Дата 5.1.2011, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг  флуд не страшно smile 
Я просто хочу понять smile  как это на примере  smile 

Это сообщение отредактировал(а) ihtiandr - 6.1.2011, 00:00
PM MAIL   Вверх
kami
Дата 6.1.2011, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Не будем отвлекаться на флуд smile
Пример (на более детальную расшифровку и комментирование я не способен).
Если честно, то не понял код программы из листинга выше - почему она консольная и где запрос логина и пароля. Ну да ладно, это Ваши проблемы, за этим отсылаю в DRKB>"Разработка приложений">"Создание заставки при запуске". В качестве формы-заставки будет выступать форма логина.

Сию чудо-переменную, не мудрствуя лукаво, объявим прямо в модуле, запрашивающем логин и пароль:
Код

unit Unit1;
....
var
  Form1: TForm1;
  IsAdmin:boolean;
....
if (i=a) and (j=b) then 
  begin 
    showmessage('вы имеете допуск админа'); 
    IsAdmin:=True;
    close; 
  end
else
  begin
    showmessage('вас зарегистрируют как пользователя');
    IsAdmin:=False;
    writeln(l,i,j);
    closefile(l);
  end;
....

теперь, чтобы выполнить/не выполнить какое-либо действие, зависящее от того, кто работает в программе, делаем так:

unit MainCalculates;
uses
  .....
  Unit1, // переменная IsAdmin объявлена в этом модуле, для того, чтобы иметь доступ к ней из других, нужно сослаться на Unit1
.....

procedure Calculate;
begin
  if IsAdmin then
    begin
      // здесь делаем что-то, что доступно админу
    end
  else
    begin
      // здесь делаем то, что доступно обычному пользователю.
    end;
end;


Добавлено через 3 минуты и 15 секунд
Пы.Сы. Настоятельно рекомендую скачать DelForExp , установить и перед тем, как вставлять код на форум, нажимать в Delphi комбинацию клавиш Ctrl+D и потом Enter. Бо читать неудобно.
PM MAIL WWW   Вверх
ihtiandr
Дата 6.1.2011, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



kami огромное спасибо smile 



Это сообщение отредактировал(а) ihtiandr - 7.1.2011, 14:42
PM MAIL   Вверх
Данкинг
Дата 6.1.2011, 00:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



kami, а почему нельзя винградовской разметкой форматировать код?


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
kami
Дата 6.1.2011, 01:04 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1806
Регистрация: 25.8.2007
Где: Санкт-Петербург

Репутация: 22
Всего: 72



Данкинг, а как это?
я говорил, в основном, про табуляцию (уровни вложенности операторов) и своевременные переносы строк, бо код "сплошняком", в особенности сложный, так читать мягко говоря, затруднительно
PM MAIL WWW   Вверх
Данкинг
Дата 6.1.2011, 01:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(kami @  6.1.2011,  01:04 Найти цитируемый пост)
а как это?

А, понял, в том плагине и табуляция делается автоматически. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 7.1.2011, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Все работает вот я тут чуть изменил аутентификацию:

Код

var
  Form1: TForm1;
  IsAdmin:boolean;

implementation


{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,i,j:string;
input,l:textfile;

begin
i:=Edit1.text;
j:=Edit2.text;
assignfile(l,'qwe1.txt');
assignfile(input,'qwe.txt');
reset(input,'qwe.txt');
readln(input,a);
readln(input,b);
closefile(input);
append(l);
if (i=a) and (j=b) then
 begin
showmessage('вы имеете допуск админа');
IsAdmin:=true;

WinExec('Project2.exe',SW_RESTORE);
  end
 else
begin
showmessage('вас зарегистрируют как пользователя');
IsAdmin:=false;
WinExec('Project2.exe',SW_RESTORE);
writeln(l,i,j);
closefile(l);
end;
end;
end.



Вот сама  программа:

Код

unit mainCalc;
implementation
uses
unit1;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:real;
begin
  if IsAdmin then
    begin // здесь делаем что-то, что доступно админу

  a:=strtofloat(edit1.text);
  b:=strtofloat(edit2.text);
  c:=a+b;
  edit3.text:=FloattoStr(c);

    end
  else
    begin // здесь делаем то, что доступно обычному пользователю.
showmessage('вы не админ');

    end;
end;
end.



Я с начала запускаю аутентификацию а после проверки на логин и пароль запускается unit mainCalc; но даже если в аутентификации введены логин и пароль админа unit mainCalc; все равно выдает  showmessage('вы не админ');
Как это исправить?
В чем ошибка? 
PM MAIL   Вверх
Данкинг
Дата 7.1.2011, 15:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



ihtiandr, условие "if (i=a) and (j=b) then" выполняется? Для начала проверь это.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 7.1.2011, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет




Цитата

условие "if (i=a) and (j=b) then" выполняется? Для начала проверь это. 


Данкинг я проверял это, все выполняется правильно при логине и пароле админа 
 
Код

showmessage('вы имеете допуск админа');

а в противном случае
 
Код

showmessage('вас зарегистрируют как пользователя');

А все равно unit mainCalc; не работает как должен.
PM MAIL   Вверх
Данкинг
Дата 7.1.2011, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(ihtiandr @  7.1.2011,  14:46 Найти цитируемый пост)
WinExec('Project2.exe',SW_RESTORE);

До меня дошло: ты запускаешь отдельную программу? Тогда, стесняюсь спросить, откуда эта запущенная программа, узнает о значении переменной в какой-то другой? Тогда переменную IsAdmin убирай и передавай запускаемой программе параметр. Т. е. первая программа:
Код

var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,i,j:string;
input,l:textfile;
begin
i:=Edit1.text;
j:=Edit2.text;
assignfile(l,'qwe1.txt');
assignfile(input,'qwe.txt');
reset(input,'qwe.txt');
readln(input,a);
readln(input,b);
closefile(input);
append(l);
if (i=a) and (j=b) then
 begin
showmessage('вы имеете допуск админа');
IsAdmin:=true;
WinExec('Project2.exe admin',SW_RESTORE);
  end
 else
begin
showmessage('вас зарегистрируют как пользователя');
IsAdmin:=false;
WinExec('Project2.exe user',SW_RESTORE);
writeln(l,i,j);
closefile(l);
end;
end;
end.

Вторая:
Код

unit mainCalc;
implementation
uses
unit1;
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c:real;
begin
  if paramstr(1)='admin' then
    begin // здесь делаем что-то, что доступно админу
  a:=strtofloat(edit1.text);
  b:=strtofloat(edit2.text);
  c:=a+b;
  edit3.text:=FloattoStr(c);
    end
  else
    begin // здесь делаем то, что доступно обычному пользователю.
showmessage('вы не админ');
    end;
end;
end.




--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
ihtiandr
Дата 7.1.2011, 18:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 53
Регистрация: 16.12.2010

Репутация: нет
Всего: нет



Данкинг  вы правы smile 
все получилось спасибо. smile 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Для новичков"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Для новичков | Следующая тема »


 




[ Время генерации скрипта: 0.0515 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.