![]() |
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Oder so:
Delphi-Quellcode:
Ungetestet, darum auch nicht optimiert ;-)
function TForm1.Button1Click(Sender: TObject) : String;
var myString1, myString2 : String; rand, ndx : Integer; begin for ndx := 1 to 26 do begin myString1 := myString1+ Char(ndx+64); end; ndx := 0; While (Length (myString1) > 0) do begin rand := random(Length(myString1))+1; myString2 := myString2 + Copy (myString1,rand,1); Delete (myString1,rand,1) end; result := myString2; end; |
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Der Ansatz kommt mir bekannt vor... 8)
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Zitat:
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Delphi-Quellcode:
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.
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; 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:
Gruß Hagen
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; |
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Zitat:
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Irgendwie versteh ich nicht wieso bei dem source jedes zeichen nur einmal vorkommt. Also ich zweifel is ni an (habs auch zig mal probiert) aber wie wird das sichergestellt? kannste den source mal erklären - irgendwie begreif ich den zu so früher stunde ni
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Zitat:
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
eigentlich ist mir egal wer den source erklärt solange der source von Hagen (Negah) erklärt wird
|
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
Wenn ich den Code richtig verstehe macht Hagen es so das er einmal den sortierten String hat.
Dann durchläuft er diesen von 1 bis 26 und ersetzt jedes Zeichen durch ein Zufällig ausgewähltes des gleichen Strings. Grob gesagt: Er sorgt dafür das der Sring nicht mehr sortiert ist. |
Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
so weit bin ich auch mitgekommen. Aber wo/wie wird sichergestellt das, das zeichen nicht schon vorhanden ist...
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:26 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz