Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > MidletPascal

Ответ
 
Опции темы
Старый 10.08.2014, 15:18   #1
Данияр
AnyKey`щик
 
Регистрация: 10.08.2014
Сообщений: 1
Написано 0 полезных сообщений
(для 0 пользователей)
Помогите перевести с Delphi...

Всем хай !
Народ пожалуйста помогите перевести код с Delphi на MIDLetPascal...
Ни как не получается (((
unit GHash_152;

interface

uses
  SysUtils
, Classes;

const
  
field_1347 = 94736404;
  
field_1338 = '5itndg36hj';
  
field_1736 = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
  
field_1346 = 1036;
  
field_1348 = -1;
  
field_1345 = 8167260239830188032;
  
field_2020 : array [0..62] of integer = (28, 30, 28, 29, 28, 29, 26, 26, 28, 26, 26, 28, 27, 27, 29, 30, 27, 27, 13,
  
28, 28, 17, 26, 28, 26, 24, 33, 29, 28, 28, 28, 28, 27, 29, 27, 28, 29, 29, 29, 30, 29, 29, 28, 30, 28, 29, 28, 28,
  
29, 30, 18, 25, 26, 25, 26, 27, 28, 28, 26, 26, 28, 26, 26);

type
  TChars 
= array of char;
  
GHash152 = class
  private
    function 
Generate(Key : String) : String;
    function 
method_1171(var0 :TChars; var var1 :array of integer; var2 : integer = 0) : integer;
    function 
method_1961(var0, var1 : char; var2 : integer): boolean;
    
procedure method_688(var0 :integer; var1 :TChars; var2 :int64; var4 :array of integer; var5 : integer);
  public
    class function 
CreateHash(Key: String): String;
    class function 
CreateAdditinalHash(count : Word): String;
  
end;

implementation


class function GHash152.CreateAdditinalHash(count: Word): String;
const 
str = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
      
var1 = 62;
var
  
i : Word;
begin
  Randomize
;
  
result := '';
  for 
i := 1 to count do result := result + str[(Random(2147483647) mod var1)+1];
end;

class function 
GHash152.CreateHash(Key: String): String;
var
  
ghash : GHash152;
begin
  Result 
:= '';
  
ghash := GHash152.Create;
  try
    
Result := ghash.Generate(Key);
  finally
    
ghash.Free;
  
end;
end;

function 
GHash152.Generate(Key: String): String;
var
  
var2 : int64;
  
var14, var1, var5 : integer;
  
var11 : int64;
  
var8 : int64;
  
var15 : array of integer;
  
var4 : TChars;
  
i : integer;
begin
  var2 
:= 8167260239830188540;


  for 
var14 := 1 to length(key) do
    
Inc(var2, (ord(key[var14]) * field_1345));

  
var14 := length(key)-1;
  
var11 := 1;
  
var8  := var2;

  for 
var1 := var14 downto 0 do
  
begin
    var8  
:= var8 +  var11 * (Pos(field_1338[var1+1], field_1736)) + field_1347;
    
var11 := var11 * 63;
  
end;

  
Setlength(var15, length(field_1338));
  
Setlength(var4, length(field_1338));

  for 
i := 1 to length(field_1338) do
    
var4[i-1]:= field_1338[i];

  
var15[0] := Integer((var8 + var8 + field_1347) * var8);


  for 
i := 1 to length(var15) do
    
var15[i] := Integer(((var8 + int64(i) + Int64(var15[i - 1])) * var8));

  
var5 := method_1171(var4, var15, 1);
  
method_688(var14+1, var4, var8, var15, var5);

  
SetString(Result, PChar(@var4[0]), Length(var4));
end;


function 
GHash152.method_1171(var0: TChars; var var1: array of integer; var2: integer = 0): integer;
var
  
var3, var4, var5, var6, i : integer;
begin
  var4 
:= length(var1) shl 2;
  for 
var3 := 0 to var4-1 do
  
begin
    var5 
:= var3 mod length(var1);
    
var6 := abs(var3 * var1[var5] + var1[var5]) mod length(var1);
    if 
not method_1961(var0[var5], var0[var6], length(var1)) then
    begin
      Inc
(var1[(var5 + var6) shr 1]);   
      
Inc(var1[var5], ord(var0[var6])); 
      
Inc(var1[var6], ord(var0[var5])); 
      
Inc(var2);
    
end;
  
end;
  
result := var2;
end;

function 
GHash152.method_1961(var0, var1: char; var2: integer): boolean;
begin
  Result 
:= abs(ord(var0) - ord(var1)) <= var2 + field_2020[abs(var2 mod length(field_2020))];
end;

procedure GHash152.method_688(var0: integer; var1: TChars; var2: int64; var4: array of integer; var5: integer);
var
  
var7 : integer;
  
var6 : String;
  
c, i : integer;
  
f : char;
begin
  SetString
(var6, PChar(@var1[0]), Length(var1));
  
c := length(var6)-1;
  for 
var7 := 0 to c do
  
begin
    var4
[var7] := var4[var7] + (var5 or Ord(field_1736[Pos(var6[var7+1], field_1736)]));

    
var4[var7] := var4[var7] + var0 + var2;

    
Inc(var5, var4[var7]);

    
Inc(var4[var7], field_1347);

    
var1[var7] := field_1736[abs(var4[var7] mod length(field_1736))+1];
  
end;
end;

end. 
__________________
Модератор тоже человек как и мы , но он про это не знает !
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 03:23.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com