Zitat von
torud:
Hm, mit der neuen Version erhalte ich folgende Fehlermeldung:
Kein Argument für Format '%d'
jupp grad gemrkt ... hatte ID[4] ausversehn gelöscht
Zum Verbinden gibt's viele Möglichkeiten.
Einfach irgendwie Mathematisch verrechnen/kombinieren
hier z.B. ganz einfach per XOR:
Delphi-Quellcode:
Function GetCode(Name: String): String;
Var ID: TCPUID;
i: Integer;
Begin
If IsCPUID_Available Then Begin
ID := GetCPUID;
Result := Format('%d%d%d%d', [ID[1], (ID[2] shr 16) and $FF, ID[3], ID[4]]);
End Else Result := '45187921234890234790';
While Length(Name) < 20 do Name := Name + Name;
While Length(Result) < 20 do Result := Result + Result;
For i := 1 to 20 do Result[i] := Char(Ord(Result[i]) xor Ord(Name[i]));
SetLength(Result, 20);
End;
Möglich wären auch Hashverfahren und Ähnliches.
z.B.:
Delphi-Quellcode:
If IsCPUID_Available Then Begin
ID := GetCPUID;
Result := Format('%d%d%d%d', [ID[1], (ID[2] shr 16) and $FF, ID[3], ID[4]]);
End Else Result := '45187921234890234790';
MD5Init(Context);
MD5Update(Context, PChar(Result), Length(Result));
MD5Update(Context, PChar(Name), Length(Name));
MD5Final(Context);
Result := MD5ToString(Context);
(die MD5-Funktionen sind aus meiner eigenen Bibliothek und die Aufrufe müßten demnach eventuell an jene angepaßt werden, welche ihr verwendet)