Tłumaczenie z C++ na delphi

0

moze ktoś sprawdzic czy te dwa zapisy są równo znaczne :
(nieznam za dobrze C++ dlatego zalerzy mi na tym zeby mnie ktoś skorygował)

c++:
[code]
int gg_login_hash(char *password, int seed)
{
unsigned int x, y, z;

	y = seed;

	for (x = 0; *password; password++) {
		x = (x & 0xffffff00) | *password;
		y ^= x;
		y += x;
		x 
0

moze ktoś sprawdzic czy te dwa zapisy są równo znaczne :
(nieznam za dobrze C++ dlatego zalerzy mi na tym zeby mnie ktoś skorygował)

Obawiam się, że nie.
password: string
to nie to samo co
char *password
Wydaje mi się, że powinno być raczej
password: PChar;

Poza tym oczywiście nikt nie czyta tego postu na samej górze, jak pisać na forum... ;-(

c++:
[code]
int gg_login_hash(char *password, int seed)
{
unsigned int x, y, z;

	y = seed;

	for (x = 0; *password; password++) {
		x = (x & 0xffffff00) | *password;
		y ^= x;
		y += x;
		x <<= 8;
		y ^= x;
		x <<= 8;
		y -= x;
		x <<= 8;
		y ^= x;

		z = y & 0x1f;
		y = (y << z) | (y >> (32 - z));
	}

	return y;
}

[/code]

i delphi :
[code]
function gg_login_hash(s:string;seed:integer):integer;
var x, y, z:Cardinal;
l:byte;
begin
y:= seed;
x:=0;
for l := 0 to length(s)-1 do
begin
x:=(x and 4294967030) or ord(s[l]);
y :=y xor x;
y :=y + x;
x :=x shl 8;
y :=y xor x;
x :=x shl 8;
y :=y - x;
x :=x shl 8;
y :=y xor x;
z := y and 31;
y := (y shl z) or (y shr (32 - z));
end;
gg_login_hash:=y;
end;
[/code]</quote>

0

Obawiam się, że nie.
password: string
to nie to samo co
char *password
Wydaje mi się, że powinno być raczej
password: PChar;

hmmm , to to wiem, Ale chodzi mi o samo kodowanie czy to bedzie pchar czy string , bedzie tak jakis ciag znaków ... tylko nie wiem czy te operacje w środku są dobre. A co w moim poście było nie tak ?

0

To w takim razie wszystko wydaje się być dobrze (za wyjątkiem kilku szczegółów)

function gg_login_hash(s:string;seed:integer):integer;
var
x, y, z:Cardinal;
l:byte;
begin
y:= seed;
x:=0;
for l := 1 to length(s) do <font color="darkblue">//Przy stringu trzeba zaczynać od 1</span>
begin
x := (x and $FFFFFF00) or ord(s[l]); <font color="darkblue">//Możesz spokojnie stosować liczby szesnastkowe. Mniej problemów z konwersją</span>
y :=y xor x;
y :=y + x;
x :=x shl 8;
y :=y xor x;
x :=x shl 8;
y :=y - x;
x :=x shl 8;
y :=y xor x;
z := y and $1F;
y := (y shl z) or (y shr (32 - z));
end;
gg_login_hash:=y;
end;

0

Wszysko działa jak najbardziej OK :d , a co do tyh hex`ów to właśnie sie zastanawiałem jak sie je zapisuje ... w każdym jezyku jest inaczej ... Ostatnio dużo walczyłem w Bascomie a tam to sie robi tak &hAB

0

Coś mi nazwy przypominają, tylko nie pamiętam co, chyba GG i passwordy..

0

Coś mi nazwy przypominają, tylko nie pamiętam co, chyba GG i passwordy..

tak , tak dobrze kombinujesz ....
pisalem sobie klijenta GG...
... i jakos napisalem, sztubacko to sztubacko ale działa. :-)

1 użytkowników online, w tym zalogowanych: 0, gości: 1