Einzelnen Beitrag anzeigen

Benutzerbild von negaH
negaH

Registriert seit: 25. Jun 2003
Ort: Thüringen
2.950 Beiträge
 
#14

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen

  Alt 26. Apr 2004, 13:03
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
  Mit Zitat antworten Zitat