Delphi-PRAXiS
Seite 1 von 3  1 23      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mit einer kurzen Prozdur einen Schlüssel erzeugen (https://www.delphipraxis.net/20949-mit-einer-kurzen-prozdur-einen-schluessel-erzeugen.html)

kurtm1 25. Apr 2004 19:21


Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Hallo!
Es geht drum einen Schlüssel aus allen 26 Buchstaben des Alphabets zu erstellen, der aber keinen Buchstaben doppelt beinhaltet.

Gibt es da eine Funktion, oder eine kurze Prozedur?

Dies ist meine Lösung:

Code:
strSchluessel[1]:=chr(random(26)+65);
   for i:=2 to 26 do
   Begin
      j:=1;
      strBuchstabe:=chr(random(26)+65);
         repeat
           if strSchluessel[j]=strBuchstabe[1] then
           Begin
               strBuchstabe:=chr(random(26)+65);
               j:=0;
           end;
           j:=j+1;
         until j>i;
      strSchluessel[i]:=strBuchstabe[1];
   end;

gekmihesg 25. Apr 2004 19:34

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Delphi-Quellcode:
function createstr(count:integer); string;
var
 c: char;
begin
 result:='';
 if count > 26 then
  exit;
 while length(result) < count do
  begin
   c:=chr(random(26)+65);
   if pos(c,result) = 0 then
    result:=result + c;
  end;
end;

kurtm1 25. Apr 2004 19:40

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
danke, ist leider auch nicht viel kürzer. eine funktion scheint es ja nicht zu geben...

Nonsense 25. Apr 2004 19:41

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Näääädddd. Merke: Frage richtig lesen, dann posten. :mrgreen:

Dax 26. Apr 2004 12:25

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Delphi-Quellcode:
function Code: string;
var c: char;
begin
  randomize:
  while length(result) <= 26 do
  begin
    c := chr(random(26)+65);
    if pos(c, result) = 0 then result := result + c;
  end;
end;
Es dauert vielleciht ei wenig, bis ALLE 26 Buchstaben benutzt sind, aber dafür is sie schön kurz ;)

fiasko 26. Apr 2004 12:34

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
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;
Ist vielleicht ein µ schneller...

Dax 26. Apr 2004 12:37

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Hat aber einen Fehler:

Gibt nur 25 Buchstaben aus.

Ansonsten eigentlich auch ein interessanter Ansatz.

fiasko 26. Apr 2004 12:39

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Zitat:

Zitat von Dax
1.) Gibt NUR 25 Buchstaben aus.

Hast du die Zeile result:=result+s; überlesen?

Zitat:

Zitat von Dax
2.) Niemand garantiert mir, das jeder nur ein mal vorkammt, du knallst einfach alles ins ergebnis, ohne zu checken, ob so was schon da ist...

Das delete haut doch die benutzten Wörte raus. Der Vorteil ist du brauchst keine Vergleichsoperationen mehr und schiebst nurnoch im Speicher rum...

Dax 26. Apr 2004 12:41

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Zitat:

Zitat von fiasko
Hast du die Zeile result:=result+s; überlesen?

Ja. :oops:

Zitat:

Zitat von fiasko
Das delete haut doch die benutzten Wörte raus. Der Vorteil ist du brauchst keine Vergleichsoperationen mehr und schiebst nurnoch im Speicher rum...

Hab' ich nachträglich rauseditiert, kuck mal nach :mrgreen:

fiasko 26. Apr 2004 12:43

Re: Mit einer kurzen Prozdur einen Schlüssel erzeugen
 
Zitat:

Zitat von Dax
Hab' ich nachträglich rauseditiert, kuck mal nach :mrgreen:

:shock:


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:30 Uhr.
Seite 1 von 3  1 23      

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