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.
__________________
Модератор тоже человек как и мы , но он про это не знает !
|