Zitat von
SirThornberry:
Aber das die eigentliche Zeit so gering ist das die Progressbar keinen Sinn macht hängt doch von der Datenmenge (Länge des Strings) ab und kann nicht pauschal beantwortet werden.
120 MByte brauchen auf meinem (2.8GHz) Rechner unter 1 Sekunde.
Alles unter naja sagen wir 5 Sekunden braucht nur eine Sanduhr.
Sollte die Datenmenge so groß werden, daß man mehr als 3 Sekunden braucht, dann kann man immer noch
die Funktion auf Zeigerarithmetik umbauen...
Delphi-Quellcode:
// 250 MB => ~ 1 Sekunde
function StringXorCrypt(const text, key:string):string;
var
i, j, keylen : Integer;
ptext, presult, pkey : PChar;
begin
SetLength(Result, length(text));
j := 1;
keylen := Length(key);
ptext := PChar(text);
presult := PChar(Result);
pkey := PChar(key);
for i := 1 to Length(text) do
begin
presult^ := chr(ord(ptext^) xor ord(pkey^));
inc(presult);
Inc(ptext);
Inc(pkey);
Inc(j);
if j > keylen then
begin
j := 1;
pkey := PChar(key);
end;
end;
end;