Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Общие вопросы > защита проги! глюки с переводом!


Автор: h2o 20.3.2006, 10:46
решил я разработать примитивную защиту!
Описалово:
edit1 - имя юзера
edit2 - его организация
Код

function SuperPuperZashita : String;
var UNi,Oi :integer; 
      Uz,Oz: Integer;
      i: integer;
begin

 edit1.text:='User';
 edit2.text:='Organisation';

 Uni:=lenght(edit1.text)
 For i:=1 to  Uni.Count do Uz:=Uz+Ord(edit1.text); 
 // а тут нужно с 0 или с 1 начинать счёт и заканчивать count или count-1

 Oi:=lenght(edit2.text)
 For i:=1 to  Oi.Count do Oz:=Oz+Ord(edit2.text); 

 result:= IntToHex((Uz),2)+'-'+IntToHex((Oz),2);

end;

procedure Button.Click;
begin
 edit3.text:=SuperPuperZashita ;
end;


может где я в написании и ошибся, кода под рукой нет, но смысл этот

Дак вот, глюк в том, что result всегда разный, точнее меняется его вторая часть после "-", тоесть значение IntToHex((Oz),2), причём после нескольких последовательных нажатий на кнопку, тоесть после нескольких выполнений процедуры, код поменявшись несколько раз стабилизируется и становится постоянным??? чё за лажа???

А если еще и по отдельности в edit3 вывести result:= IntToHex((Uz),2) или result:= IntToHex((Oz),2), то
числа там получаются совсем разные??? А должны быть одинаковыми...
Тоесть если в процедуре постаивить result:= IntToHex((Uz),2) , то в edit3 будет "0F542", к примеру, а вот если процедуре постаивить result:= IntToHex((Uz),2)+'-'+IntToHex((Oz),2);, то по идее в edit3 должно быть "0F542-3А834" к примеру (тоесть 1е число в двух случаях равны), а нифига! получаются разные!!! но я же с ними ничё не делал????

Кто хоть делал подобное??? помогите!!! smile

Автор: Guedda 20.3.2006, 11:12
Вот код. У меня ничего не изменяется... Все идет путем.:
Код

function TForm1.SuperPuperZashita : String;
var UNi,Oi :integer;
      Uz,Oz: Integer;    
      i: integer;    
begin
 edit1.text:='User';
 edit2.text:='Organisation';
 Uni:=length(edit1.text);
 For i:=1 to  Uni do Uz:=Uz+Ord(edit1.text[i]);
 // а тут нужно с 0 или с 1 начинать счёт и заканчивать count или count-1
 Oi:=length(edit2.text);
 For i:=1 to  Oi do Oz:=Oz+Ord(edit2.text[i]);
 result:= IntToHex((Uz),2)+'-'+IntToHex((Oz),2);
end;
procedure TForm1.Button1Click(Sender : TObject);
begin
 edit3.text:=SuperPuperZashita ;
end;

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)