Zitat von
A-M-X:
Hiho!!
Delphi-Quellcode:
function CDKey(Seed:String): String;
const Key1: Array[0..9] of Char = ('2','5','8','9','5','a','1','3','6','7');
Key2: Array[0..9] of Char = ('8','3','4','0','1','7','x','9','3','9');
var i: integer;
begin
result := Seed + '-';
// result = 1234-
for i:= 1 to length(Seed) do
result := result + Key1[Ord(Seed[i])-48];
// result = 1234-5895
result := result + '-';
// result = 1234-5895-
for i:= 1 to length(Seed) do
result := result + Key2[Ord(Seed[i])-48];
// result = 1234-5895-3401
end;
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
if CDKey(Copy(Edit1.Text,1,4)) = Edit1.Text then
Caption := 'Richtig' else Caption := 'falscher Key';
end;
for i:= 1 to length(Seed) do
result := result + Key2[Ord(Seed[i])-48];
Seed[i] wird als Char ausgelesen. Dann wird der
ASCII-Code des Char von 48 abgezogen. Da nur Zahlen verwendet werden kommt eine Zahl zwischen 0 und 9 heraus, Also die Zahl, die auch an der Stelle steht. Dann wird das Zeichen aus Key genommen, das an diser Stelle ist.
Wenn Seed[1] = 1 ist, ist Ord(Seed[i])-48 auch 1.
MfG
freak