Показать сообщение отдельно
  #34  
Старый 11.12.2009, 16:11
Asinkrit Asinkrit вне форума
Местный
 
Регистрация: 29.10.2009
Сообщения: 446
Репутация: 271
По умолчанию

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

Кстати, так как у тебя всего два пользователя, продавец и администратор, то лично я бы убрал Edit1, а вместо него поставил бы TComboBox, в котором прописал бы этих пользователей, пользователю не придется все время вводить Администратор или Продавец, при том, на текущий момент, если он напишет маленькими буквами продавец, то не сможе залогиниться, а для это я бы поставил проверку на регистр к примеру:
Код:
...
 If (AnsiUpperCase(Edit1.Text)='АДМИНИСТРАТОР') and (Edit2.Text=l1) then
...
А в случае с TComboBox, данной проверки вообще не нужно было бы:
Код:
    case ComboBox1.ItemIndex of
    0: if (Edit2.Text = l1) then begin end;
    1: if (Edit2.Text = l2) then begin end;
    end;
Поповоду кодирования пароля, создай две функции,
Код:
  function Code(const Str:String):String;
  function UnCode(const Str:String):String;
В коде их вызываешь,
Код:
    If (Edit1.Text='Администратор') and (Edit2.Text=UnCode(l1)) then 
      begin 
      end 
        else 
          If (Edit1.Text='Продавец') and (Edit2.Text=UnCode(l2)) then 
            begin 

            end;
Алгорит кодирования можешь взять любой, хоть сам придумай) К примеру, самый простой способ:
Код:
  function Code(const str:String):String;
  var
    b:byte;  
  begin
  result:=str;
  if Length(str)>0 then
    for b:=1 to Length(str) do
      Result[b]:=Chr(Ord(str[b])+(b mod 10));
  end;
и соответственно декодирование, тоже самое только со знаком минус)
Код:
  function UnCode(const str:String):String;
  var
    b:byte;  
  begin
  result:=str;
  if Length(str)>0 then
    for b:=1 to Length(str) do
      Result[b]:=Chr(Ord(str[b])-(b mod 10));
  end;
Ответить с цитированием