Hallo,
vielleicht bin ich im falschen Film,
aber warum rechnest Du mit power.
Und h kann meines Erachtens nicht größer als m werden.
Mein Versuch:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
s : string;
i,d,x,m,laenge,h,ergebnis,c : integer;
pos : integer = 1;
begin
{Divisionsrestmethode bei Strings
s speichert den string, i,j zählervariabeln
power(basis, exponent) = b^exponent, benötigt uses math}
m := strtoint(edit2.text); //auslesen des Teilers aus einem Editfeld
s := edit1.Text; // auslesen des strings
laenge := length(s);
c:= 1;
h := ord(s[1]) mod m; // h = s[1] mod m
for i:= 2 to laenge-1 do
begin
//h := (ord(s[pos])*round(power(128,(laenge-c))) mod m) ;
h := (h * 128 + ord(s[i])) mod m; // h = (h * 128 + s[i]) mod m
end;
memo1.Text := intToHex(h,16);
end;
(nicht getestet)
Grüße
Klaus