PrIn sprechbares Zufallspasswort

Verweis:
Uses: SysUtils
Eingabe: Mindestlänge(integer),Erste_Groß(boolean)
Ausgabe: Passwort(String)
Funktion: Passwort-Vorschläge mit Längenangabe und Uppercase für den ersten Buchstaben.

Wer einmal eine Funktion braucht, die Ihm ein halbwegs aussprechbares Passwort per Zufall bereitstellt, der ist mit dieser Funktion Prima aufgehoben.

function Sprechbares_Passwort(Mindest_Laenge: integer;
Erste_gros: boolean): string;
const
//Am Anfang nur die
Mitlauteanf: array [1..30] of string =
('b', 'br', 'bl', 'd', 'dr', 'fl', 'fr', 'gl', 'gr', 'h', 'j',
'k', 'kl', 'kr', 'l', 'm',
'n', 'p', 'pr', 'pl', 'r',
's', 'sch', 'schl', 'schr',
'schn', 't', 'tr', 'w', 'z');
Mitlaute: array [1..43] of string =
('b', 'br', 'bl', 'd', 'dr', 'fl', 'fr', 'gl', 'gr', 'h',
'k', 'kl', 'kr', 'l', 'm',
'n', 'p', 'pr', 'pl', 'r',
's', 'sch', 'schl', 'schr',
'schn', 't', 'tr', 'w', 'z', 'bb', 'ch', 'll', 'mm', 'nt', 'nd',
'nn', 'ns', 'nz', 'pp', 'rr', 'rt', 'ss',
'tt');
Selbstlaute: array [1..10] of string =
('a', 'ai', 'au', 'e', 'ei', 'eu', 'i', 'ie', 'o', 'u');
var
Pass: string;
Mit, Mita, selb: string;
begin
Pass := '';
randomize;
repeat
//Weise die Zufalls-Wortfetzen zu.
mita := Mitlauteanf[Random(high(Mitlauteanf)) + 1];
mit := Mitlaute[Random(high(Mitlaute)) + 1];
selb := Selbstlaute[Random(high(Selbstlaute)) + 1];
//Nimm nur ausgewählte Selbstlaute
if pass = '' then
pass := Concat(Pass + mita + selb)
else
pass := Concat(Pass + mit + selb);
until Length(Pass) >= Mindest_Laenge;
//Erste Buchstabe groß
if Erste_Gros then
Result := AnsiUpperCase(Copy(Pass, 1, 1)) + AnsiLowercase(
Copy(Pass, 2, Length(Pass)))
else
Result := Pass;
end;

Vorbereitung: Erstellen sie eine IDE Anwendung und ziehen Sie einen TButton und ein TMemo auf die Form. Doppelklicken sie auf den Button und ersetzen Sie das Ereignis durch folgenden Quelltext:

procedure TForm1.Button1Click(Sender: TObject);
begin
memo1.Lines.add(Sprechbares_Passwort(8,True));
end;

Der Aufruf dieser Funktion mit einem Memofeld bei einem Button-Klick-Ereignis.