Delphi-Quellcode:
function Code: string;
const
s: string = 'abcdefghijklmnopqrstuvwxyz';
var
i,j: Integer;
begin
randomize;
result:='';
for i:=1 to 25 do
begin
j:=random(length(s)+1);
result:=result+s[j];
delete(s,j,1);
end;
result:=result+s;
end;
der code ist ineffizient und zudem falsch. S ist eine Konstante die mit delete(s, j, 1) modifiziert wird. Beim nächsten Aufruf dieser Funktion wurde also S vorher schon modifiziert.
Ineffizient ist er weil er mit result := result + s[J], 26 realozierungen des Strings benötigt.
Randomize sollte auf nur EINMAL im Program aufgerufen werden.
Delphi-Quellcode:
function Code: String;
const
Table: String = 'abcdefghijklmnopqrstuvwxyz';
var
I,J: Integer;
Temp: Char;
begin
Result := Table;
for I := 1 to Length(Table) do
begin
J := Random(Length(Table)) +1;
Temp := Result[J];
Result[J] := Result[I];
Result[I] := Temp;
end;
end;
Gruß Hagen